From cb9274fe84c446e98c49e8e319e10080d2cdf4b8 Mon Sep 17 00:00:00 2001 From: Frank Rimpler Date: Wed, 13 Mar 2019 16:40:34 +0000 Subject: [PATCH] fix and testcase for empty deviation parameter --- schemas/module-a-dv.yang | 16 ++++++++++++++++ schemas/module-a-dv2.yang | 21 +++++++++++++++++++++ schemas/module-a.yang | 23 +++++++++++++++++++++++ src/session.c | 1 + tests/test_server_thread.c | 9 +++++++++ 5 files changed, 70 insertions(+) create mode 100644 schemas/module-a-dv.yang create mode 100644 schemas/module-a-dv2.yang create mode 100644 schemas/module-a.yang diff --git a/schemas/module-a-dv.yang b/schemas/module-a-dv.yang new file mode 100644 index 00000000..20f0f465 --- /dev/null +++ b/schemas/module-a-dv.yang @@ -0,0 +1,16 @@ +module module-a-dv { + + namespace "urn:jmu:params:xml:ns:yang:module-a-dv"; + prefix dv; + + import module-a { + prefix a; + } + + description + "Contains some deviations to module-a"; + + deviation "/a:top/a:hidden" { + deviate not-supported; + } +} \ No newline at end of file diff --git a/schemas/module-a-dv2.yang b/schemas/module-a-dv2.yang new file mode 100644 index 00000000..906d2222 --- /dev/null +++ b/schemas/module-a-dv2.yang @@ -0,0 +1,21 @@ +module module-a-dv2 { + + namespace "urn:jmu:params:xml:ns:yang:module-a-dv2"; + prefix dv2; + + import module-a { + prefix a; + } + + description + "Contains some deviations to module-a"; + + deviation "/a:top/a:type" { + deviate add { + default "admin"; + must "count(.) = 1"; + } + } + +} + diff --git a/schemas/module-a.yang b/schemas/module-a.yang new file mode 100644 index 00000000..39a5ae21 --- /dev/null +++ b/schemas/module-a.yang @@ -0,0 +1,23 @@ +module module-a { + + namespace "urn:jmu:params:xml:ns:yang:module-a"; + prefix a; + + description "This is a simple user module"; + + container top { + + leaf name { + type string; + } + + leaf type { + type string; + } + + leaf hidden { + type boolean; + } + + } +} \ No newline at end of file diff --git a/src/session.c b/src/session.c index fe90fa92..8c607243 100644 --- a/src/session.c +++ b/src/session.c @@ -1032,6 +1032,7 @@ nc_server_get_cpblts_version(struct ly_ctx *ctx, LYS_VERSION version) strcat(str, "&deviations="); str_len += 12; dev_count = 0; + v = 0; while ((devmod = ly_ctx_get_module_iter(ctx, &v))) { if (devmod == mod) { continue; diff --git a/tests/test_server_thread.c b/tests/test_server_thread.c index 5a6040e8..89b76740 100644 --- a/tests/test_server_thread.c +++ b/tests/test_server_thread.c @@ -543,6 +543,9 @@ tls_client_thread(void *arg) session = nc_connect_tls("127.0.0.1", 6501, NULL); nc_assert(session); + /* verify some capabilities */ + nc_assert( nc_session_cpblt(session, "urn:jmu:params:xml:ns:yang:module-a?module=module-a&deviations=module-a-dv,module-a-dv2") ); + nc_session_free(session, NULL); fprintf(stdout, "TLS client finished.\n"); @@ -657,6 +660,12 @@ main(void) ctx = ly_ctx_new(TESTS_DIR"/../schemas", 0); nc_assert(ctx); ly_ctx_load_module(ctx, "ietf-netconf", NULL); + + /* load some application models with deviations */ + nc_assert( ly_ctx_load_module(ctx, "module-a", NULL) ); + nc_assert( ly_ctx_load_module(ctx, "module-a-dv", NULL) ); + nc_assert( ly_ctx_load_module(ctx, "module-a-dv2", NULL) ); + nc_server_init(ctx); pthread_barrier_init(&barrier, NULL, thread_count);