summaryrefslogtreecommitdiffstats
path: root/src/tests/output-json-stats.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 17:40:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 17:40:14 +0000
commit666c8268e8bdf745f609f7f389e5c67be45f0065 (patch)
tree93948ffd948bd0f56bd3b454cef09bd00a01224e /src/tests/output-json-stats.c
parentAdding upstream version 1:7.0.3. (diff)
downloadsuricata-666c8268e8bdf745f609f7f389e5c67be45f0065.tar.xz
suricata-666c8268e8bdf745f609f7f389e5c67be45f0065.zip
Adding upstream version 1:7.0.4.upstream/1%7.0.4
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/tests/output-json-stats.c')
-rw-r--r--src/tests/output-json-stats.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/tests/output-json-stats.c b/src/tests/output-json-stats.c
new file mode 100644
index 0000000..ac1336e
--- /dev/null
+++ b/src/tests/output-json-stats.c
@@ -0,0 +1,70 @@
+/* Copyright (C) 2024 Open Information Security Foundation
+ *
+ * You can copy, redistribute or modify this Program under the terms of
+ * the GNU General Public License version 2 as published by the Free
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * version 2 along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+#include "../suricata-common.h"
+
+#include "../output-json-stats.h"
+
+#include "../util-unittest.h"
+
+static int OutputJsonStatsTest01(void)
+{
+ StatsRecord global_records[] = { { 0 }, { 0 } };
+ StatsRecord thread_records[2];
+ thread_records[0].name = "capture.kernel_packets";
+ thread_records[0].short_name = "kernel_packets";
+ thread_records[0].tm_name = "W#01-bond0.30";
+ thread_records[0].value = 42;
+ thread_records[1].name = "capture.kernel_drops";
+ thread_records[1].short_name = "kernel_drops";
+ thread_records[1].tm_name = "W#01-bond0.30";
+ thread_records[1].value = 4711;
+
+ StatsTable table = {
+ .nstats = 2,
+ .stats = &global_records[0],
+ .ntstats = 1,
+ .tstats = &thread_records[0],
+ };
+
+ json_t *r = StatsToJSON(&table, JSON_STATS_TOTALS | JSON_STATS_THREADS);
+ if (!r)
+ return 0;
+
+ // Remove variable content
+ json_object_del(r, "uptime");
+
+ char *serialized = json_dumps(r, 0);
+
+ // Cheesy comparison
+ const char *expected = "{\"threads\": {\"W#01-bond0.30\": {\"capture\": {\"kernel_packets\": "
+ "42, \"kernel_drops\": 4711}}}}";
+
+ int cmp_result = strcmp(expected, serialized);
+ if (cmp_result != 0)
+ printf("unexpected result\nexpected=%s\ngot=%s\n", expected, serialized);
+
+ free(serialized);
+ json_decref(r);
+
+ return cmp_result == 0;
+}
+
+void OutputJsonStatsRegisterTests(void)
+{
+ UtRegisterTest("OutputJsonStatsTest01", OutputJsonStatsTest01);
+}