All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org, quintela@redhat.com
Subject: Re: [Qemu-devel] [PATCH] tests: add /vmstate/simple/array
Date: Fri, 16 Nov 2018 18:59:46 +0000	[thread overview]
Message-ID: <20181116185945.GG2447@work-vm> (raw)
In-Reply-To: <20181114132130.27141-1-marcandre.lureau@redhat.com>

* Marc-André Lureau (marcandre.lureau@redhat.com) wrote:
> A very simple test to show VMSTATE_*_ARRAY usage and result. It could
> be systematically extended to other primitives, but I leave that as an
> exercise for others :).
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>

Yes, fair enough.  I don't think it's necessary to test every subtype
that can go in the array; but it would be nice to add some of the more
esoteric array macros no one understands.

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

> ---
>  tests/test-vmstate.c | 50 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
> 
> diff --git a/tests/test-vmstate.c b/tests/test-vmstate.c
> index 37a7a93784..2a960dedbe 100644
> --- a/tests/test-vmstate.c
> +++ b/tests/test-vmstate.c
> @@ -284,6 +284,55 @@ static void test_simple_primitive(void)
>      FIELD_EQUAL(i64_2);
>  }
>  
> +typedef struct TestSimpleArray {
> +    uint16_t u16_1[3];
> +} TestSimpleArray;
> +
> +/* Object instantiation, we are going to use it in more than one test */
> +
> +TestSimpleArray obj_simple_arr = {
> +    .u16_1 = { 0x42, 0x43, 0x44 },
> +};
> +
> +/* Description of the values.  If you add a primitive type
> +   you are expected to add a test here */
> +
> +static const VMStateDescription vmstate_simple_arr = {
> +    .name = "simple/array",
> +    .version_id = 1,
> +    .minimum_version_id = 1,
> +    .fields = (VMStateField[]) {
> +        VMSTATE_UINT16_ARRAY(u16_1, TestSimpleArray, 3),
> +        VMSTATE_END_OF_LIST()
> +    }
> +};
> +
> +uint8_t wire_simple_arr[] = {
> +    /* u16_1 */ 0x00, 0x42,
> +    /* u16_1 */ 0x00, 0x43,
> +    /* u16_1 */ 0x00, 0x44,
> +    QEMU_VM_EOF, /* just to ensure we won't get EOF reported prematurely */
> +};
> +
> +static void obj_simple_arr_copy(void *target, void *source)
> +{
> +    memcpy(target, source, sizeof(TestSimpleArray));
> +}
> +
> +static void test_simple_array(void)
> +{
> +    TestSimpleArray obj, obj_clone;
> +
> +    memset(&obj, 0, sizeof(obj));
> +    save_vmstate(&vmstate_simple_arr, &obj_simple_arr);
> +
> +    compare_vmstate(wire_simple_arr, sizeof(wire_simple_arr));
> +
> +    SUCCESS(load_vmstate(&vmstate_simple_arr, &obj, &obj_clone,
> +                         obj_simple_arr_copy, 1, wire_simple_arr,
> +                         sizeof(wire_simple_arr)));
> +}
> +
>  typedef struct TestStruct {
>      uint32_t a, b, c, e;
>      uint64_t d, f;
> @@ -863,6 +912,7 @@ int main(int argc, char **argv)
>  
>      g_test_init(&argc, &argv, NULL);
>      g_test_add_func("/vmstate/simple/primitive", test_simple_primitive);
> +    g_test_add_func("/vmstate/simple/array", test_simple_array);
>      g_test_add_func("/vmstate/versioned/load/v1", test_load_v1);
>      g_test_add_func("/vmstate/versioned/load/v2", test_load_v2);
>      g_test_add_func("/vmstate/field_exists/load/noskip", test_load_noskip);
> -- 
> 2.19.1.708.g4ede3d42df
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

  parent reply	other threads:[~2018-11-16 18:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-14 13:21 [Qemu-devel] [PATCH] tests: add /vmstate/simple/array Marc-André Lureau
2018-11-14 15:33 ` Philippe Mathieu-Daudé
2018-11-16 18:59 ` Dr. David Alan Gilbert [this message]
2019-01-23 12:01 ` 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=20181116185945.GG2447@work-vm \
    --to=dgilbert@redhat.com \
    --cc=marcandre.lureau@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.