migration: add blocktime calculation into migration-test
This patch just requests blocktime calculation, and check it in case when UFFD_FEATURE_THREAD_ID feature is set on the host. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Alexey Perevalov <a.perevalov@samsung.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-Id: <1521742647-25550-6-git-send-email-a.perevalov@samsung.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
9ed01779e8
commit
346f3dab04
@ -26,6 +26,7 @@
|
|||||||
const unsigned start_address = 1024 * 1024;
|
const unsigned start_address = 1024 * 1024;
|
||||||
const unsigned end_address = 100 * 1024 * 1024;
|
const unsigned end_address = 100 * 1024 * 1024;
|
||||||
bool got_stop;
|
bool got_stop;
|
||||||
|
static bool uffd_feature_thread_id;
|
||||||
|
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
@ -55,6 +56,7 @@ static bool ufd_version_check(void)
|
|||||||
g_test_message("Skipping test: UFFDIO_API failed");
|
g_test_message("Skipping test: UFFDIO_API failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
uffd_feature_thread_id = api_struct.features & UFFD_FEATURE_THREAD_ID;
|
||||||
|
|
||||||
ioctl_mask = (__u64)1 << _UFFDIO_REGISTER |
|
ioctl_mask = (__u64)1 << _UFFDIO_REGISTER |
|
||||||
(__u64)1 << _UFFDIO_UNREGISTER;
|
(__u64)1 << _UFFDIO_UNREGISTER;
|
||||||
@ -223,6 +225,16 @@ static uint64_t get_migration_pass(QTestState *who)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void read_blocktime(QTestState *who)
|
||||||
|
{
|
||||||
|
QDict *rsp, *rsp_return;
|
||||||
|
|
||||||
|
rsp = wait_command(who, "{ 'execute': 'query-migrate' }");
|
||||||
|
rsp_return = qdict_get_qdict(rsp, "return");
|
||||||
|
g_assert(qdict_haskey(rsp_return, "postcopy-blocktime"));
|
||||||
|
QDECREF(rsp);
|
||||||
|
}
|
||||||
|
|
||||||
static void wait_for_migration_complete(QTestState *who)
|
static void wait_for_migration_complete(QTestState *who)
|
||||||
{
|
{
|
||||||
while (true) {
|
while (true) {
|
||||||
@ -533,6 +545,7 @@ static void test_migrate(void)
|
|||||||
|
|
||||||
migrate_set_capability(from, "postcopy-ram", "true");
|
migrate_set_capability(from, "postcopy-ram", "true");
|
||||||
migrate_set_capability(to, "postcopy-ram", "true");
|
migrate_set_capability(to, "postcopy-ram", "true");
|
||||||
|
migrate_set_capability(to, "postcopy-blocktime", "true");
|
||||||
|
|
||||||
/* We want to pick a speed slow enough that the test completes
|
/* We want to pick a speed slow enough that the test completes
|
||||||
* quickly, but that it doesn't complete precopy even on a slow
|
* quickly, but that it doesn't complete precopy even on a slow
|
||||||
@ -559,6 +572,9 @@ static void test_migrate(void)
|
|||||||
wait_for_serial("dest_serial");
|
wait_for_serial("dest_serial");
|
||||||
wait_for_migration_complete(from);
|
wait_for_migration_complete(from);
|
||||||
|
|
||||||
|
if (uffd_feature_thread_id) {
|
||||||
|
read_blocktime(to);
|
||||||
|
}
|
||||||
g_free(uri);
|
g_free(uri);
|
||||||
|
|
||||||
test_migrate_end(from, to, true);
|
test_migrate_end(from, to, true);
|
||||||
|
Loading…
Reference in New Issue
Block a user