Vladimir Sementsov-Ogievskiy <[email protected]> writes:

> Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
> ---
>  tests/unit/test-vmstate.c | 118 ++++++++++----------------------------
>  1 file changed, 30 insertions(+), 88 deletions(-)
>
> diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c
> index df1fb4c7780..23f31730703 100644
> --- a/tests/unit/test-vmstate.c
> +++ b/tests/unit/test-vmstate.c
> @@ -67,14 +67,9 @@ static QEMUFile *open_test_file(bool write)
>  static void save_vmstate(const VMStateDescription *desc, void *obj)
>  {
>      QEMUFile *f = open_test_file(true);
> -    Error *local_err = NULL;
>  
>      /* Save file with vmstate */
> -    int ret = vmstate_save_state(f, desc, obj, NULL, &local_err);
> -    if (ret) {
> -        error_report_err(local_err);
> -    }
> -    g_assert(!ret);
> +    vmstate_save_vmsd(f, desc, obj, NULL, &error_abort);
>      qemu_put_byte(f, QEMU_VM_EOF);
>      g_assert(!qemu_file_get_error(f));
>      qemu_fclose(f);
> @@ -112,7 +107,6 @@ static int load_vmstate_one(const VMStateDescription 
> *desc, void *obj,
>                              int version, const uint8_t *wire, size_t size)
>  {
>      QEMUFile *f;
> -    int ret;
>      Error *local_err = NULL;
>  
>      f = open_test_file(true);
> @@ -120,15 +114,16 @@ static int load_vmstate_one(const VMStateDescription 
> *desc, void *obj,
>      qemu_fclose(f);
>  
>      f = open_test_file(false);
> -    ret = vmstate_load_state(f, desc, obj, version, &local_err);
> -    if (ret) {
> +    if (!vmstate_load_vmsd(f, desc, obj, version, &local_err)) {
>          error_report_err(local_err);
>          g_assert(qemu_file_get_error(f));
> -    } else{
> -        g_assert(!qemu_file_get_error(f));
> +        qemu_fclose(f);
> +        return -EINVAL;
>      }
> +
> +    g_assert(!qemu_file_get_error(f));
>      qemu_fclose(f);
> -    return ret;
> +    return 0;
>  }
>  
>  
> @@ -362,8 +357,6 @@ static const VMStateDescription vmstate_versioned = {
>  
>  static void test_load_v1(void)
>  {
> -    Error *local_err = NULL;
> -    int ret;
>      uint8_t buf[] = {
>          0, 0, 0, 10,             /* a */
>          0, 0, 0, 30,             /* c */
> @@ -374,10 +367,7 @@ static void test_load_v1(void)
>  
>      QEMUFile *loading = open_test_file(false);
>      TestStruct obj = { .b = 200, .e = 500, .f = 600 };
> -    ret = vmstate_load_state(loading, &vmstate_versioned, &obj, 1, 
> &local_err);
> -    if (ret < 0) {
> -        error_report_err(local_err);
> -    }
> +    vmstate_load_vmsd(loading, &vmstate_versioned, &obj, 1, &error_abort);
>      g_assert(!qemu_file_get_error(loading));
>      g_assert_cmpint(obj.a, ==, 10);
>      g_assert_cmpint(obj.b, ==, 200);
> @@ -390,8 +380,6 @@ static void test_load_v1(void)
>  
>  static void test_load_v2(void)
>  {
> -    Error *local_err = NULL;
> -    int ret;
>      uint8_t buf[] = {
>          0, 0, 0, 10,             /* a */
>          0, 0, 0, 20,             /* b */
> @@ -405,10 +393,7 @@ static void test_load_v2(void)
>  
>      QEMUFile *loading = open_test_file(false);
>      TestStruct obj;
> -    ret = vmstate_load_state(loading, &vmstate_versioned, &obj, 2, 
> &local_err);
> -    if (ret < 0) {
> -        error_report_err(local_err);
> -    }
> +    vmstate_load_vmsd(loading, &vmstate_versioned, &obj, 2, &error_abort);
>      g_assert_cmpint(obj.a, ==, 10);
>      g_assert_cmpint(obj.b, ==, 20);
>      g_assert_cmpint(obj.c, ==, 30);
> @@ -442,16 +427,10 @@ static const VMStateDescription vmstate_skipping = {
>  
>  static void test_save_noskip(void)
>  {
> -    Error *local_err = NULL;
>      QEMUFile *fsave = open_test_file(true);
>      TestStruct obj = { .a = 1, .b = 2, .c = 3, .d = 4, .e = 5, .f = 6,
>                         .skip_c_e = false };
> -    int ret = vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL,
> -                                 &local_err);
> -    if (ret) {
> -        error_report_err(local_err);
> -    }
> -    g_assert(!ret);
> +    vmstate_save_vmsd(fsave, &vmstate_skipping, &obj, NULL, &error_abort);
>      g_assert(!qemu_file_get_error(fsave));
>  
>      uint8_t expected[] = {
> @@ -469,16 +448,10 @@ static void test_save_noskip(void)
>  
>  static void test_save_skip(void)
>  {
> -    Error *local_err = NULL;
>      QEMUFile *fsave = open_test_file(true);
>      TestStruct obj = { .a = 1, .b = 2, .c = 3, .d = 4, .e = 5, .f = 6,
>                         .skip_c_e = true };
> -    int ret = vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL,
> -                                 &local_err);
> -    if (ret) {
> -        error_report_err(local_err);
> -    }
> -    g_assert(!ret);
> +    vmstate_save_vmsd(fsave, &vmstate_skipping, &obj, NULL, &error_abort);
>      g_assert(!qemu_file_get_error(fsave));
>  
>      uint8_t expected[] = {
> @@ -494,8 +467,6 @@ static void test_save_skip(void)
>  
>  static void test_load_noskip(void)
>  {
> -    Error *local_err = NULL;
> -    int ret;
>      uint8_t buf[] = {
>          0, 0, 0, 10,             /* a */
>          0, 0, 0, 20,             /* b */
> @@ -509,10 +480,7 @@ static void test_load_noskip(void)
>  
>      QEMUFile *loading = open_test_file(false);
>      TestStruct obj = { .skip_c_e = false };
> -    ret = vmstate_load_state(loading, &vmstate_skipping, &obj, 2, 
> &local_err);
> -    if (ret < 0) {
> -        error_report_err(local_err);
> -    }
> +    vmstate_load_vmsd(loading, &vmstate_skipping, &obj, 2, &error_abort);
>      g_assert(!qemu_file_get_error(loading));
>      g_assert_cmpint(obj.a, ==, 10);
>      g_assert_cmpint(obj.b, ==, 20);
> @@ -525,8 +493,6 @@ static void test_load_noskip(void)
>  
>  static void test_load_skip(void)
>  {
> -    Error *local_err = NULL;
> -    int ret;
>      uint8_t buf[] = {
>          0, 0, 0, 10,             /* a */
>          0, 0, 0, 20,             /* b */
> @@ -538,10 +504,7 @@ static void test_load_skip(void)
>  
>      QEMUFile *loading = open_test_file(false);
>      TestStruct obj = { .skip_c_e = true, .c = 300, .e = 500 };
> -    ret = vmstate_load_state(loading, &vmstate_skipping, &obj, 2, 
> &local_err);
> -    if (ret < 0) {
> -        error_report_err(local_err);
> -    }
> +    vmstate_load_vmsd(loading, &vmstate_skipping, &obj, 2, &error_abort);
>      g_assert(!qemu_file_get_error(loading));
>      g_assert_cmpint(obj.a, ==, 10);
>      g_assert_cmpint(obj.b, ==, 20);
> @@ -863,8 +826,6 @@ static void test_save_q(void)
>  
>  static void test_load_q(void)
>  {
> -    int ret;
> -    Error *local_err = NULL;
>      TestQtailq obj_q = {
>          .i16 = -512,
>          .i32 = 70000,
> @@ -894,10 +855,7 @@ static void test_load_q(void)
>      TestQtailq tgt;
>  
>      QTAILQ_INIT(&tgt.q);
> -    ret = vmstate_load_state(fload, &vmstate_q, &tgt, 1, &local_err);
> -    if (ret < 0) {
> -        error_report_err(local_err);
> -    }
> +    vmstate_load_vmsd(fload, &vmstate_q, &tgt, 1, &error_abort);
>      char eof = qemu_get_byte(fload);
>      g_assert(!qemu_file_get_error(fload));
>      g_assert_cmpint(tgt.i16, ==, obj_q.i16);
> @@ -1015,29 +973,29 @@ static void destroy_domain(gpointer data)
>      g_free(domain);
>  }
>  
> -static int domain_preload(void *opaque)
> +static bool domain_preload(void *opaque, Error **errp)
>  {
>      TestGTreeDomain *domain = opaque;
>  
>      domain->mappings = g_tree_new_full((GCompareDataFunc)interval_cmp,
>                                         NULL, g_free, g_free);
> -    return 0;
> +    return true;
>  }
>  
> -static int iommu_preload(void *opaque)
> +static bool iommu_preload(void *opaque, Error **errp)
>  {
>      TestGTreeIOMMU *iommu = opaque;
>  
>      iommu->domains = g_tree_new_full((GCompareDataFunc)int_cmp,
>                                       NULL, NULL, destroy_domain);
> -    return 0;
> +    return true;
>  }
>  
>  static const VMStateDescription vmstate_domain = {
>      .name = "domain",
>      .version_id = 1,
>      .minimum_version_id = 1,
> -    .pre_load = domain_preload,
> +    .pre_load_errp = domain_preload,
>      .fields = (const VMStateField[]) {
>          VMSTATE_INT32(id, TestGTreeDomain),
>          VMSTATE_GTREE_V(mappings, TestGTreeDomain, 1,
> @@ -1073,7 +1031,7 @@ static const VMStateDescription vmstate_iommu = {
>      .name = "iommu",
>      .version_id = 1,
>      .minimum_version_id = 1,
> -    .pre_load = iommu_preload,
> +    .pre_load_errp = iommu_preload,
>      .fields = (const VMStateField[]) {
>          VMSTATE_INT32(id, TestGTreeIOMMU),
>          VMSTATE_GTREE_DIRECT_KEY_V(domains, TestGTreeIOMMU, 1,
> @@ -1239,8 +1197,6 @@ static void diff_iommu(TestGTreeIOMMU *iommu1, 
> TestGTreeIOMMU *iommu2)
>  
>  static void test_gtree_load_domain(void)
>  {
> -    Error *local_err = NULL;
> -    int ret;
>      TestGTreeDomain *dest_domain = g_new0(TestGTreeDomain, 1);
>      TestGTreeDomain *orig_domain = create_first_domain();
>      QEMUFile *fload, *fsave;
> @@ -1253,11 +1209,7 @@ static void test_gtree_load_domain(void)
>  
>      fload = open_test_file(false);
>  
> -    ret = vmstate_load_state(fload, &vmstate_domain, dest_domain, 1,
> -                             &local_err);
> -    if (ret < 0) {
> -        error_report_err(local_err);
> -    }
> +    vmstate_load_vmsd(fload, &vmstate_domain, dest_domain, 1, &error_abort);
>      eof = qemu_get_byte(fload);
>      g_assert(!qemu_file_get_error(fload));
>      g_assert_cmpint(orig_domain->id, ==, dest_domain->id);
> @@ -1360,8 +1312,6 @@ static void test_gtree_save_iommu(void)
>  
>  static void test_gtree_load_iommu(void)
>  {
> -    Error *local_err = NULL;
> -    int ret;
>      TestGTreeIOMMU *dest_iommu = g_new0(TestGTreeIOMMU, 1);
>      TestGTreeIOMMU *orig_iommu = create_iommu();
>      QEMUFile *fsave, *fload;
> @@ -1373,10 +1323,7 @@ static void test_gtree_load_iommu(void)
>      qemu_fclose(fsave);
>  
>      fload = open_test_file(false);
> -    ret = vmstate_load_state(fload, &vmstate_iommu, dest_iommu, 1, 
> &local_err);
> -    if (ret < 0) {
> -        error_report_err(local_err);
> -    }
> +    vmstate_load_vmsd(fload, &vmstate_iommu, dest_iommu, 1, &error_abort);
>      eof = qemu_get_byte(fload);
>      g_assert(!qemu_file_get_error(fload));
>      g_assert_cmpint(orig_iommu->id, ==, dest_iommu->id);
> @@ -1498,8 +1445,6 @@ static void test_save_qlist(void)
>  
>  static void test_load_qlist(void)
>  {
> -    Error *local_err = NULL;
> -    int ret;
>      QEMUFile *fsave, *fload;
>      TestQListContainer *orig_container = alloc_container();
>      TestQListContainer *dest_container = g_new0(TestQListContainer, 1);
> @@ -1513,11 +1458,8 @@ static void test_load_qlist(void)
>      qemu_fclose(fsave);
>  
>      fload = open_test_file(false);
> -    ret = vmstate_load_state(fload, &vmstate_container, dest_container, 1,
> -                             &local_err);
> -    if (ret < 0) {
> -        error_report_err(local_err);
> -    }
> +    vmstate_load_vmsd(fload, &vmstate_container, dest_container, 1,
> +                      &error_abort);
>      eof = qemu_get_byte(fload);
>      g_assert(!qemu_file_get_error(fload));
>      g_assert_cmpint(eof, ==, QEMU_VM_EOF);
> @@ -1534,22 +1476,22 @@ typedef struct TmpTestStruct {
>      int64_t diff;
>  } TmpTestStruct;
>  
> -static int tmp_child_pre_save(void *opaque)
> +static bool tmp_child_pre_save(void *opaque, Error **errp)
>  {
>      struct TmpTestStruct *tts = opaque;
>  
>      tts->diff = tts->parent->b - tts->parent->a;
>  
> -    return 0;
> +    return true;
>  }
>  
> -static int tmp_child_post_load(void *opaque, int version_id)
> +static bool tmp_child_post_load(void *opaque, int version_id, Error **errp)
>  {
>      struct TmpTestStruct *tts = opaque;
>  
>      tts->parent->b = tts->parent->a + tts->diff;
>  
> -    return 0;
> +    return true;
>  }
>  
>  static const VMStateDescription vmstate_tmp_back_to_parent = {
> @@ -1562,8 +1504,8 @@ static const VMStateDescription 
> vmstate_tmp_back_to_parent = {
>  
>  static const VMStateDescription vmstate_tmp_child = {
>      .name = "test/tmp_child",
> -    .pre_save = tmp_child_pre_save,
> -    .post_load = tmp_child_post_load,
> +    .pre_save_errp = tmp_child_pre_save,
> +    .post_load_errp = tmp_child_post_load,
>      .fields = (const VMStateField[]) {
>          VMSTATE_INT64(diff, TmpTestStruct),
>          VMSTATE_STRUCT_POINTER(parent, TmpTestStruct,

Reviewed-by: Fabiano Rosas <[email protected]>

Reply via email to