On Tue, Jul 11, 2023 at 07:27:42PM -0300, Fabiano Rosas wrote: > Fabiano Rosas <faro...@suse.de> writes: > > > Add basic tests for file-based migration. > > > > Signed-off-by: Fabiano Rosas <faro...@suse.de> > > Reviewed-by: Peter Xu <pet...@redhat.com> > > --- > > tests/qtest/migration-test.c | 99 ++++++++++++++++++++++++++++++++++++ > > 1 file changed, 99 insertions(+) > > > > diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c > > index 2fdf6a115e..c052dbe1f1 100644 > > --- a/tests/qtest/migration-test.c > > +++ b/tests/qtest/migration-test.c > > @@ -52,6 +52,10 @@ static bool got_dst_resume; > > */ > > #define DIRTYLIMIT_TOLERANCE_RANGE 25 /* MB/s */ > > > > +#define QEMU_VM_FILE_MAGIC 0x5145564d > > +#define FILE_TEST_FILENAME "migfile" > > +#define FILE_TEST_OFFSET 0x1000 > > + > > #if defined(__linux__) > > #include <sys/syscall.h> > > #include <sys/vfs.h> > > @@ -762,6 +766,7 @@ static void test_migrate_end(QTestState *from, > > QTestState *to, bool test_dest) > > cleanup("migsocket"); > > cleanup("src_serial"); > > cleanup("dest_serial"); > > + cleanup(FILE_TEST_FILENAME); > > } > > > > #ifdef CONFIG_GNUTLS > > @@ -1459,11 +1464,28 @@ static void test_precopy_common(MigrateCommon *args) > > */ > > wait_for_migration_complete(from); > > > > + /* > > + * For file based migration the target must begin its > > + * migration after the source has finished. > > + */ > > + if (strstr(connect_uri, "file:")) { > > + migrate_incoming_qmp(to, connect_uri, "{}"); > > + } > > + > > This is now broken since we merged commit e02f56e3de ("tests/qtest: > massively speed up migration-test"). > > We cannot monitor the destination while the source is still running > because we need the source to have finished writing to the file before > we can start the destination. I'll have to think of another way of > testing a migration that is done with a live source but asynchronous > incoming migration. > > Any suggestions are welcome.
Don't use test_precopy_common() at all. This helper is written from the POV that we're actually doing a live migration. Migrate to/from file is not live migration. So open code the subset of pieces of test_precopy_common() that you need for file migration. There are a handful of other tests that take this approach since test_precopy_common wasn't suitable for them eg test_migrate_auto_converge() With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|