All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Halil Pasic <pasic@linux.vnet.ibm.com>
Cc: qemu-devel@nongnu.org, Juan Quintela <quintela@redhat.com>,
	Amit Shah <amit.shah@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 5/5] tests/test-vmstate.c: test array of ptr to primitive
Date: Tue, 21 Feb 2017 11:14:06 +0000	[thread overview]
Message-ID: <20170221111406.GD2377@work-vm> (raw)
In-Reply-To: <20170216121140.9061-6-pasic@linux.vnet.ibm.com>

* Halil Pasic (pasic@linux.vnet.ibm.com) wrote:
> Let's have a test for ptr arrays to some primitive type with some
> not-null and null ptrs intermixed.
> 
> Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com>
> 
> ---
> 
> Mainly for the sake of completeness and also to demonstrate that it works
> since in the previous version I wrongly stated it does not. If guys think
> we do not need this, I'm happy with just dropping it.
> ---
>  tests/test-vmstate.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 62 insertions(+)
> 
> diff --git a/tests/test-vmstate.c b/tests/test-vmstate.c
> index b68a0b3..82ab743 100644
> --- a/tests/test-vmstate.c
> +++ b/tests/test-vmstate.c
> @@ -590,6 +590,64 @@ static void test_arr_ptr_str_0_load(void)
>      }
>  }
>  
> +typedef struct TestArrayOfPtrToInt {
> +    int32_t *ar[AR_SIZE];
> +} TestArrayOfPtrToInt;
> +
> +const VMStateDescription vmsd_arpp = {
> +    .name = "test/arps",
> +    .version_id = 1,
> +    .minimum_version_id = 1,
> +    .fields = (VMStateField[]) {
> +        VMSTATE_ARRAY_OF_POINTER(ar, TestArrayOfPtrToInt,
> +                AR_SIZE, 0, vmstate_info_int32, int32_t*),
> +        VMSTATE_END_OF_LIST()
> +    }
> +};
> +
> +static void test_arr_ptr_prim_0_save(void)
> +{
> +    int32_t ar[AR_SIZE] = {0 , 1, 2, 3};
> +    TestArrayOfPtrToInt  sample = {.ar = {&ar[0], NULL, &ar[2], &ar[3]} };
> +    uint8_t wire_sample[] = {
> +        0x00, 0x00, 0x00, 0x00,
> +        VMS_NULLPTR_MARKER,
> +        0x00, 0x00, 0x00, 0x02,
> +        0x00, 0x00, 0x00, 0x03,
> +        QEMU_VM_EOF
> +    };
> +
> +    save_vmstate(&vmsd_arpp, &sample);
> +    compare_vmstate(wire_sample, sizeof(wire_sample));
> +}
> +
> +static void test_arr_ptr_prim_0_load(void)
> +{
> +    int32_t ar_gt[AR_SIZE] = {0, 1, 2, 3};
> +    int32_t ar[AR_SIZE] = {3 , 42, 1, 0};
> +    TestArrayOfPtrToInt obj = {.ar = {&ar[0], NULL, &ar[2], &ar[3]} };
> +    int idx;
> +    uint8_t wire_sample[] = {
> +        0x00, 0x00, 0x00, 0x00,
> +        VMS_NULLPTR_MARKER,
> +        0x00, 0x00, 0x00, 0x02,
> +        0x00, 0x00, 0x00, 0x03,
> +        QEMU_VM_EOF
> +    };

Again you could share the wire_sample and ar_gt between these two functions,
other than that:

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

Dave

> +    save_buffer(wire_sample, sizeof(wire_sample));
> +    SUCCESS(load_vmstate_one(&vmsd_arpp, &obj, 1,
> +                          wire_sample, sizeof(wire_sample)));
> +    for (idx = 0; idx < AR_SIZE; ++idx) {
> +        /* compare the target array ar with the ground truth array ar_gt */
> +        if (idx == 1) {
> +            g_assert_cmpint(42, ==, ar[idx]);
> +        } else {
> +            g_assert_cmpint(ar_gt[idx], ==, ar[idx]);
> +        }
> +    }
> +}
> +
>  /* test QTAILQ migration */
>  typedef struct TestQtailqElement TestQtailqElement;
>  
> @@ -843,6 +901,10 @@ int main(int argc, char **argv)
>      g_test_add_func("/vmstate/array/ptr/str/0/save", test_arr_ptr_str_0_save);
>      g_test_add_func("/vmstate/array/ptr/str/0/load",
>                      test_arr_ptr_str_0_load);
> +    g_test_add_func("/vmstate/array/ptr/prim/0/save",
> +                    test_arr_ptr_prim_0_save);
> +    g_test_add_func("/vmstate/array/ptr/prim/0/load",
> +                    test_arr_ptr_prim_0_load);
>      g_test_add_func("/vmstate/qtailq/save/saveq", test_save_q);
>      g_test_add_func("/vmstate/qtailq/load/loadq", test_load_q);
>      g_test_add_func("/vmstate/tmp_struct", test_tmp_struct);
> -- 
> 2.8.4
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

      reply	other threads:[~2017-02-21 11:14 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-16 12:11 [Qemu-devel] [PATCH 0/5] vmstate: handle arrays with null ptrs Halil Pasic
2017-02-16 12:11 ` [Qemu-devel] [PATCH 1/5] migration/vmstate: renames in (load|save)_state Halil Pasic
2017-02-16 12:11 ` [Qemu-devel] [PATCH 2/5] migration/vmstate: split up vmstate_base_addr Halil Pasic
2017-02-21 12:07   ` Dr. David Alan Gilbert
2017-02-22 15:36     ` Halil Pasic
2017-02-16 12:11 ` [Qemu-devel] [PATCH 3/5] migration/vmstate: fix array of ptr with nullptrs Halil Pasic
2017-02-17 19:42   ` Dr. David Alan Gilbert
2017-02-20 15:39     ` Halil Pasic
2017-02-21 12:22       ` Dr. David Alan Gilbert
2017-02-21 12:55         ` Halil Pasic
2017-02-22 14:46           ` Halil Pasic
2017-02-16 12:11 ` [Qemu-devel] [PATCH 4/5] tests/test-vmstate.c: test array of ptr with null Halil Pasic
2017-02-21 10:49   ` Dr. David Alan Gilbert
2017-02-21 11:07     ` Halil Pasic
2017-02-16 12:11 ` [Qemu-devel] [PATCH 5/5] tests/test-vmstate.c: test array of ptr to primitive Halil Pasic
2017-02-21 11:14   ` Dr. David Alan Gilbert [this message]

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=20170221111406.GD2377@work-vm \
    --to=dgilbert@redhat.com \
    --cc=amit.shah@redhat.com \
    --cc=pasic@linux.vnet.ibm.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.