Signed-off-by: Juan Quintela <quintela@redhat.com>
---
tests/migration-test.c | 44 ++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 42 insertions(+), 2 deletions(-)
diff --git a/tests/migration-test.c b/tests/migration-test.c
index 51f49c74e9..3f3f056be6 100644
--- a/tests/migration-test.c
+++ b/tests/migration-test.c
@@ -539,7 +539,7 @@ static void test_migrate_end(QTestState *from, QTestState *to)
cleanup("dest_serial");
}
-static void test_migrate(void)
+static void test_postcopy(void)
{
char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
QTestState *from, *to;
@@ -582,6 +582,45 @@ static void test_migrate(void)
test_migrate_end(from, to);
}
+static void test_precopy_unix(void)
+{
+ char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
+ QTestState *from, *to;
+
+ test_migrate_start(&from, &to, uri);
+
+ /* We want to pick a speed slow enough that the test completes
+ * quickly, but that it doesn't complete precopy even on a slow
+ * machine, so also set the downtime.
+ */
+ /* 1 ms */
+ migrate_set_parameter(from, "downtime-limit", "1");
+ /* 1GB/s slow*/
+ migrate_set_parameter(from, "max-bandwidth", "1000000000");
+
+ /* Wait for the first serial output from the source */
+ wait_for_serial("src_serial");
+
+ migrate(from, uri);
+
+ wait_for_migration_pass(from);
+
+ /* 300 ms should converge */
+ migrate_set_parameter(from, "downtime-limit", "300");
+
+ if (!got_stop) {
+ qtest_qmp_eventwait(from, "STOP");
+ }
+
+ qtest_qmp_eventwait(to, "RESUME");
+
+ wait_for_serial("dest_serial");
+ wait_for_migration_complete(from);
+
+ test_migrate_end(from, to);
+ g_free(uri);
+}
+
int main(int argc, char **argv)
{
char template[] = "/tmp/migration-test-XXXXXX";
@@ -601,7 +640,8 @@ int main(int argc, char **argv)
module_call_init(MODULE_INIT_QOM);
- qtest_add_func("/migration/postcopy/unix", test_migrate);
+ qtest_add_func("/migration/precopy/unix", test_precopy_unix);
+ qtest_add_func("/migration/postcopy/unix", test_postcopy);
ret = g_test_run();
--
2.14.3
* Juan Quintela (quintela@redhat.com) wrote:
> Signed-off-by: Juan Quintela <quintela@redhat.com>
OK, although you seem to have chosen a bandwidth 10x what I use
in the postcopy test but for the same reason.
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
> tests/migration-test.c | 44 ++++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 42 insertions(+), 2 deletions(-)
>
> diff --git a/tests/migration-test.c b/tests/migration-test.c
> index 51f49c74e9..3f3f056be6 100644
> --- a/tests/migration-test.c
> +++ b/tests/migration-test.c
> @@ -539,7 +539,7 @@ static void test_migrate_end(QTestState *from, QTestState *to)
> cleanup("dest_serial");
> }
>
> -static void test_migrate(void)
> +static void test_postcopy(void)
> {
> char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
> QTestState *from, *to;
> @@ -582,6 +582,45 @@ static void test_migrate(void)
> test_migrate_end(from, to);
> }
>
> +static void test_precopy_unix(void)
> +{
> + char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
> + QTestState *from, *to;
> +
> + test_migrate_start(&from, &to, uri);
> +
> + /* We want to pick a speed slow enough that the test completes
> + * quickly, but that it doesn't complete precopy even on a slow
> + * machine, so also set the downtime.
> + */
> + /* 1 ms */
> + migrate_set_parameter(from, "downtime-limit", "1");
> + /* 1GB/s slow*/
> + migrate_set_parameter(from, "max-bandwidth", "1000000000");
> +
> + /* Wait for the first serial output from the source */
> + wait_for_serial("src_serial");
> +
> + migrate(from, uri);
> +
> + wait_for_migration_pass(from);
> +
> + /* 300 ms should converge */
> + migrate_set_parameter(from, "downtime-limit", "300");
> +
> + if (!got_stop) {
> + qtest_qmp_eventwait(from, "STOP");
> + }
> +
> + qtest_qmp_eventwait(to, "RESUME");
> +
> + wait_for_serial("dest_serial");
> + wait_for_migration_complete(from);
> +
> + test_migrate_end(from, to);
> + g_free(uri);
> +}
> +
> int main(int argc, char **argv)
> {
> char template[] = "/tmp/migration-test-XXXXXX";
> @@ -601,7 +640,8 @@ int main(int argc, char **argv)
>
> module_call_init(MODULE_INIT_QOM);
>
> - qtest_add_func("/migration/postcopy/unix", test_migrate);
> + qtest_add_func("/migration/precopy/unix", test_precopy_unix);
> + qtest_add_func("/migration/postcopy/unix", test_postcopy);
>
> ret = g_test_run();
>
> --
> 2.14.3
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
"Dr. David Alan Gilbert" <dgilbert@redhat.com> wrote:
> * Juan Quintela (quintela@redhat.com) wrote:
>> Signed-off-by: Juan Quintela <quintela@redhat.com>
>
> OK, although you seem to have chosen a bandwidth 10x what I use
> in the postcopy test but for the same reason.
I tried to make it as fast as possible while making sure that we wait
enough time. In my home machine each test takes around 2-3 seconds,
and I want to add tests, so better that they are fast.
Later, Juan.
> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Thanks, Juan.
>
>> ---
>> tests/migration-test.c | 44 ++++++++++++++++++++++++++++++++++++++++++--
>> 1 file changed, 42 insertions(+), 2 deletions(-)
>>
>> diff --git a/tests/migration-test.c b/tests/migration-test.c
>> index 51f49c74e9..3f3f056be6 100644
>> --- a/tests/migration-test.c
>> +++ b/tests/migration-test.c
>> @@ -539,7 +539,7 @@ static void test_migrate_end(QTestState *from, QTestState *to)
>> cleanup("dest_serial");
>> }
>>
>> -static void test_migrate(void)
>> +static void test_postcopy(void)
>> {
>> char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
>> QTestState *from, *to;
>> @@ -582,6 +582,45 @@ static void test_migrate(void)
>> test_migrate_end(from, to);
>> }
>>
>> +static void test_precopy_unix(void)
>> +{
>> + char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
>> + QTestState *from, *to;
>> +
>> + test_migrate_start(&from, &to, uri);
>> +
>> + /* We want to pick a speed slow enough that the test completes
>> + * quickly, but that it doesn't complete precopy even on a slow
>> + * machine, so also set the downtime.
>> + */
>> + /* 1 ms */
>> + migrate_set_parameter(from, "downtime-limit", "1");
>> + /* 1GB/s slow*/
>> + migrate_set_parameter(from, "max-bandwidth", "1000000000");
>> +
>> + /* Wait for the first serial output from the source */
>> + wait_for_serial("src_serial");
>> +
>> + migrate(from, uri);
>> +
>> + wait_for_migration_pass(from);
>> +
>> + /* 300 ms should converge */
>> + migrate_set_parameter(from, "downtime-limit", "300");
>> +
>> + if (!got_stop) {
>> + qtest_qmp_eventwait(from, "STOP");
>> + }
>> +
>> + qtest_qmp_eventwait(to, "RESUME");
>> +
>> + wait_for_serial("dest_serial");
>> + wait_for_migration_complete(from);
>> +
>> + test_migrate_end(from, to);
>> + g_free(uri);
>> +}
>> +
>> int main(int argc, char **argv)
>> {
>> char template[] = "/tmp/migration-test-XXXXXX";
>> @@ -601,7 +640,8 @@ int main(int argc, char **argv)
>>
>> module_call_init(MODULE_INIT_QOM);
>>
>> - qtest_add_func("/migration/postcopy/unix", test_migrate);
>> + qtest_add_func("/migration/precopy/unix", test_precopy_unix);
>> + qtest_add_func("/migration/postcopy/unix", test_postcopy);
>>
>> ret = g_test_run();
>>
>> --
>> 2.14.3
>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
© 2016 - 2026 Red Hat, Inc.