Skip to content

Commit ec58484

Browse files
authored
tests FEATURE param test of edit-data and get-data (#282)
1 parent 3a736e0 commit ec58484

1 file changed

Lines changed: 105 additions & 0 deletions

File tree

tests/client/test_client_messages.c

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,109 @@ test_nc_rpc_subscribe(void **state)
565565
nc_rpc_free(rpc);
566566
}
567567

568+
/* function to check if values of getdata rpc are set correctly */
569+
void
570+
check_getdata(struct nc_rpc *rpc, char *datastore, const char *filter, const char *config_filter,
571+
char **origin_filter, int origin_filter_count, int negated_origin_filter, uint16_t max_depth,
572+
int with_origin, NC_WD_MODE wd_mode)
573+
{
574+
assert_int_equal(nc_rpc_get_type(rpc), NC_RPC_GETDATA);
575+
struct nc_rpc_getdata *rpc_getdata = (struct nc_rpc_getdata*)rpc;
576+
577+
assert_int_equal(rpc_getdata->type, NC_RPC_GETDATA);
578+
assert_string_equal(rpc_getdata->datastore, datastore);
579+
assert_string_equal(rpc_getdata->filter, filter);
580+
assert_string_equal(rpc_getdata->config_filter, config_filter);
581+
assert_string_equal(*rpc_getdata->origin_filter, *origin_filter);
582+
assert_int_equal(rpc_getdata->origin_filter_count, origin_filter_count);
583+
assert_int_equal(rpc_getdata->negated_origin_filter, negated_origin_filter);
584+
assert_int_equal(rpc_getdata->max_depth, max_depth);
585+
assert_int_equal(rpc_getdata->with_origin, with_origin);
586+
assert_int_equal(rpc_getdata->wd_mode, wd_mode);
587+
}
588+
589+
static void
590+
test_nc_rpc_getdata(void **state)
591+
{
592+
(void)state;
593+
struct nc_rpc *rpc = NULL;
594+
595+
/* create getdata rpc with NC_PARAMTYPE_CONST */
596+
char *origin_filters = "origin_filter";
597+
rpc = nc_rpc_getdata("candidate", "filter", "true", &origin_filters, 1, 1, 3, 1, NC_WD_UNKNOWN, NC_PARAMTYPE_CONST);
598+
assert_non_null(rpc);
599+
check_getdata(rpc, "candidate", "filter", "true", &origin_filters, 1, 1, 3, 1, NC_WD_UNKNOWN);
600+
nc_rpc_free(rpc);
601+
602+
/* create getdata rpc with NC_PARAMTYPE_FREE */
603+
char *datastore = strdup("running");
604+
char *filter = strdup("filter");
605+
char *config_filter = strdup("true");
606+
char buf[20] = {0};
607+
char **origin_filter;
608+
int origin_filter_count = 2;
609+
610+
origin_filter = calloc(origin_filter_count, sizeof *origin_filter);
611+
assert_non_null(origin_filter);
612+
for (int i = 0; i < origin_filter_count; i++) {
613+
snprintf(buf, sizeof(buf) - 1, "origin_filter%d", i + 1);
614+
origin_filter[i] = strdup(buf);
615+
}
616+
617+
rpc = nc_rpc_getdata(datastore, filter, config_filter, origin_filter, origin_filter_count, 2, 3, 1, NC_WD_EXPLICIT, NC_PARAMTYPE_FREE);
618+
assert_non_null(rpc);
619+
check_getdata(rpc, datastore, filter, config_filter, origin_filter, origin_filter_count, 2, 3, 1, NC_WD_EXPLICIT);
620+
nc_rpc_free(rpc);
621+
622+
/* create getdata rpc with NC_PARAMTYPE_DUP_AND_FREE */
623+
char *origin_filter1 = "origin_filter1";
624+
rpc = nc_rpc_getdata("startup", "filter1", "false", &origin_filter1, 1, 0, 3, 1, NC_WD_ALL, NC_PARAMTYPE_DUP_AND_FREE);
625+
assert_non_null(rpc);
626+
check_getdata(rpc, "startup", "filter1", "false", &origin_filter1, 1, 0, 3, 1, NC_WD_ALL);
627+
nc_rpc_free(rpc);
628+
}
629+
630+
/* function to check if values of editdata rpc are set correctly */
631+
void
632+
check_editdata(struct nc_rpc *rpc, char *datastore, NC_RPC_EDIT_DFLTOP default_op, const char *edit_content)
633+
{
634+
assert_int_equal(nc_rpc_get_type(rpc), NC_RPC_EDITDATA);
635+
struct nc_rpc_editdata *rpc_editdata = (struct nc_rpc_editdata*)rpc;
636+
637+
assert_int_equal(rpc_editdata->type, NC_RPC_EDITDATA);
638+
assert_string_equal(rpc_editdata->datastore, datastore);
639+
assert_int_equal(rpc_editdata->default_op, default_op);
640+
assert_string_equal(rpc_editdata->edit_cont, edit_content);
641+
}
642+
643+
static void
644+
test_nc_rpc_editdata(void **state)
645+
{
646+
(void)state;
647+
struct nc_rpc *rpc = NULL;
648+
649+
/* create editdata rpc with NC_PARAMTYPE_CONST */
650+
rpc = nc_rpc_editdata("candidate", NC_RPC_EDIT_DFLTOP_UNKNOWN, "edit", NC_PARAMTYPE_CONST);
651+
assert_non_null(rpc);
652+
check_editdata(rpc, "candidate", NC_RPC_EDIT_DFLTOP_UNKNOWN, "edit");
653+
nc_rpc_free(rpc);
654+
655+
/* create editdata rpc with NC_PARAMTYPE_FREE */
656+
char *datastore = strdup("running");
657+
char *edit_cont = strdup("edit_data");
658+
659+
rpc = nc_rpc_editdata(datastore, NC_RPC_EDIT_DFLTOP_MERGE, edit_cont, NC_PARAMTYPE_FREE);
660+
assert_non_null(rpc);
661+
check_editdata(rpc, datastore, NC_RPC_EDIT_DFLTOP_MERGE, edit_cont);
662+
nc_rpc_free(rpc);
663+
664+
/* create editdata rpc with NC_PARAMTYPE_DUP_AND_FREE */
665+
rpc = nc_rpc_editdata("startup", NC_RPC_EDIT_DFLTOP_REPLACE, "edit_cont", NC_PARAMTYPE_DUP_AND_FREE);
666+
assert_non_null(rpc);
667+
check_editdata(rpc, "startup", NC_RPC_EDIT_DFLTOP_REPLACE, "edit_cont");
668+
nc_rpc_free(rpc);
669+
}
670+
568671
int
569672
main(void)
570673
{
@@ -585,6 +688,8 @@ main(void)
585688
cmocka_unit_test_setup_teardown(test_nc_rpc_validate, setup_f, teardown_f),
586689
cmocka_unit_test_setup_teardown(test_nc_rpc_getschema, setup_f, teardown_f),
587690
cmocka_unit_test_setup_teardown(test_nc_rpc_subscribe, setup_f, teardown_f),
691+
cmocka_unit_test_setup_teardown(test_nc_rpc_getdata, setup_f, teardown_f),
692+
cmocka_unit_test_setup_teardown(test_nc_rpc_editdata, setup_f, teardown_f),
588693
};
589694

590695
return cmocka_run_group_tests(tests, NULL, NULL);

0 commit comments

Comments
 (0)