]> git.puffer.fish Git - mirror/frr.git/commitdiff
tests: add test for new northbound get function 17783/head
authorChristian Hopps <chopps@labn.net>
Thu, 19 Dec 2024 13:58:03 +0000 (07:58 -0600)
committerChristian Hopps <chopps@labn.net>
Tue, 7 Jan 2025 12:01:46 +0000 (07:01 -0500)
Signed-off-by: Christian Hopps <chopps@labn.net>
tests/lib/northbound/test_oper_data.c
tests/lib/northbound/test_oper_data.refout
yang/frr-test-module.yang

index 3d700d8a19b12d58115318c4313997e466a4f346..0b334c6522c837b525e66b78738b5e59f26ecc24 100644 (file)
@@ -119,6 +119,26 @@ static const void *frr_test_module_vrfs_vrf_interfaces_interface_get_next(
        return node;
 }
 
+/*
+ * XPath: /frr-test-module:frr-test-module/vrfs/vrf/interfaces/interface-new
+ */
+static enum nb_error frr_test_module_vrfs_vrf_interfaces_interface_new_get(
+       const struct nb_node *nb_node, const void *parent_list_entry, struct lyd_node *parent)
+{
+       const struct lysc_node *snode = nb_node->snode;
+       const struct tvrf *vrf;
+       struct listnode *node;
+       const char *interface;
+       LY_ERR err;
+
+       vrf = listgetdata((struct listnode *)parent_list_entry);
+       for (ALL_LIST_ELEMENTS_RO(vrf->interfaces, node, interface)) {
+               err = lyd_new_term(parent, snode->module, snode->name, interface, false, NULL);
+               assert(err == LY_SUCCESS);
+       }
+       return NB_OK;
+}
+
 /*
  * XPath: /frr-test-module:frr-test-module/vrfs/vrf/routes/route
  */
@@ -228,10 +248,19 @@ frr_test_module_c1value_get_elem(struct nb_cb_get_elem_args *args)
 /*
  * XPath: /frr-test-module:frr-test-module/c2cont/c2value
  */
-static struct yang_data *
-frr_test_module_c2cont_c2value_get_elem(struct nb_cb_get_elem_args *args)
+static enum nb_error frr_test_module_c2cont_c2value_get(const struct nb_node *nb_node,
+                                                       const void *parent_list_entry,
+                                                       struct lyd_node *parent)
 {
-       return yang_data_new_uint32(args->xpath, 0xAB010203);
+       const struct lysc_node *snode = nb_node->snode;
+       uint32_t value = 0xAB010203;
+       LY_ERR err;
+
+       err = lyd_new_term_bin(parent, snode->module, snode->name, &value, sizeof(value),
+                              LYD_NEW_PATH_UPDATE, NULL);
+       assert(err == LY_SUCCESS);
+
+       return NB_OK;
 }
 
 /* clang-format off */
@@ -253,6 +282,10 @@ const struct frr_yang_module_info frr_test_module_info = {
                        .cbs.get_elem = frr_test_module_vrfs_vrf_interfaces_interface_get_elem,
                        .cbs.get_next = frr_test_module_vrfs_vrf_interfaces_interface_get_next,
                },
+               {
+                       .xpath = "/frr-test-module:frr-test-module/vrfs/vrf/interfaces/interface-new",
+                       .cbs.get = frr_test_module_vrfs_vrf_interfaces_interface_new_get,
+               },
                {
                        .xpath = "/frr-test-module:frr-test-module/vrfs/vrf/routes/route",
                        .cbs.get_next = frr_test_module_vrfs_vrf_routes_route_get_next,
@@ -287,7 +320,7 @@ const struct frr_yang_module_info frr_test_module_info = {
                },
                {
                        .xpath = "/frr-test-module:frr-test-module/c2cont/c2value",
-                       .cbs.get_elem = frr_test_module_c2cont_c2value_get_elem,
+                       .cbs.get = frr_test_module_c2cont_c2value_get,
                },
                {
                        .xpath = NULL,
index 7c565641431c8040093f6763ae1c7d2cc9e7672b..eadb6396458f5a6e13eca4dd277f635ce1af0d21 100644 (file)
@@ -11,6 +11,12 @@ test# show yang operational-data /frr-test-module:frr-test-module
               "eth1",\r
               "eth2",\r
               "eth3"\r
+            ],\r
+            "interface-new": [\r
+              "eth0",\r
+              "eth1",\r
+              "eth2",\r
+              "eth3"\r
             ]\r
           },\r
           "routes": {\r
@@ -65,6 +71,12 @@ test# show yang operational-data /frr-test-module:frr-test-module
               "eth1",\r
               "eth2",\r
               "eth3"\r
+            ],\r
+            "interface-new": [\r
+              "eth0",\r
+              "eth1",\r
+              "eth2",\r
+              "eth3"\r
             ]\r
           },\r
           "routes": {\r
index dcf204a9565612814ce1d56edece46b953ef4e4f..90086d05a273745fc6003ff3f6c8752a7c2aa3b0 100644 (file)
@@ -60,6 +60,9 @@ module frr-test-module {
           leaf-list interface {
             type frr-interface:interface-ref;
           }
+          leaf-list interface-new {
+            type frr-interface:interface-ref;
+          }
         }
         container routes {
           list route {