Add tests for less/more than the value on destination. Signed-off-by: Juan Quintela <quint...@redhat.com> --- include/migration/vmstate.h | 4 ++-- tests/test-vmstate.c | 25 ++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 9eec546..8707c4f 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -585,8 +585,8 @@ extern const VMStateInfo vmstate_info_bitmap; #define VMSTATE_INT32_EQUAL(_f, _s) \ VMSTATE_SINGLE_TEST(_f, _s, NULL, 0, vmstate_info_int32_equal, int32_t) -#define VMSTATE_INT32_LE(_f, _s) \ - VMSTATE_SINGLE(_f, _s, 0, vmstate_info_int32_le, int32_t) +#define VMSTATE_INT32_LE(_f, _s) \ + VMSTATE_SINGLE_TEST(_f, _s, NULL, 0, vmstate_info_int32_le, int32_t) #define VMSTATE_FLOAT64(_f, _s) \ diff --git a/tests/test-vmstate.c b/tests/test-vmstate.c index 70f27f8..d52f722 100644 --- a/tests/test-vmstate.c +++ b/tests/test-vmstate.c @@ -353,7 +353,8 @@ static const VMStateDescription vmstate_simple_compare = { VMSTATE_UINT16_EQUAL_TEST(u16_3, TestSimple, test_true), VMSTATE_UINT32_EQUAL(u32_1, TestSimple), VMSTATE_UINT64_EQUAL(u64_1, TestSimple), - VMSTATE_INT32_EQUAL(i32_1, TestSimple), + VMSTATE_INT32_EQUAL(i32_2, TestSimple), + VMSTATE_INT32_LE(i32_1, TestSimple), VMSTATE_END_OF_LIST() } }; @@ -364,6 +365,7 @@ uint8_t wire_simple_compare[] = { /* u16_3 */ 0x02, 0x00, /* u32_1 */ 0x00, 0x01, 0x11, 0x70, /* u64_1 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xf4, 0x7c, + /* i32_2 */ 0xff, 0xfe, 0xee, 0x90, /* i32_1 */ 0x00, 0x01, 0x11, 0x70, QEMU_VM_EOF, /* just to ensure we won't get EOF reported prematurely */ }; @@ -419,6 +421,27 @@ static void test_simple_compare(void) FAILURE(vmstate_load_state(loading, &vmstate_simple_compare, &obj, 1)); g_assert(!qemu_file_get_error(loading)); qemu_fclose(loading); + + /* testing less equal */ + + loading = open_test_file(false); + memcpy(&obj, &obj_simple, sizeof(obj)); + /* value on the wire is bigger, so fail */ + obj.i32_1 = 8000; + + FAILURE(vmstate_load_state(loading, &vmstate_simple_compare, &obj, 1)); + g_assert(!qemu_file_get_error(loading)); + qemu_fclose(loading); + + loading = open_test_file(false); + memcpy(&obj, &obj_simple, sizeof(obj)); + /* value on the wire is lower, so success */ + obj.i32_1 = 80000; + + SUCCESS(vmstate_load_state(loading, &vmstate_simple_compare, &obj, 1)); + g_assert(!qemu_file_get_error(loading)); + qemu_fclose(loading); + } #undef FIELD_ASSERT -- 1.9.0