summaryrefslogtreecommitdiff
path: root/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c
diff options
context:
space:
mode:
Diffstat (limited to 'testing/fulltests/unit-tests/T005table_dataset_cagentlib.c')
-rw-r--r--testing/fulltests/unit-tests/T005table_dataset_cagentlib.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c b/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c
new file mode 100644
index 0000000..cac940e
--- /dev/null
+++ b/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c
@@ -0,0 +1,58 @@
+/* HEADER Testing table_dataset */
+
+/*
+ * Note: the primary purpose of this unit test is to verify whether all memory
+ * that is allocated for storing a table dataset is freed properly. Feel free
+ * to extend this unit test such that it tests more of the table dataset code.
+ */
+
+enum { COL3 = 2, COL4 = 3, COL5 = 4, };
+
+static const oid Oid[] = { 1, 3, 6, 1, 3, 277 };
+netsnmp_table_data_set* tds;
+netsnmp_handler_registration* th;
+netsnmp_table_row* row;
+int32_t ival;
+int32_t i, j;
+
+init_agent("snmpd");
+init_snmp("snmpd");
+
+tds = netsnmp_create_table_data_set("table_dataset unit-test");
+OK(tds, "table data set creation");
+
+netsnmp_table_dataset_add_index(tds, ASN_INTEGER);
+netsnmp_table_dataset_add_index(tds, ASN_INTEGER);
+netsnmp_table_set_add_default_row(tds, COL3, ASN_INTEGER, FALSE, NULL, 0);
+netsnmp_table_set_add_default_row(tds, COL4, ASN_COUNTER, FALSE, NULL, 0);
+netsnmp_table_set_add_default_row(tds, COL5, ASN_OCTET_STR, FALSE, NULL, 0);
+
+th = netsnmp_create_handler_registration("unit-test handler", NULL, Oid,
+ OID_LENGTH(Oid), HANDLER_CAN_RWRITE);
+OK(th, "table handler registration");
+
+OK(netsnmp_register_table_data_set(th, tds, NULL) == SNMPERR_SUCCESS,
+ "table data set registration");
+
+for (i = 1; i <= 2; i++) {
+ for (j = 1; j <= 2; j++) {
+ row = netsnmp_create_table_data_row();
+ netsnmp_table_row_add_index(row, ASN_INTEGER, &i, sizeof(i));
+ netsnmp_table_row_add_index(row, ASN_INTEGER, &j, sizeof(j));
+ netsnmp_table_dataset_add_row(tds, row);
+
+ ival = 10 * i + j;
+ OK(netsnmp_set_row_column(row, COL3, ASN_INTEGER, &ival, sizeof(ival))
+ == SNMPERR_SUCCESS, "set INTEGER column");
+ OK(netsnmp_set_row_column(row, COL5, ASN_OCTET_STR, "test",
+ sizeof("test") - 1)
+ == SNMPERR_SUCCESS, "set OCTET_STR column");
+ }
+}
+
+netsnmp_delete_table_data_set(tds);
+
+snmp_shutdown("snmpd");
+shutdown_agent();
+
+OK(TRUE, "done");