All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Laurent Vivier" <lvivier@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Juan Quintela" <quintela@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"Peter Xu" <peterx@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>
Subject: [PATCH 11/18] tests: expand the migration precopy helper to support failures
Date: Wed,  2 Mar 2022 17:49:25 +0000	[thread overview]
Message-ID: <20220302174932.2692378-12-berrange@redhat.com> (raw)
In-Reply-To: <20220302174932.2692378-1-berrange@redhat.com>

The migration precopy testing helper function always expects the
migration to run to a completion state. There will be test scenarios
for TLS where expect either the client or server to fail the migration.
This expands the helper to cope with these scenarios.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 tests/qtest/migration-test.c | 47 +++++++++++++++++++++++++++++-------
 1 file changed, 38 insertions(+), 9 deletions(-)

diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index 2082c58e8b..e40b408988 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -827,17 +827,32 @@ typedef void (*TestMigrateFinishHook)(QTestState *from,
  * @connect_uri: the URI for the src QEMU to connect to
  * @start_hook: (optional) callback to run at start to set migration parameters
  * @finish_hook: (optional) callback to run at finish to cleanup
+ * @expect_fail: true if we expect migration to fail
+ * @dst_quit: true if we expect the dst QEMU to quit with an
+ *            abnormal exit status on failure
  * @dirty_ring: true to use dirty ring tracking
  *
  * If @connect_uri is NULL, then it will query the dst
  * QEMU for its actual listening address and use that
  * as the connect address. This allows for dynamically
  * picking a free TCP port.
+ *
+ * If @expect_fail is true then we expect the migration process to
+ * fail instead of completing. There can be a variety of reasons
+ * and stages in which this may happen. If a failure is expected
+ * to happen at time of establishing the connection, then @dst_quit
+ * should be false to indicate that the dst QEMU is espected to
+ * stay running and accept future migration connections. If a
+ * failure is expected to happen while processing the migration
+ * stream, then @dst_quit should be true to indicate that the
+ * dst QEMU is expected to quit with non-zero exit status
  */
 static void test_precopy_common(const char *listen_uri,
                                 const char *connect_uri,
                                 TestMigrateStartHook start_hook,
                                 TestMigrateFinishHook finish_hook,
+                                bool expect_fail,
+                                bool dst_quit,
                                 bool dirty_ring)
 {
     MigrateStart *args = migrate_start_new();
@@ -875,24 +890,32 @@ static void test_precopy_common(const char *listen_uri,
 
     migrate_qmp(from, connect_uri, "{}");
 
-    wait_for_migration_pass(from);
+    if (expect_fail) {
+        wait_for_migration_fail(from, !dst_quit);
 
-    migrate_set_parameter_int(from, "downtime-limit", CONVERGE_DOWNTIME);
+        if (dst_quit) {
+            qtest_set_expected_status(to, 1);
+        }
+    } else {
+        wait_for_migration_pass(from);
 
-    if (!got_stop) {
-        qtest_qmp_eventwait(from, "STOP");
-    }
+        migrate_set_parameter_int(from, "downtime-limit", CONVERGE_DOWNTIME);
 
-    qtest_qmp_eventwait(to, "RESUME");
+        if (!got_stop) {
+            qtest_qmp_eventwait(from, "STOP");
+        }
 
-    wait_for_serial("dest_serial");
-    wait_for_migration_complete(from);
+        qtest_qmp_eventwait(to, "RESUME");
+
+        wait_for_serial("dest_serial");
+        wait_for_migration_complete(from);
+    }
 
     if (finish_hook) {
         finish_hook(from, to, data_hook);
     }
 
-    test_migrate_end(from, to, true);
+    test_migrate_end(from, to, !expect_fail);
 }
 
 static void test_precopy_unix_common(bool dirty_ring)
@@ -903,6 +926,8 @@ static void test_precopy_unix_common(bool dirty_ring)
                         uri,
                         NULL, /* start_hook */
                         NULL, /* finish_hook */
+                        false, /* expect_fail */
+                        false, /* dst_quit */
                         dirty_ring);
 }
 
@@ -1012,6 +1037,8 @@ static void test_precopy_tcp(void)
                         NULL, /* connect_uri */
                         NULL, /* start_hook */
                         NULL, /* finish_hook */
+                        false, /* expect_fail */
+                        false, /* dst_quit */
                         false /* dirty_ring */);
 }
 
@@ -1079,6 +1106,8 @@ static void test_migrate_fd_proto(void)
                         "fd:fd-mig",
                         test_migrate_fd_start_hook,
                         test_migrate_fd_finish_hook,
+                        false, /* expect_fail */
+                        false, /* dst_quit */
                         false /* dirty_ring */);
 }
 
-- 
2.34.1



  parent reply	other threads:[~2022-03-02 18:07 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-02 17:49 [PATCH 00/18] tests: introduce testing coverage for TLS with migration Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 01/18] tests: fix encoding of IP addresses in x509 certs Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 02/18] tests: improve error message when saving TLS PSK file fails Daniel P. Berrangé
2022-03-07  6:52   ` Peter Xu
2022-03-02 17:49 ` [PATCH 03/18] tests: support QTEST_TRACE env variable Daniel P. Berrangé
2022-03-07  6:53   ` Peter Xu
2022-03-07 10:06   ` Thomas Huth
2022-03-02 17:49 ` [PATCH 04/18] tests: print newline after QMP response in qtest logs Daniel P. Berrangé
2022-03-07  6:51   ` Peter Xu
2022-03-07 10:06     ` Daniel P. Berrangé
2022-03-07 10:09       ` Thomas Huth
2022-03-07 10:20         ` Peter Xu
2022-03-10 10:55         ` Daniel P. Berrangé
2022-03-10 11:11           ` Marc-André Lureau
2022-03-10 11:35             ` Daniel P. Berrangé
2022-03-10 11:50               ` Marc-André Lureau
2022-03-10 12:02                 ` Daniel P. Berrangé
2022-03-10 11:53               ` Marc-André Lureau
2022-03-10 12:08               ` Thomas Huth
2022-03-10 13:35               ` Dr. David Alan Gilbert
2022-03-02 17:49 ` [PATCH 05/18] tests: add more helper macros for creating TLS x509 certs Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 06/18] crypto: mandate a hostname when checking x509 creds on a client Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 07/18] migration: fix use of TLS PSK credentials with a UNIX socket Daniel P. Berrangé
2022-03-07  7:08   ` Peter Xu
2022-03-07 10:08     ` Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 08/18] tests: merge code for UNIX and TCP migration pre-copy tests Daniel P. Berrangé
2022-03-07  7:16   ` Peter Xu
2022-03-07 10:11   ` Thomas Huth
2022-03-10 11:00     ` Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 09/18] tests: introduce ability to provide hooks for migration precopy test Daniel P. Berrangé
2022-03-07  7:19   ` Peter Xu
2022-03-02 17:49 ` [PATCH 10/18] tests: switch migration FD passing test to use common precopy helper Daniel P. Berrangé
2022-03-07  7:22   ` Peter Xu
2022-03-02 17:49 ` Daniel P. Berrangé [this message]
2022-03-07  7:39   ` [PATCH 11/18] tests: expand the migration precopy helper to support failures Peter Xu
2022-03-07 10:10     ` Daniel P. Berrangé
2022-03-07  7:57   ` Peter Xu
2022-03-10 16:18     ` Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 12/18] tests: add migration tests of TLS with PSK credentials Daniel P. Berrangé
2022-03-07 10:12   ` Thomas Huth
2022-03-02 17:49 ` [PATCH 13/18] tests: add migration tests of TLS with x509 credentials Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 14/18] tests: convert XBZRLE migration test to use common helper Daniel P. Berrangé
2022-03-07  8:01   ` Peter Xu
2022-03-02 17:49 ` [PATCH 15/18] tests: convert multifd migration tests " Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 16/18] tests: add multifd migration tests of TLS with PSK credentials Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 17/18] tests: add multifd migration tests of TLS with x509 credentials Daniel P. Berrangé
2022-03-02 17:49 ` [PATCH 18/18] tests: ensure migration status isn't reported as failed Daniel P. Berrangé
2022-03-07  8:09   ` Peter Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220302174932.2692378-12-berrange@redhat.com \
    --to=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.