Message ID | 20240326193843.8444-1-het.gala@nutanix.com |
---|---|
State | New |
Headers | show |
Series | tests/qtest: Standardize qtest function caller strings. | expand |
Hi Maintainers, this is my first attempt trying to standardise the grammar around migration qtests. I am not sure at multiple places on whether a particular string is placed at the right place with the right grammar. Please comment on the patch, if anything you feel can be improvised in the existing design. Suggestions are most welcomed :) Thank you Fabiano for initiating the idea on having a strict convention to call migration qtests. Hope that this would help further down the lane for anyone to call qtests in particular manner. (For now, have not focused on the character width limit, will comply with that once, we are on a consensus with the design) On 27/03/24 1:08 am, Het Gala wrote: > For <test-type> --> migrate > /<test-type>/<migration-mode>/<method>/<transport>/<invocation>/ > <compression>/<encryption>/O:<others>/... > > For <test-type> --> validate > /<test-type>/<validate-variable>/O:<transport>/O:<invocation>/ > <validate-test-result>/O:<test-reason>/O:<others>/... > > test-type :: migrate | validate > migration-mode > a. migrate --> :: precopy | postcopy | multifd > b. validate --> :: (what to validate) > methods :: preempt | recovery | reboot | suspend | simple > transport :: tcp | fd | unix | file > invocation :: uri | channels | both > CompressionType :: zlib | zstd | none > encryptionType :: tls | plain > validate-test-result :: success | failure > others :: other comments/capability that needs to be > addressed. Can be multiple > > (more than one applicable, separated by using '-' in between) > O: optional > > Signed-off-by: Het Gala <het.gala@nutanix.com> > Suggested-by: Fabiano Rosas <farosas@suse.de> > --- > tests/qtest/migration-test.c | 143 ++++++++++++++++++----------------- > 1 file changed, 72 insertions(+), 71 deletions(-) > > diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c > index bd9f4b9dbb..bf4d000b76 100644 > --- a/tests/qtest/migration-test.c > +++ b/tests/qtest/migration-test.c > @@ -3620,62 +3620,63 @@ int main(int argc, char **argv) Regards, Het Gala
Het Gala <het.gala@nutanix.com> writes: Some comments, mostly just thinking out loud... > For <test-type> --> migrate > /<test-type>/<migration-mode>/<method>/<transport>/<invocation>/ > <compression>/<encryption>/O:<others>/... > > For <test-type> --> validate > /<test-type>/<validate-variable>/O:<transport>/O:<invocation>/ > <validate-test-result>/O:<test-reason>/O:<others>/... Do we need an optional 'capability' element? I'm not sure how practical is to leave that as 'others', because that puts it at the end of the string. We'd want the element that's more important/with more variants to be towards the start of the string so we can run all tests of the same kind with the -r option. > > test-type :: migrate | validate We could alternatively drop migration|migrate|validate. They are kind of superfluous. > migration-mode > a. migrate --> :: precopy | postcopy | multifd > b. validate --> :: (what to validate) > methods :: preempt | recovery | reboot | suspend | simple > transport :: tcp | fd | unix | file > invocation :: uri | channels | both > CompressionType :: zlib | zstd | none s/none/nocomp/ ? We're already familiar with that. > encryptionType :: tls | plain s/plain/notls/ ? Or maybe we simply omit the noop options. It would make the string way shorter in most cases. > validate-test-result :: success | failure > others :: other comments/capability that needs to be > addressed. Can be multiple > > (more than one applicable, separated by using '-' in between) > O: optional > > Signed-off-by: Het Gala <het.gala@nutanix.com> > Suggested-by: Fabiano Rosas <farosas@suse.de> > --- > tests/qtest/migration-test.c | 143 ++++++++++++++++++----------------- > 1 file changed, 72 insertions(+), 71 deletions(-) > > diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c > index bd9f4b9dbb..bf4d000b76 100644 > --- a/tests/qtest/migration-test.c > +++ b/tests/qtest/migration-test.c > @@ -3620,62 +3620,63 @@ int main(int argc, char **argv) > module_call_init(MODULE_INIT_QOM); > > if (is_x86) { > - migration_test_add("/migration/precopy/unix/suspend/live", > + migration_test_add("/migrate/precopy/suspend/unix/uri/none/plain/live", > test_precopy_unix_suspend_live); > - migration_test_add("/migration/precopy/unix/suspend/notlive", > + migration_test_add("/migrate/precopy/suspend/unix/uri/none/plain/notlive", > test_precopy_unix_suspend_notlive); > } > > if (has_uffd) { > - migration_test_add("/migration/postcopy/plain", test_postcopy); > - migration_test_add("/migration/postcopy/recovery/plain", > - test_postcopy_recovery); > - migration_test_add("/migration/postcopy/preempt/plain", > + migration_test_add("/migrate/postcopy/simple/tcp/uri/none/plain", > + test_postcopy); > + migration_test_add("/migrate/postcopy/recovery/tcp/uri/none/plain", > + test_postcopy_recovery); > + migration_test_add("/migrate/postcopy/preempt/tcp/uri/none/plain", > test_postcopy_preempt); > - migration_test_add("/migration/postcopy/preempt/recovery/plain", > + migration_test_add("/migrate/postcopy/preempt-recovery/tcp/uri/none/plain", > test_postcopy_preempt_recovery); > if (getenv("QEMU_TEST_FLAKY_TESTS")) { > - migration_test_add("/migration/postcopy/compress/plain", > + migration_test_add("/migrate/postcopy/simple/tcp/uri/none/plain/compress", > test_postcopy_compress); > - migration_test_add("/migration/postcopy/recovery/compress/plain", > + migration_test_add("/migrate/postcopy/recovery/tcp/uri/none/plain/compress", > test_postcopy_recovery_compress); > } > #ifndef _WIN32 > - migration_test_add("/migration/postcopy/recovery/double-failures", > + migration_test_add("/migrate/postcopy/recovery/tcp/uri/none/none/plain/double-failures", > test_postcopy_recovery_double_fail); > #endif /* _WIN32 */ > if (is_x86) { > - migration_test_add("/migration/postcopy/suspend", > + migration_test_add("/migrate/postcopy/suspend/tcp/uri/none/plain", > test_postcopy_suspend); > } > } > > - migration_test_add("/migration/bad_dest", test_baddest); > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/plain/bad_dest", test_baddest); > #ifndef _WIN32 > if (!g_str_equal(arch, "s390x")) { > - migration_test_add("/migration/analyze-script", test_analyze_script); > + migration_test_add("/migrate/precopy/simple/file/uri/none/plain/analyze-script", test_analyze_script); > } > #endif > - migration_test_add("/migration/precopy/unix/plain", > + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/live", > test_precopy_unix_plain); > - migration_test_add("/migration/precopy/unix/xbzrle", > + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/xbzrle-live", > test_precopy_unix_xbzrle); > /* > * Compression fails from time to time. > * Put test here but don't enable it until everything is fixed. > */ > if (getenv("QEMU_TEST_FLAKY_TESTS")) { > - migration_test_add("/migration/precopy/unix/compress/wait", > + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/compress-wait", > test_precopy_unix_compress); > - migration_test_add("/migration/precopy/unix/compress/nowait", > + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/compress-nowait", > test_precopy_unix_compress_nowait); > } > > - migration_test_add("/migration/precopy/file", > + migration_test_add("/migrate/precopy/simple/file/uri/none/plain", > test_precopy_file); > - migration_test_add("/migration/precopy/file/offset", > + migration_test_add("/migrate/precopy/simple/file/uri/none/plain/offset", > test_precopy_file_offset); > - migration_test_add("/migration/precopy/file/offset/bad", > + migration_test_add("/migrate/precopy/simple/file/uri/none/plain/bad-offset", > test_precopy_file_offset_bad); > > /* > @@ -3683,25 +3684,25 @@ int main(int argc, char **argv) > * Don't run this test until we find a workaround. > */ > if (getenv("QEMU_TEST_FLAKY_TESTS")) { > - migration_test_add("/migration/mode/reboot", test_mode_reboot); > + migration_test_add("/migrate/precopy/reboot/file/uri/none/plain", test_mode_reboot); > } > > - migration_test_add("/migration/precopy/file/mapped-ram", > + migration_test_add("/migrate/precopy/simple/file/uri/none/plain/mapped-ram", > test_precopy_file_mapped_ram); > - migration_test_add("/migration/precopy/file/mapped-ram/live", > + migration_test_add("/migrate/precopy/simple/file/uri/none/plain/mapped-ram-live", > test_precopy_file_mapped_ram_live); > > - migration_test_add("/migration/multifd/file/mapped-ram", > + migration_test_add("/migrate/multifd/simple/file/uri/none/plain/mapped-ram", > test_multifd_file_mapped_ram); > - migration_test_add("/migration/multifd/file/mapped-ram/live", > + migration_test_add("/migrate/multifd/simple/file/uri/none/plain/mapped-ram-live", > test_multifd_file_mapped_ram_live); > #ifndef _WIN32 > - migration_test_add("/migration/multifd/fd/mapped-ram", > + migration_test_add("/migrate/multifd/simple/fd/uri/none/plain/mapped-ram", > test_multifd_fd_mapped_ram); > #endif > > #ifdef CONFIG_GNUTLS > - migration_test_add("/migration/precopy/unix/tls/psk", > + migration_test_add("/migrate/precopy/simple/unix/uri/none/tls/psk", > test_precopy_unix_tls_psk); > > if (has_uffd) { > @@ -3710,122 +3711,122 @@ int main(int argc, char **argv) > * channels are tested under precopy. Here what we want to test is the > * general postcopy path that has TLS channel enabled. > */ > - migration_test_add("/migration/postcopy/tls/psk", > + migration_test_add("/migrate/postcopy/simple/tcp/uri/none/tls/psk", > test_postcopy_tls_psk); > - migration_test_add("/migration/postcopy/recovery/tls/psk", > + migration_test_add("/migrate/postcopy/recovery/tcp/uri/none/tls/psk", > test_postcopy_recovery_tls_psk); > - migration_test_add("/migration/postcopy/preempt/tls/psk", > + migration_test_add("/migrate/postcopy/preempt/tcp/uri/none/tls/psk", > test_postcopy_preempt_tls_psk); > - migration_test_add("/migration/postcopy/preempt/recovery/tls/psk", > + migration_test_add("/migrate/postcopy/preempt-recovery/tcp/uri/none/tls/psk", > test_postcopy_preempt_all); > } > #ifdef CONFIG_TASN1 > - migration_test_add("/migration/precopy/unix/tls/x509/default-host", > + migration_test_add("/migrate/precopy/simple/unix/uri/none/tls/x509/default-host", > test_precopy_unix_tls_x509_default_host); > - migration_test_add("/migration/precopy/unix/tls/x509/override-host", > + migration_test_add("/migrate/precopy/simple/unix/uri/none/tls/x509/override-host", > test_precopy_unix_tls_x509_override_host); > #endif /* CONFIG_TASN1 */ > #endif /* CONFIG_GNUTLS */ > > - migration_test_add("/migration/precopy/tcp/plain", test_precopy_tcp_plain); > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/plain", test_precopy_tcp_plain); > > - migration_test_add("/migration/precopy/tcp/plain/switchover-ack", > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/plain/switchover-ack", > test_precopy_tcp_switchover_ack); > > #ifdef CONFIG_GNUTLS > - migration_test_add("/migration/precopy/tcp/tls/psk/match", > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/psk/match", > test_precopy_tcp_tls_psk_match); > - migration_test_add("/migration/precopy/tcp/tls/psk/mismatch", > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/psk/mismatch", > test_precopy_tcp_tls_psk_mismatch); > #ifdef CONFIG_TASN1 > - migration_test_add("/migration/precopy/tcp/tls/x509/default-host", > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/default-host", > test_precopy_tcp_tls_x509_default_host); > - migration_test_add("/migration/precopy/tcp/tls/x509/override-host", > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/override-host", > test_precopy_tcp_tls_x509_override_host); > - migration_test_add("/migration/precopy/tcp/tls/x509/mismatch-host", > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/mismatch-host", > test_precopy_tcp_tls_x509_mismatch_host); > - migration_test_add("/migration/precopy/tcp/tls/x509/friendly-client", > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/friendly-client", > test_precopy_tcp_tls_x509_friendly_client); > - migration_test_add("/migration/precopy/tcp/tls/x509/hostile-client", > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/hostile-client", > test_precopy_tcp_tls_x509_hostile_client); > - migration_test_add("/migration/precopy/tcp/tls/x509/allow-anon-client", > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/allow-anon-client", > test_precopy_tcp_tls_x509_allow_anon_client); > - migration_test_add("/migration/precopy/tcp/tls/x509/reject-anon-client", > + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/reject-anon-client", > test_precopy_tcp_tls_x509_reject_anon_client); > #endif /* CONFIG_TASN1 */ > #endif /* CONFIG_GNUTLS */ > > /* migration_test_add("/migration/ignore_shared", test_ignore_shared); */ > #ifndef _WIN32 > - migration_test_add("/migration/precopy/fd/tcp", > + migration_test_add("/migrate/precopy/simple/fd-tcp/uri/none/plain", > test_migrate_precopy_fd_socket); > - migration_test_add("/migration/precopy/fd/file", > + migration_test_add("/migrate/precopy/simple/fd-file/uri/none/plain", > test_migrate_precopy_fd_file); > - migration_test_add("/migration/precopy/fd/file/mapped-ram", > + migration_test_add("/migrate/precopy/simple/fd-tcp/uri/none/plain/mapped-ram", > test_migrate_precopy_fd_file_mapped_ram); > #endif > - migration_test_add("/migration/validate_uuid", test_validate_uuid); > - migration_test_add("/migration/validate_uuid_error", > + migration_test_add("/validate/uuid/unix/uri/success", test_validate_uuid); > + migration_test_add("/validate/uuid/unix/uri/failure/uuid-error", > test_validate_uuid_error); > - migration_test_add("/migration/validate_uuid_src_not_set", > + migration_test_add("/validate/uuid/unix/uri/failure/src_not_set", > test_validate_uuid_src_not_set); > - migration_test_add("/migration/validate_uuid_dst_not_set", > + migration_test_add("/validate/uuid/unix/uri/failure/dst_not_set", > test_validate_uuid_dst_not_set); > - migration_test_add("/migration/validate_uri/channels/both_set", > + migration_test_add("/validate/connect_channels/tcp/both/failure/both_set", > test_validate_uri_channels_both_set); > - migration_test_add("/migration/validate_uri/channels/none_set", > + migration_test_add("/validate/connect_channels/tcp/both/failure/none_set", > test_validate_uri_channels_none_set); > /* > * See explanation why this test is slow on function definition > */ > if (g_test_slow()) { > - migration_test_add("/migration/auto_converge", > + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/auto_converge", > test_migrate_auto_converge); > if (g_str_equal(arch, "x86_64") && > has_kvm && kvm_dirty_ring_supported()) { > - migration_test_add("/migration/dirty_limit", > + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/dirty_limit", > test_migrate_dirty_limit); > } > } > - migration_test_add("/migration/multifd/tcp/uri/plain/none", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/plain", > test_multifd_tcp_uri_none); > - migration_test_add("/migration/multifd/tcp/channels/plain/none", > + migration_test_add("/migrate/multifd/simple/tcp/channels/none/plain", > test_multifd_tcp_channels_none); > - migration_test_add("/migration/multifd/tcp/plain/zero-page/legacy", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/plain/zero-page/legacy", > test_multifd_tcp_zero_page_legacy); > - migration_test_add("/migration/multifd/tcp/plain/zero-page/none", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/plain/zero-page/none", > test_multifd_tcp_no_zero_page); > - migration_test_add("/migration/multifd/tcp/plain/cancel", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/plain/cancel", > test_multifd_tcp_cancel); > - migration_test_add("/migration/multifd/tcp/plain/zlib", > + migration_test_add("/migrate/multifd/simple/tcp/uri/zlib/plain", > test_multifd_tcp_zlib); > #ifdef CONFIG_ZSTD > - migration_test_add("/migration/multifd/tcp/plain/zstd", > + migration_test_add("/migrate/multifd/simple/tcp/uri/zstd/plain", > test_multifd_tcp_zstd); > #endif > #ifdef CONFIG_GNUTLS > - migration_test_add("/migration/multifd/tcp/tls/psk/match", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/psk/match", > test_multifd_tcp_tls_psk_match); > - migration_test_add("/migration/multifd/tcp/tls/psk/mismatch", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/psk/mismatch", > test_multifd_tcp_tls_psk_mismatch); > #ifdef CONFIG_TASN1 > - migration_test_add("/migration/multifd/tcp/tls/x509/default-host", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/x509/default-host", > test_multifd_tcp_tls_x509_default_host); > - migration_test_add("/migration/multifd/tcp/tls/x509/override-host", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/x509/override-host", > test_multifd_tcp_tls_x509_override_host); > - migration_test_add("/migration/multifd/tcp/tls/x509/mismatch-host", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/x509/mismatch-host", > test_multifd_tcp_tls_x509_mismatch_host); > - migration_test_add("/migration/multifd/tcp/tls/x509/allow-anon-client", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/x509/allow-anon-client", > test_multifd_tcp_tls_x509_allow_anon_client); > - migration_test_add("/migration/multifd/tcp/tls/x509/reject-anon-client", > + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/x509/reject-anon-client", > test_multifd_tcp_tls_x509_reject_anon_client); > #endif /* CONFIG_TASN1 */ > #endif /* CONFIG_GNUTLS */ > > if (g_str_equal(arch, "x86_64") && has_kvm && kvm_dirty_ring_supported()) { > - migration_test_add("/migration/dirty_ring", > + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/dirty_ring", > test_precopy_unix_dirty_ring); > - migration_test_add("/migration/vcpu_dirty_limit", > + migration_test_add("/validate/vcpu/dirty_limit", > test_vcpu_dirty_limit); > }
On 27/03/24 2:37 am, Fabiano Rosas wrote: > Het Gala<het.gala@nutanix.com> writes: > > Some comments, mostly just thinking out loud... > >> For <test-type> --> migrate >> /<test-type>/<migration-mode>/<method>/<transport>/<invocation>/ >> <compression>/<encryption>/O:<others>/... >> >> For <test-type> --> validate >> /<test-type>/<validate-variable>/O:<transport>/O:<invocation>/ >> <validate-test-result>/O:<test-reason>/O:<others>/... > Do we need an optional 'capability' element? I'm not sure how practical > is to leave that as 'others', because that puts it at the end of the > string. We'd want the element that's more important/with more variants > to be towards the start of the string so we can run all tests of the > same kind with the -r option. While also looking at different functions for figuring out the transport and invocation, my observation was that, there might be many capabilities added to the same test, while it might not be important also. Ex: /migrate/multifd/tcp/plain 1. multifd is defined as a migration mode. 2. It is also a capability, and comes in 2 parts [multifd, multifd-channels] though one is a capability and another is parameter Similarly in other examples of compression, there are many capabilities and parameters added, but it might be not important to mention that ? Secondly, there are multiple migration capabilities IIRC (> 15). And a test requiring multiple capabilities, the overall string would be too long, and not that important also to mention all capabilities. Just thinking out of mind - Can we have selective list of capabilities ? 1. multifd 2. compress (again, there might be confusion with multifd compression methods like zstd, zlib and just 'compress') 3. zero-page (This will have sub capabilities ?) >> test-type :: migrate | validate > We could alternatively drop migration|migrate|validate. They are kind of > superfluous. I agree with the above comment. 'migrate' and 'validate' have a different set of variables required, some necessary, while other optional. IMO this will help is in streamlining the design further. >> migration-mode >> a. migrate --> :: precopy | postcopy | multifd >> b. validate --> :: (what to validate) >> methods :: preempt | recovery | reboot | suspend | simple I want some inputs here. 1. is there a better variable name rather than 'methods' 2. 'simple' does not fit perfect here IMO. >> transport :: tcp | fd | unix | file >> invocation :: uri | channels | both >> CompressionType :: zlib | zstd | none > s/none/nocomp/ ? We're already familiar with that. Ack. Will change that. >> encryptionType :: tls | plain > s/plain/notls/ ? What if there is another encryption technique in future ? > Or maybe we simply omit the noop options. It would make the string way > shorter in most cases. This might be a better approach. Can have some keys/variables as optional while some necessary. For ex: for 'migrate' - transport and invocation might be necessary while it might not be necessary for 'validate' qtests >> validate-test-result :: success | failure >> others :: other comments/capability that needs to be >> addressed. Can be multiple >> >> (more than one applicable, separated by using '-' in between) >> O: optional >> >> Signed-off-by: Het Gala<het.gala@nutanix.com> >> Suggested-by: Fabiano Rosas<farosas@suse.de> >> --- >> tests/qtest/migration-test.c | 143 ++++++++++++++++++----------------- >> 1 file changed, 72 insertions(+), 71 deletions(-) >> >> diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c >> index bd9f4b9dbb..bf4d000b76 100644 >> --- a/tests/qtest/migration-test.c >> +++ b/tests/qtest/migration-test.c Regards, Het Gala
ping ! On 27/03/24 4:18 pm, Het Gala wrote: > > > On 27/03/24 2:37 am, Fabiano Rosas wrote: >> Het Gala<het.gala@nutanix.com> writes: >> >> Some comments, mostly just thinking out loud... >> >>> For <test-type> --> migrate >>> /<test-type>/<migration-mode>/<method>/<transport>/<invocation>/ >>> <compression>/<encryption>/O:<others>/... >>> >>> For <test-type> --> validate >>> /<test-type>/<validate-variable>/O:<transport>/O:<invocation>/ >>> <validate-test-result>/O:<test-reason>/O:<others>/... >> Do we need an optional 'capability' element? I'm not sure how practical >> is to leave that as 'others', because that puts it at the end of the >> string. We'd want the element that's more important/with more variants >> to be towards the start of the string so we can run all tests of the >> same kind with the -r option. > While also looking at different functions for figuring out the transport > and invocation, my observation was that, there might be many capabilities > added to the same test, while it might not be important also. > Ex: /migrate/multifd/tcp/plain > 1. multifd is defined as a migration mode. > 2. It is also a capability, and comes in 2 parts [multifd, > multifd-channels] > though one is a capability and another is parameter > Similarly in other examples of compression, there are many capabilities > and parameters added, but it might be not important to mention that ? > > Secondly, there are multiple migration capabilities IIRC (> 15). And a > test > requiring multiple capabilities, the overall string would be too long, and > not that important also to mention all capabilities. > > Just thinking out of mind - Can we have selective list of capabilities > ? 1. multifd 2. compress (again, there might be confusion with multifd > compression methods like zstd, zlib and just 'compress') 3. zero-page > (This will have sub capabilities ?) > >>> test-type :: migrate | validate >> We could alternatively drop migration|migrate|validate. They are kind of >> superfluous. > I agree with the above comment. 'migrate' and 'validate' have a different > set of variables required, some necessary, while other optional. IMO this > will help is in streamlining the design further. >>> migration-mode >>> a. migrate --> :: precopy | postcopy | multifd >>> b. validate --> :: (what to validate) >>> methods :: preempt | recovery | reboot | suspend | simple > I want some inputs here. > 1. is there a better variable name rather than 'methods' > 2. 'simple' does not fit perfect here IMO. >>> transport :: tcp | fd | unix | file >>> invocation :: uri | channels | both >>> CompressionType :: zlib | zstd | none >> s/none/nocomp/ ? We're already familiar with that. > Ack. Will change that. >>> encryptionType :: tls | plain >> s/plain/notls/ ? > What if there is another encryption technique in future ? >> Or maybe we simply omit the noop options. It would make the string way >> shorter in most cases. > This might be a better approach. Can have some keys/variables as optional > while some necessary. For ex: for 'migrate' - transport and invocation > might be necessary while it might not be necessary for 'validate' qtests >>> validate-test-result :: success | failure >>> others :: other comments/capability that needs to be >>> addressed. Can be multiple >>> >>> (more than one applicable, separated by using '-' in between) >>> O: optional >>> >>> Signed-off-by: Het Gala<het.gala@nutanix.com> >>> Suggested-by: Fabiano Rosas<farosas@suse.de> >>> --- >>> tests/qtest/migration-test.c | 143 ++++++++++++++++++----------------- >>> 1 file changed, 72 insertions(+), 71 deletions(-) >>> >>> diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c >>> index bd9f4b9dbb..bf4d000b76 100644 >>> --- a/tests/qtest/migration-test.c >>> +++ b/tests/qtest/migration-test.c > Regards, > Het Gala Regards, Het Gala
Het Gala <het.gala@nutanix.com> writes: > On 27/03/24 2:37 am, Fabiano Rosas wrote: >> Het Gala<het.gala@nutanix.com> writes: >> >> Some comments, mostly just thinking out loud... >> >>> For <test-type> --> migrate >>> /<test-type>/<migration-mode>/<method>/<transport>/<invocation>/ >>> <compression>/<encryption>/O:<others>/... >>> >>> For <test-type> --> validate >>> /<test-type>/<validate-variable>/O:<transport>/O:<invocation>/ >>> <validate-test-result>/O:<test-reason>/O:<others>/... >> Do we need an optional 'capability' element? I'm not sure how practical >> is to leave that as 'others', because that puts it at the end of the >> string. We'd want the element that's more important/with more variants >> to be towards the start of the string so we can run all tests of the >> same kind with the -r option. > While also looking at different functions for figuring out the transport > and invocation, my observation was that, there might be many capabilities > added to the same test, while it might not be important also. > Ex: /migrate/multifd/tcp/plain > 1. multifd is defined as a migration mode. > 2. It is also a capability, and comes in 2 parts [multifd, multifd-channels] > though one is a capability and another is parameter > Similarly in other examples of compression, there are many capabilities > and parameters added, but it might be not important to mention that ? > > Secondly, there are multiple migration capabilities IIRC (> 15). And a test > requiring multiple capabilities, the overall string would be too long, and > not that important also to mention all capabilities. > > Just thinking out of mind - Can we have selective list of capabilities ? > 1. multifd 2. compress (again, there might be confusion with multifd > compression methods like zstd, zlib and just 'compress') 3. zero-page > (This will have sub capabilities ?) I was thinking of keeping that part more open-ended. So not specifying capabilities one by one, but more like "if you're testing a capability, it comes here". About multifd, it's a bit special since it cannot be seen as just a "feature" anymore. It's a core part of the migration code. I wouldn't classify it as capability for the purposes of the tests. > >>> test-type :: migrate | validate >> We could alternatively drop migration|migrate|validate. They are kind of >> superfluous. > I agree with the above comment. 'migrate' and 'validate' have a different > set of variables required, some necessary, while other optional. IMO this > will help is in streamlining the design further. >>> migration-mode >>> a. migrate --> :: precopy | postcopy | multifd >>> b. validate --> :: (what to validate) >>> methods :: preempt | recovery | reboot | suspend | simple > I want some inputs here. > 1. is there a better variable name rather than 'methods' Does this fall into the "mode" terminology that Steven introduced? > 2. 'simple' does not fit perfect here IMO. Can we go without it? >>> transport :: tcp | fd | unix | file >>> invocation :: uri | channels | both >>> CompressionType :: zlib | zstd | none >> s/none/nocomp/ ? We're already familiar with that. > Ack. Will change that. >>> encryptionType :: tls | plain >> s/plain/notls/ ? > What if there is another encryption technique in future ? >> Or maybe we simply omit the noop options. It would make the string way >> shorter in most cases. > This might be a better approach. Can have some keys/variables as optional > while some necessary. For ex: for 'migrate' - transport and invocation > might be necessary while it might not be necessary for 'validate' qtests Yep >>> validate-test-result :: success | failure >>> others :: other comments/capability that needs to be >>> addressed. Can be multiple >>> >>> (more than one applicable, separated by using '-' in between) >>> O: optional >>> >>> Signed-off-by: Het Gala<het.gala@nutanix.com> >>> Suggested-by: Fabiano Rosas<farosas@suse.de> >>> --- >>> tests/qtest/migration-test.c | 143 ++++++++++++++++++----------------- >>> 1 file changed, 72 insertions(+), 71 deletions(-) >>> >>> diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c >>> index bd9f4b9dbb..bf4d000b76 100644 >>> --- a/tests/qtest/migration-test.c >>> +++ b/tests/qtest/migration-test.c > Regards, > Het Gala I'm wondering whether we should leave the existing tests untouched and require the new format only for new tests. Going through a git bisection with a change in the middle that alters test names would be infuriating.
On 05/04/24 7:58 pm, Fabiano Rosas wrote: > !-------------------------------------------------------------------| > CAUTION: External Email > > |-------------------------------------------------------------------! > > Het Gala<het.gala@nutanix.com> writes: > >> On 27/03/24 2:37 am, Fabiano Rosas wrote: >>> Het Gala<het.gala@nutanix.com> writes: >>> >>> Some comments, mostly just thinking out loud... >>> >>>> For <test-type> --> migrate >>>> /<test-type>/<migration-mode>/<method>/<transport>/<invocation>/ >>>> <compression>/<encryption>/O:<others>/... >>>> >>>> For <test-type> --> validate >>>> /<test-type>/<validate-variable>/O:<transport>/O:<invocation>/ >>>> <validate-test-result>/O:<test-reason>/O:<others>/... >>> Do we need an optional 'capability' element? I'm not sure how practical >>> is to leave that as 'others', because that puts it at the end of the >>> string. We'd want the element that's more important/with more variants >>> to be towards the start of the string so we can run all tests of the >>> same kind with the -r option. >> While also looking at different functions for figuring out the transport >> and invocation, my observation was that, there might be many capabilities >> added to the same test, while it might not be important also. >> Ex: /migrate/multifd/tcp/plain >> 1. multifd is defined as a migration mode. >> 2. It is also a capability, and comes in 2 parts [multifd, multifd-channels] >> though one is a capability and another is parameter >> Similarly in other examples of compression, there are many capabilities >> and parameters added, but it might be not important to mention that ? >> >> Secondly, there are multiple migration capabilities IIRC (> 15). And a test >> requiring multiple capabilities, the overall string would be too long, and >> not that important also to mention all capabilities. >> >> Just thinking out of mind - Can we have selective list of capabilities ? >> 1. multifd 2. compress (again, there might be confusion with multifd >> compression methods like zstd, zlib and just 'compress') 3. zero-page >> (This will have sub capabilities ?) > I was thinking of keeping that part more open-ended. So not specifying > capabilities one by one, but more like "if you're testing a capability, > it comes here". > > About multifd, it's a bit special since it cannot be seen as just a > "feature" anymore. It's a core part of the migration code. I wouldn't > classify it as capability for the purposes of the tests. Ack, got it. >>>> test-type :: migrate | validate >>> We could alternatively drop migration|migrate|validate. They are kind of >>> superfluous. >> I agree with the above comment. 'migrate' and 'validate' have a different >> set of variables required, some necessary, while other optional. IMO this >> will help is in streamlining the design further. >>>> migration-mode >>>> a. migrate --> :: precopy | postcopy | multifd >>>> b. validate --> :: (what to validate) >>>> methods :: preempt | recovery | reboot | suspend | simple >> I want some inputs here. >> 1. is there a better variable name rather than 'methods' > Does this fall into the "mode" terminology that Steven introduced? Yes, as we decided that we don't want 'migration-mode' key-value pair, naming 'mode' would be a better term. In cases, where multiple modes are to be used ex: postcopy_preempt_recovery I feel it might be a good idea to separate multiple modes by '-' For example - .../preempty-recovery/... Similarly for other keys too if required >> 2. 'simple' does not fit perfect here IMO. > Can we go without it? You mean omit the key itself in case of a no-op ? >>>> transport :: tcp | fd | unix | file >>>> invocation :: uri | channels | both >>>> CompressionType :: zlib | zstd | none >>> s/none/nocomp/ ? We're already familiar with that. >> Ack. Will change that. >>>> encryptionType :: tls | plain >>> s/plain/notls/ ? >> What if there is another encryption technique in future ? >>> Or maybe we simply omit the noop options. It would make the string way >>> shorter in most cases. >> This might be a better approach. Can have some keys/variables as optional >> while some necessary. For ex: for 'migrate' - transport and invocation >> might be necessary while it might not be necessary for 'validate' qtests > Yep Ack, will do that! >>>> validate-test-result :: success | failure >>>> others :: other comments/capability that needs to be >>>> addressed. Can be multiple >>>> >>>> (more than one applicable, separated by using '-' in between) >>>> O: optional >>>> >>>> Signed-off-by: Het Gala<het.gala@nutanix.com> >>>> Suggested-by: Fabiano Rosas<farosas@suse.de> >>>> --- >>>> tests/qtest/migration-test.c | 143 ++++++++++++++++++----------------- >>>> 1 file changed, 72 insertions(+), 71 deletions(-) >>>> >>>> diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c >>>> index bd9f4b9dbb..bf4d000b76 100644 >>>> --- a/tests/qtest/migration-test.c >>>> +++ b/tests/qtest/migration-test.c >> Regards, >> Het Gala > I'm wondering whether we should leave the existing tests untouched and > require the new format only for new tests. Going through a git bisection > with a change in the middle that alters test names would be infuriating. Hmm yup. I had this doubt on, how would we be enforcing the new design for any new qtests that gets added from now on ? Can we have this design started for validation tests maybe for now, the number is low and might get some feedback to improve this ? Regards, Het Gala
Het Gala <het.gala@nutanix.com> writes: > On 05/04/24 7:58 pm, Fabiano Rosas wrote: >> !-------------------------------------------------------------------| >> CAUTION: External Email >> >> |-------------------------------------------------------------------! >> >> Het Gala<het.gala@nutanix.com> writes: >> >>> On 27/03/24 2:37 am, Fabiano Rosas wrote: >>>> Het Gala<het.gala@nutanix.com> writes: >>>> >>>> Some comments, mostly just thinking out loud... >>>> >>>>> For <test-type> --> migrate >>>>> /<test-type>/<migration-mode>/<method>/<transport>/<invocation>/ >>>>> <compression>/<encryption>/O:<others>/... >>>>> >>>>> For <test-type> --> validate >>>>> /<test-type>/<validate-variable>/O:<transport>/O:<invocation>/ >>>>> <validate-test-result>/O:<test-reason>/O:<others>/... >>>> Do we need an optional 'capability' element? I'm not sure how practical >>>> is to leave that as 'others', because that puts it at the end of the >>>> string. We'd want the element that's more important/with more variants >>>> to be towards the start of the string so we can run all tests of the >>>> same kind with the -r option. >>> While also looking at different functions for figuring out the transport >>> and invocation, my observation was that, there might be many capabilities >>> added to the same test, while it might not be important also. >>> Ex: /migrate/multifd/tcp/plain >>> 1. multifd is defined as a migration mode. >>> 2. It is also a capability, and comes in 2 parts [multifd, multifd-channels] >>> though one is a capability and another is parameter >>> Similarly in other examples of compression, there are many capabilities >>> and parameters added, but it might be not important to mention that ? >>> >>> Secondly, there are multiple migration capabilities IIRC (> 15). And a test >>> requiring multiple capabilities, the overall string would be too long, and >>> not that important also to mention all capabilities. >>> >>> Just thinking out of mind - Can we have selective list of capabilities ? >>> 1. multifd 2. compress (again, there might be confusion with multifd >>> compression methods like zstd, zlib and just 'compress') 3. zero-page >>> (This will have sub capabilities ?) >> I was thinking of keeping that part more open-ended. So not specifying >> capabilities one by one, but more like "if you're testing a capability, >> it comes here". >> >> About multifd, it's a bit special since it cannot be seen as just a >> "feature" anymore. It's a core part of the migration code. I wouldn't >> classify it as capability for the purposes of the tests. > Ack, got it. Meta: it's a good idea to add a blank line before and after your reply when replying inline like this, it makes it easier on the eyes to spot the various snippets in a wall of text (note how this reply itself has extra blank lines before and after it). >>>>> test-type :: migrate | validate >>>> We could alternatively drop migration|migrate|validate. They are kind of >>>> superfluous. >>> I agree with the above comment. 'migrate' and 'validate' have a different >>> set of variables required, some necessary, while other optional. IMO this >>> will help is in streamlining the design further. >>>>> migration-mode >>>>> a. migrate --> :: precopy | postcopy | multifd >>>>> b. validate --> :: (what to validate) >>>>> methods :: preempt | recovery | reboot | suspend | simple >>> I want some inputs here. >>> 1. is there a better variable name rather than 'methods' >> Does this fall into the "mode" terminology that Steven introduced? > Yes, as we decided that we don't want 'migration-mode' key-value pair, > naming 'mode' would be a better term. > > In cases, where multiple modes are to be used ex: postcopy_preempt_recovery > I feel it might be a good idea to separate multiple modes by '-' > For example - .../preempty-recovery/... > Similarly for other keys too if required Possibly... as long as we don't lose the ability of running subsets of tests in one command, i.e. "all postcopy tests", "all postcopy recovery tests", etc. >>> 2. 'simple' does not fit perfect here IMO. >> Can we go without it? > You mean omit the key itself in case of a no-op ? Yes >>>>> transport :: tcp | fd | unix | file >>>>> invocation :: uri | channels | both >>>>> CompressionType :: zlib | zstd | none >>>> s/none/nocomp/ ? We're already familiar with that. >>> Ack. Will change that. >>>>> encryptionType :: tls | plain >>>> s/plain/notls/ ? >>> What if there is another encryption technique in future ? >>>> Or maybe we simply omit the noop options. It would make the string way >>>> shorter in most cases. >>> This might be a better approach. Can have some keys/variables as optional >>> while some necessary. For ex: for 'migrate' - transport and invocation >>> might be necessary while it might not be necessary for 'validate' qtests >> Yep > Ack, will do that! >>>>> validate-test-result :: success | failure >>>>> others :: other comments/capability that needs to be >>>>> addressed. Can be multiple >>>>> >>>>> (more than one applicable, separated by using '-' in between) >>>>> O: optional >>>>> >>>>> Signed-off-by: Het Gala<het.gala@nutanix.com> >>>>> Suggested-by: Fabiano Rosas<farosas@suse.de> >>>>> --- >>>>> tests/qtest/migration-test.c | 143 ++++++++++++++++++----------------- >>>>> 1 file changed, 72 insertions(+), 71 deletions(-) >>>>> >>>>> diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c >>>>> index bd9f4b9dbb..bf4d000b76 100644 >>>>> --- a/tests/qtest/migration-test.c >>>>> +++ b/tests/qtest/migration-test.c >>> Regards, >>> Het Gala >> I'm wondering whether we should leave the existing tests untouched and >> require the new format only for new tests. Going through a git bisection >> with a change in the middle that alters test names would be infuriating. > Hmm yup. I had this doubt on, how would we be enforcing the new design > for any new qtests that gets added from now on ? We put a big comment somewhere and refer to it during review. Perhaps at main(), right before the migration_test_add calls. > Can we have this design started for validation tests maybe for now, the > number is low and might get some feedback to improve this ? Ok. Please put this all together in a new version, make sure you mention that you're not touching the old tests to preserve bisectability and let's see what others think. > > > Regards, > Het Gala
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c index bd9f4b9dbb..bf4d000b76 100644 --- a/tests/qtest/migration-test.c +++ b/tests/qtest/migration-test.c @@ -3620,62 +3620,63 @@ int main(int argc, char **argv) module_call_init(MODULE_INIT_QOM); if (is_x86) { - migration_test_add("/migration/precopy/unix/suspend/live", + migration_test_add("/migrate/precopy/suspend/unix/uri/none/plain/live", test_precopy_unix_suspend_live); - migration_test_add("/migration/precopy/unix/suspend/notlive", + migration_test_add("/migrate/precopy/suspend/unix/uri/none/plain/notlive", test_precopy_unix_suspend_notlive); } if (has_uffd) { - migration_test_add("/migration/postcopy/plain", test_postcopy); - migration_test_add("/migration/postcopy/recovery/plain", - test_postcopy_recovery); - migration_test_add("/migration/postcopy/preempt/plain", + migration_test_add("/migrate/postcopy/simple/tcp/uri/none/plain", + test_postcopy); + migration_test_add("/migrate/postcopy/recovery/tcp/uri/none/plain", + test_postcopy_recovery); + migration_test_add("/migrate/postcopy/preempt/tcp/uri/none/plain", test_postcopy_preempt); - migration_test_add("/migration/postcopy/preempt/recovery/plain", + migration_test_add("/migrate/postcopy/preempt-recovery/tcp/uri/none/plain", test_postcopy_preempt_recovery); if (getenv("QEMU_TEST_FLAKY_TESTS")) { - migration_test_add("/migration/postcopy/compress/plain", + migration_test_add("/migrate/postcopy/simple/tcp/uri/none/plain/compress", test_postcopy_compress); - migration_test_add("/migration/postcopy/recovery/compress/plain", + migration_test_add("/migrate/postcopy/recovery/tcp/uri/none/plain/compress", test_postcopy_recovery_compress); } #ifndef _WIN32 - migration_test_add("/migration/postcopy/recovery/double-failures", + migration_test_add("/migrate/postcopy/recovery/tcp/uri/none/none/plain/double-failures", test_postcopy_recovery_double_fail); #endif /* _WIN32 */ if (is_x86) { - migration_test_add("/migration/postcopy/suspend", + migration_test_add("/migrate/postcopy/suspend/tcp/uri/none/plain", test_postcopy_suspend); } } - migration_test_add("/migration/bad_dest", test_baddest); + migration_test_add("/migrate/precopy/simple/tcp/uri/none/plain/bad_dest", test_baddest); #ifndef _WIN32 if (!g_str_equal(arch, "s390x")) { - migration_test_add("/migration/analyze-script", test_analyze_script); + migration_test_add("/migrate/precopy/simple/file/uri/none/plain/analyze-script", test_analyze_script); } #endif - migration_test_add("/migration/precopy/unix/plain", + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/live", test_precopy_unix_plain); - migration_test_add("/migration/precopy/unix/xbzrle", + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/xbzrle-live", test_precopy_unix_xbzrle); /* * Compression fails from time to time. * Put test here but don't enable it until everything is fixed. */ if (getenv("QEMU_TEST_FLAKY_TESTS")) { - migration_test_add("/migration/precopy/unix/compress/wait", + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/compress-wait", test_precopy_unix_compress); - migration_test_add("/migration/precopy/unix/compress/nowait", + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/compress-nowait", test_precopy_unix_compress_nowait); } - migration_test_add("/migration/precopy/file", + migration_test_add("/migrate/precopy/simple/file/uri/none/plain", test_precopy_file); - migration_test_add("/migration/precopy/file/offset", + migration_test_add("/migrate/precopy/simple/file/uri/none/plain/offset", test_precopy_file_offset); - migration_test_add("/migration/precopy/file/offset/bad", + migration_test_add("/migrate/precopy/simple/file/uri/none/plain/bad-offset", test_precopy_file_offset_bad); /* @@ -3683,25 +3684,25 @@ int main(int argc, char **argv) * Don't run this test until we find a workaround. */ if (getenv("QEMU_TEST_FLAKY_TESTS")) { - migration_test_add("/migration/mode/reboot", test_mode_reboot); + migration_test_add("/migrate/precopy/reboot/file/uri/none/plain", test_mode_reboot); } - migration_test_add("/migration/precopy/file/mapped-ram", + migration_test_add("/migrate/precopy/simple/file/uri/none/plain/mapped-ram", test_precopy_file_mapped_ram); - migration_test_add("/migration/precopy/file/mapped-ram/live", + migration_test_add("/migrate/precopy/simple/file/uri/none/plain/mapped-ram-live", test_precopy_file_mapped_ram_live); - migration_test_add("/migration/multifd/file/mapped-ram", + migration_test_add("/migrate/multifd/simple/file/uri/none/plain/mapped-ram", test_multifd_file_mapped_ram); - migration_test_add("/migration/multifd/file/mapped-ram/live", + migration_test_add("/migrate/multifd/simple/file/uri/none/plain/mapped-ram-live", test_multifd_file_mapped_ram_live); #ifndef _WIN32 - migration_test_add("/migration/multifd/fd/mapped-ram", + migration_test_add("/migrate/multifd/simple/fd/uri/none/plain/mapped-ram", test_multifd_fd_mapped_ram); #endif #ifdef CONFIG_GNUTLS - migration_test_add("/migration/precopy/unix/tls/psk", + migration_test_add("/migrate/precopy/simple/unix/uri/none/tls/psk", test_precopy_unix_tls_psk); if (has_uffd) { @@ -3710,122 +3711,122 @@ int main(int argc, char **argv) * channels are tested under precopy. Here what we want to test is the * general postcopy path that has TLS channel enabled. */ - migration_test_add("/migration/postcopy/tls/psk", + migration_test_add("/migrate/postcopy/simple/tcp/uri/none/tls/psk", test_postcopy_tls_psk); - migration_test_add("/migration/postcopy/recovery/tls/psk", + migration_test_add("/migrate/postcopy/recovery/tcp/uri/none/tls/psk", test_postcopy_recovery_tls_psk); - migration_test_add("/migration/postcopy/preempt/tls/psk", + migration_test_add("/migrate/postcopy/preempt/tcp/uri/none/tls/psk", test_postcopy_preempt_tls_psk); - migration_test_add("/migration/postcopy/preempt/recovery/tls/psk", + migration_test_add("/migrate/postcopy/preempt-recovery/tcp/uri/none/tls/psk", test_postcopy_preempt_all); } #ifdef CONFIG_TASN1 - migration_test_add("/migration/precopy/unix/tls/x509/default-host", + migration_test_add("/migrate/precopy/simple/unix/uri/none/tls/x509/default-host", test_precopy_unix_tls_x509_default_host); - migration_test_add("/migration/precopy/unix/tls/x509/override-host", + migration_test_add("/migrate/precopy/simple/unix/uri/none/tls/x509/override-host", test_precopy_unix_tls_x509_override_host); #endif /* CONFIG_TASN1 */ #endif /* CONFIG_GNUTLS */ - migration_test_add("/migration/precopy/tcp/plain", test_precopy_tcp_plain); + migration_test_add("/migrate/precopy/simple/tcp/uri/none/plain", test_precopy_tcp_plain); - migration_test_add("/migration/precopy/tcp/plain/switchover-ack", + migration_test_add("/migrate/precopy/simple/tcp/uri/none/plain/switchover-ack", test_precopy_tcp_switchover_ack); #ifdef CONFIG_GNUTLS - migration_test_add("/migration/precopy/tcp/tls/psk/match", + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/psk/match", test_precopy_tcp_tls_psk_match); - migration_test_add("/migration/precopy/tcp/tls/psk/mismatch", + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/psk/mismatch", test_precopy_tcp_tls_psk_mismatch); #ifdef CONFIG_TASN1 - migration_test_add("/migration/precopy/tcp/tls/x509/default-host", + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/default-host", test_precopy_tcp_tls_x509_default_host); - migration_test_add("/migration/precopy/tcp/tls/x509/override-host", + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/override-host", test_precopy_tcp_tls_x509_override_host); - migration_test_add("/migration/precopy/tcp/tls/x509/mismatch-host", + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/mismatch-host", test_precopy_tcp_tls_x509_mismatch_host); - migration_test_add("/migration/precopy/tcp/tls/x509/friendly-client", + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/friendly-client", test_precopy_tcp_tls_x509_friendly_client); - migration_test_add("/migration/precopy/tcp/tls/x509/hostile-client", + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/hostile-client", test_precopy_tcp_tls_x509_hostile_client); - migration_test_add("/migration/precopy/tcp/tls/x509/allow-anon-client", + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/allow-anon-client", test_precopy_tcp_tls_x509_allow_anon_client); - migration_test_add("/migration/precopy/tcp/tls/x509/reject-anon-client", + migration_test_add("/migrate/precopy/simple/tcp/uri/none/tls/x509/reject-anon-client", test_precopy_tcp_tls_x509_reject_anon_client); #endif /* CONFIG_TASN1 */ #endif /* CONFIG_GNUTLS */ /* migration_test_add("/migration/ignore_shared", test_ignore_shared); */ #ifndef _WIN32 - migration_test_add("/migration/precopy/fd/tcp", + migration_test_add("/migrate/precopy/simple/fd-tcp/uri/none/plain", test_migrate_precopy_fd_socket); - migration_test_add("/migration/precopy/fd/file", + migration_test_add("/migrate/precopy/simple/fd-file/uri/none/plain", test_migrate_precopy_fd_file); - migration_test_add("/migration/precopy/fd/file/mapped-ram", + migration_test_add("/migrate/precopy/simple/fd-tcp/uri/none/plain/mapped-ram", test_migrate_precopy_fd_file_mapped_ram); #endif - migration_test_add("/migration/validate_uuid", test_validate_uuid); - migration_test_add("/migration/validate_uuid_error", + migration_test_add("/validate/uuid/unix/uri/success", test_validate_uuid); + migration_test_add("/validate/uuid/unix/uri/failure/uuid-error", test_validate_uuid_error); - migration_test_add("/migration/validate_uuid_src_not_set", + migration_test_add("/validate/uuid/unix/uri/failure/src_not_set", test_validate_uuid_src_not_set); - migration_test_add("/migration/validate_uuid_dst_not_set", + migration_test_add("/validate/uuid/unix/uri/failure/dst_not_set", test_validate_uuid_dst_not_set); - migration_test_add("/migration/validate_uri/channels/both_set", + migration_test_add("/validate/connect_channels/tcp/both/failure/both_set", test_validate_uri_channels_both_set); - migration_test_add("/migration/validate_uri/channels/none_set", + migration_test_add("/validate/connect_channels/tcp/both/failure/none_set", test_validate_uri_channels_none_set); /* * See explanation why this test is slow on function definition */ if (g_test_slow()) { - migration_test_add("/migration/auto_converge", + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/auto_converge", test_migrate_auto_converge); if (g_str_equal(arch, "x86_64") && has_kvm && kvm_dirty_ring_supported()) { - migration_test_add("/migration/dirty_limit", + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/dirty_limit", test_migrate_dirty_limit); } } - migration_test_add("/migration/multifd/tcp/uri/plain/none", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/plain", test_multifd_tcp_uri_none); - migration_test_add("/migration/multifd/tcp/channels/plain/none", + migration_test_add("/migrate/multifd/simple/tcp/channels/none/plain", test_multifd_tcp_channels_none); - migration_test_add("/migration/multifd/tcp/plain/zero-page/legacy", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/plain/zero-page/legacy", test_multifd_tcp_zero_page_legacy); - migration_test_add("/migration/multifd/tcp/plain/zero-page/none", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/plain/zero-page/none", test_multifd_tcp_no_zero_page); - migration_test_add("/migration/multifd/tcp/plain/cancel", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/plain/cancel", test_multifd_tcp_cancel); - migration_test_add("/migration/multifd/tcp/plain/zlib", + migration_test_add("/migrate/multifd/simple/tcp/uri/zlib/plain", test_multifd_tcp_zlib); #ifdef CONFIG_ZSTD - migration_test_add("/migration/multifd/tcp/plain/zstd", + migration_test_add("/migrate/multifd/simple/tcp/uri/zstd/plain", test_multifd_tcp_zstd); #endif #ifdef CONFIG_GNUTLS - migration_test_add("/migration/multifd/tcp/tls/psk/match", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/psk/match", test_multifd_tcp_tls_psk_match); - migration_test_add("/migration/multifd/tcp/tls/psk/mismatch", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/psk/mismatch", test_multifd_tcp_tls_psk_mismatch); #ifdef CONFIG_TASN1 - migration_test_add("/migration/multifd/tcp/tls/x509/default-host", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/x509/default-host", test_multifd_tcp_tls_x509_default_host); - migration_test_add("/migration/multifd/tcp/tls/x509/override-host", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/x509/override-host", test_multifd_tcp_tls_x509_override_host); - migration_test_add("/migration/multifd/tcp/tls/x509/mismatch-host", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/x509/mismatch-host", test_multifd_tcp_tls_x509_mismatch_host); - migration_test_add("/migration/multifd/tcp/tls/x509/allow-anon-client", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/x509/allow-anon-client", test_multifd_tcp_tls_x509_allow_anon_client); - migration_test_add("/migration/multifd/tcp/tls/x509/reject-anon-client", + migration_test_add("/migrate/multifd/simple/tcp/uri/none/tls/x509/reject-anon-client", test_multifd_tcp_tls_x509_reject_anon_client); #endif /* CONFIG_TASN1 */ #endif /* CONFIG_GNUTLS */ if (g_str_equal(arch, "x86_64") && has_kvm && kvm_dirty_ring_supported()) { - migration_test_add("/migration/dirty_ring", + migration_test_add("/migrate/precopy/simple/unix/uri/none/plain/dirty_ring", test_precopy_unix_dirty_ring); - migration_test_add("/migration/vcpu_dirty_limit", + migration_test_add("/validate/vcpu/dirty_limit", test_vcpu_dirty_limit); }
For <test-type> --> migrate /<test-type>/<migration-mode>/<method>/<transport>/<invocation>/ <compression>/<encryption>/O:<others>/... For <test-type> --> validate /<test-type>/<validate-variable>/O:<transport>/O:<invocation>/ <validate-test-result>/O:<test-reason>/O:<others>/... test-type :: migrate | validate migration-mode a. migrate --> :: precopy | postcopy | multifd b. validate --> :: (what to validate) methods :: preempt | recovery | reboot | suspend | simple transport :: tcp | fd | unix | file invocation :: uri | channels | both CompressionType :: zlib | zstd | none encryptionType :: tls | plain validate-test-result :: success | failure others :: other comments/capability that needs to be addressed. Can be multiple (more than one applicable, separated by using '-' in between) O: optional Signed-off-by: Het Gala <het.gala@nutanix.com> Suggested-by: Fabiano Rosas <farosas@suse.de> --- tests/qtest/migration-test.c | 143 ++++++++++++++++++----------------- 1 file changed, 72 insertions(+), 71 deletions(-)