Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
qtest/migration: Document live=true cases
Document every single live=true use cases on why it should be done in the
live manner.  Also document on the parameter so new precopy cases should
always use live=off unless with explicit reasonings.

Cc: Thomas Huth <thuth@redhat.com>
Cc: Juan Quintela <quintela@redhat.com>
Cc: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20230601172935.175726-1-peterx@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
  • Loading branch information
xzpeter authored and Juan Quintela committed Jun 2, 2023
1 parent 3c4fb17 commit b861383
Showing 1 changed file with 31 additions and 6 deletions.
37 changes: 31 additions & 6 deletions tests/qtest/migration-test.c
Expand Up @@ -580,7 +580,14 @@ typedef struct {
/* Optional: set number of migration passes to wait for, if live==true */
unsigned int iterations;

/* Optional: whether the guest CPUs should be running during migration */
/*
* Optional: whether the guest CPUs should be running during a precopy
* migration test. We used to always run with live but it took much
* longer so we reduced live tests to only the ones that have solid
* reason to be tested live-only. For each of the new test cases for
* precopy please provide justifications to use live explicitly (please
* refer to existing ones with live=true), or use live=off by default.
*/
bool live;

/* Postcopy specific fields */
Expand Down Expand Up @@ -1491,7 +1498,10 @@ static void test_precopy_unix_plain(void)
MigrateCommon args = {
.listen_uri = uri,
.connect_uri = uri,

/*
* The simplest use case of precopy, covering smoke tests of
* get-dirty-log dirty tracking.
*/
.live = true,
};

Expand All @@ -1508,7 +1518,10 @@ static void test_precopy_unix_dirty_ring(void)
},
.listen_uri = uri,
.connect_uri = uri,

/*
* Besides the precopy/unix basic test, cover dirty ring interface
* rather than get-dirty-log.
*/
.live = true,
};

Expand Down Expand Up @@ -1617,10 +1630,12 @@ static void test_precopy_unix_xbzrle(void)
MigrateCommon args = {
.connect_uri = uri,
.listen_uri = uri,

.start_hook = test_migrate_xbzrle_start,

.iterations = 2,
/*
* XBZRLE needs pages to be modified when doing the 2nd+ round
* iteration to have real data pushed to the stream.
*/
.live = true,
};

Expand All @@ -1639,6 +1654,11 @@ static void test_precopy_unix_compress(void)
* the previous iteration.
*/
.iterations = 2,
/*
* We make sure the compressor can always work well even if guest
* memory is changing. See commit 34ab9e9743 where we used to fix
* a bug when only trigger-able with guest memory changing.
*/
.live = true,
};

Expand All @@ -1657,6 +1677,7 @@ static void test_precopy_unix_compress_nowait(void)
* the previous iteration.
*/
.iterations = 2,
/* Same reason for the wait version of precopy compress test */
.live = true,
};

Expand Down Expand Up @@ -2066,7 +2087,11 @@ static void test_multifd_tcp_none(void)
MigrateCommon args = {
.listen_uri = "defer",
.start_hook = test_migrate_precopy_tcp_multifd_start,

/*
* Multifd is more complicated than most of the features, it
* directly takes guest page buffers when sending, make sure
* everything will work alright even if guest page is changing.
*/
.live = true,
};
test_precopy_common(&args);
Expand Down

0 comments on commit b861383

Please sign in to comment.