[Spice-devel] [PATCH spice-server 3/8] test-stream-device: Check monitor ID messages

Jonathon Jongsma jjongsma at redhat.com
Tue Feb 12 20:29:38 UTC 2019


Looks mostly good, but I found an issue and had a couple suggested
improvments. So I sent a couple follow-up patches that you can squash
with this patch if you think they're valid.

Reviewed-by: Jonathon Jongsma <jjongsma at redhat.com>

On Mon, 2019-02-11 at 11:54 +0000, Frediano Ziglio wrote:
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/tests/test-stream-device.c | 52
> +++++++++++++++++++++++++++++++
>  1 file changed, 52 insertions(+)
> 
> diff --git a/server/tests/test-stream-device.c b/server/tests/test-
> stream-device.c
> index f1707d2f8..cb3a1a4ff 100644
> --- a/server/tests/test-stream-device.c
> +++ b/server/tests/test-stream-device.c
> @@ -491,6 +491,57 @@ static void
> test_stream_device_data_message(TestFixture *fixture, gconstpointer
>      g_assert_cmpint(send_data_bytes, ==, 1017);
>  }
>  
> +static void test_display_info(TestFixture *fixture, gconstpointer
> user_data)
> +{
> +    // build a message for the streaming device
> +    static const char address[] = "pci/a/b.cde";
> +    StreamMsgDeviceDisplayInfo info = {
> +        .stream_id = GUINT32_TO_LE(0x01020304),
> +        .device_display_id = GUINT32_TO_LE(0x0a0b0c0d),
> +        .device_address_len = GUINT32_TO_LE(sizeof(address)),
> +    };
> +    uint8_t *p = message;
> +    p = add_stream_hdr(p, STREAM_TYPE_DEVICE_DISPLAY_INFO,
> sizeof(info) + sizeof(address));
> +    memcpy(p, &info, sizeof(info));
> +    p += sizeof(info);
> +    strcpy((char*)p, address);
> +    p += sizeof(address);
> +
> +    *message_sizes_end = p - message;
> +    ++message_sizes_end;
> +
> +    // parse the message we crafted
> +    test_kick();
> +
> +    // initialize a QXL interface
> +    test_add_display_interface(test);
> +    spice_qxl_set_device_info(&test->qxl_instance, "pci/0/1.2", 0,
> 2);
> +
> +    // build the buffer to send to the agent for display information
> +    SpiceMarshaller *m = spice_marshaller_new();
> +    reds_marshall_device_display_info(test->server, m);
> +    int to_free;
> +    size_t buf_len;
> +    uint8_t *buf = spice_marshaller_linearize(m, 0, &buf_len,
> &to_free);
> +
> +    // check output buffer
> +    static const uint8_t expected_buffer[] = {
> +          3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
>   0,
> +         10,  0,  0,  0,112, 99,105, 47, 48, 47, 49, 46,
> 50,  0,  0,  0,
> +          0,  0,  1,  0,  0,  0,  1,  0,  0,  0, 10,  0,  0,  0,112,
> 99,
> +        105, 47, 48, 47, 49, 46,
> 50,  0,  0,  0,  0,  0,  4,  3,  2,  1,
> +         13, 12, 11, 10, 12,  0,  0,  0,112, 99,105, 47, 97, 47, 98,
> 46,
> +         99,100,101,  0
> +    };
> +    g_assert_cmpint(buf_len, ==, sizeof(expected_buffer));
> +    g_assert_true(memcmp(buf, expected_buffer, buf_len) == 0);
> +
> +    if (to_free) {
> +        free(buf);
> +    }
> +    spice_marshaller_destroy(m);
> +}
> +
>  static void test_add(const char *name, void (*func)(TestFixture *,
> gconstpointer), gconstpointer arg)
>  {
>      g_test_add(name, TestFixture, arg, test_stream_device_setup,
> func, test_stream_device_teardown);
> @@ -516,6 +567,7 @@ int main(int argc, char *argv[])
>               test_stream_device_huge_data, NULL);
>      test_add("/server/stream-device-data-message",
>               test_stream_device_data_message, NULL);
> +    test_add("/server/display-info", test_display_info, NULL);
>  
>      return g_test_run();
>  }



More information about the Spice-devel mailing list