All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Peter Xu <peterx@redhat.com>
Cc: qemu-devel@nongnu.org,
	Leonardo Bras Soares Passos <lsoaresp@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Manish Mishra <manish.mishra@nutanix.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [PATCH v6 11/13] tests: Add postcopy tls migration test
Date: Thu, 19 May 2022 11:11:34 +0100	[thread overview]
Message-ID: <YoYX1rydzZcZekL3@redhat.com> (raw)
In-Reply-To: <20220517195730.32312-12-peterx@redhat.com>

On Tue, May 17, 2022 at 03:57:28PM -0400, Peter Xu wrote:
> We just added TLS tests for precopy but not postcopy.  Add the
> corresponding test for vanilla postcopy.
> 
> Rename the vanilla postcopy to "postcopy/plain" because all postcopy tests
> will only use unix sockets as channel.
> 
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
>  tests/qtest/migration-test.c | 50 +++++++++++++++++++++++++++++++-----
>  1 file changed, 43 insertions(+), 7 deletions(-)
> 
> diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
> index d33e8060f9..e8304aa454 100644
> --- a/tests/qtest/migration-test.c
> +++ b/tests/qtest/migration-test.c
> @@ -481,6 +481,10 @@ typedef struct {
>      bool only_target;
>      /* Use dirty ring if true; dirty logging otherwise */
>      bool use_dirty_ring;
> +    /* Whether use TLS channels for postcopy test? */
> +    bool postcopy_tls;
> +    /* Used only if postcopy_tls==true, to cache the data object */
> +    void *postcopy_tls_data;

Rather than adding these fields, I think it would be preferrable to
pass the hooks in the same way I did for the precopy tests.

>      const char *opts_source;
>      const char *opts_target;
>  } MigrateStart;
> @@ -980,6 +984,10 @@ static int migrate_postcopy_prepare(QTestState **from_ptr,
>          return -1;

Add 'TestMigrateStartHook start_hook' to this method

>      }
>  
> +    if (args->postcopy_tls) {
> +        args->postcopy_tls_data = test_migrate_tls_psk_start_match(from, to);
> +    }

call the 'start_hook'

> +
>      migrate_set_capability(from, "postcopy-ram", true);
>      migrate_set_capability(to, "postcopy-ram", true);
>      migrate_set_capability(to, "postcopy-blocktime", true);
> @@ -1004,7 +1012,8 @@ static int migrate_postcopy_prepare(QTestState **from_ptr,
>      return 0;


>  }
>  
> -static void migrate_postcopy_complete(QTestState *from, QTestState *to)
> +static void migrate_postcopy_complete(QTestState *from, QTestState *to,
> +                                      MigrateStart *args)

Here pass in the TestMigrateFinishHook , and the void* data
from the migrate_postcoy_prepare method.

>  {
>      wait_for_migration_complete(from);
>  
> @@ -1015,19 +1024,38 @@ static void migrate_postcopy_complete(QTestState *from, QTestState *to)
>          read_blocktime(to);
>      }
>  
> +    if (args->postcopy_tls) {
> +        assert(args->postcopy_tls_data);
> +        test_migrate_tls_psk_finish(from, to, args->postcopy_tls_data);
> +        args->postcopy_tls_data = NULL;
> +    }
> +
>      test_migrate_end(from, to, true);
>  }
>  
> -static void test_postcopy(void)
> +static void test_postcopy_common(MigrateStart *args)

Use 'MigrateCommon' here, which embeds a copy of 'MigrateStart',
while also having fields to the TestMigrateStartHook and
TestMigrateFinishHook.

>  {
> -    MigrateStart args = {};
>      QTestState *from, *to;
>  
> -    if (migrate_postcopy_prepare(&from, &to, &args)) {
> +    if (migrate_postcopy_prepare(&from, &to, args)) {
>          return;
>      }
>      migrate_postcopy_start(from, to);
> -    migrate_postcopy_complete(from, to);
> +    migrate_postcopy_complete(from, to, args);

eg this would become

    void *hook_data;

    if (migrate_postcopy_prepare(&from, &to, args.start_hook, &hook_data)) {
        return;
    }
    migrate_postcopy_start(from, to);
    migrate_postcopy_complete(from, to, args.finish_hook, hook_data);
   

> +}
> +
> +static void test_postcopy(void)
> +{
> +    MigrateStart args = { };

MigrateCommon args = {}


> +
> +    test_postcopy_common(&args);
> +}
> +
> +static void test_postcopy_tls_psk(void)
> +{
> +    MigrateStart args = { .postcopy_tls = true };

MigrateCommon args = {
   .start_hook = test_migrate_tls_psk_start_match,
   .finish_hook = test_migrate_tls_psk_finish,
}

> +
> +    test_postcopy_common(&args);
>  }
>  
>  static void test_postcopy_recovery(void)

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 :|



  parent reply	other threads:[~2022-05-19 10:19 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-17 19:57 [PATCH v6 00/13] migration: Postcopy Preemption Peter Xu
2022-05-17 19:57 ` [PATCH v6 01/13] migration: Add postcopy-preempt capability Peter Xu
2022-05-17 19:57 ` [PATCH v6 02/13] migration: Postcopy preemption preparation on channel creation Peter Xu
2022-05-17 19:57 ` [PATCH v6 03/13] migration: Postcopy preemption enablement Peter Xu
2022-05-17 19:57 ` [PATCH v6 04/13] migration: Postcopy recover with preempt enabled Peter Xu
2022-05-17 19:57 ` [PATCH v6 05/13] migration: Create the postcopy preempt channel asynchronously Peter Xu
2022-05-17 19:57 ` [PATCH v6 06/13] migration: Add property x-postcopy-preempt-break-huge Peter Xu
2022-05-17 19:57 ` [PATCH v6 07/13] migration: Add helpers to detect TLS capability Peter Xu
2022-05-18  8:57   ` Daniel P. Berrangé
2022-05-18 13:04     ` Peter Xu
2022-05-17 19:57 ` [PATCH v6 08/13] migration: Export tls-[creds|hostname|authz] params to cmdline too Peter Xu
2022-05-18 14:05   ` Daniel P. Berrangé
2022-05-17 19:57 ` [PATCH v6 09/13] migration: Enable TLS for preempt channel Peter Xu
2022-05-18 14:07   ` Daniel P. Berrangé
2022-05-17 19:57 ` [PATCH v6 10/13] migration: Respect postcopy request order in preemption mode Peter Xu
2022-05-23 10:56   ` Dr. David Alan Gilbert
2022-05-23 17:18     ` manish.mishra
2022-05-24 18:42     ` Peter Xu
2022-05-17 19:57 ` [PATCH v6 11/13] tests: Add postcopy tls migration test Peter Xu
2022-05-19  9:45   ` Dr. David Alan Gilbert
2022-05-19 10:11   ` Daniel P. Berrangé [this message]
2022-05-24 21:06     ` Peter Xu
2022-05-17 19:57 ` [PATCH v6 12/13] tests: Add postcopy tls recovery " Peter Xu
2022-05-19  9:34   ` Dr. David Alan Gilbert
2022-05-17 19:57 ` [PATCH v6 13/13] tests: Add postcopy preempt tests Peter Xu
2022-05-19  8:58   ` Dr. David Alan Gilbert

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=YoYX1rydzZcZekL3@redhat.com \
    --to=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=lsoaresp@redhat.com \
    --cc=manish.mishra@nutanix.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@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.