aboutsummaryrefslogtreecommitdiff
path: root/src/core/stats_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/stats_test.c')
-rw-r--r--src/core/stats_test.c96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/core/stats_test.c b/src/core/stats_test.c
new file mode 100644
index 00000000..ba4198ab
--- /dev/null
+++ b/src/core/stats_test.c
@@ -0,0 +1,96 @@
+//
+// Copyright 2022 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2018 Capitar IT Group BV <info@capitar.com>
+//
+// This software is supplied under the terms of the MIT License, a
+// copy of which should be located in the distribution where this
+// file was obtained (LICENSE.txt). A copy of the license may also be
+// found online at https://opensource.org/licenses/MIT.
+//
+
+#include <nuts.h>
+
+#define SECONDS(x) ((x) *1000)
+
+void
+test_stats_socket(void)
+{
+#ifdef NNG_ENABLE_STATS
+ nng_socket s1;
+ nng_socket s2;
+ nng_stat *st1;
+ nng_stat *st2;
+ nng_stat *item;
+ nng_stat *stats;
+
+ NUTS_OPEN(s1);
+ NUTS_OPEN(s2);
+ nng_socket_set_string(s2, NNG_OPT_SOCKNAME, "second");
+ NUTS_MARRY(s1, s2);
+ NUTS_SEND(s1, "ping");
+ NUTS_RECV(s2, "ping");
+
+ nng_stats_get(&stats);
+ NUTS_ASSERT(stats != NULL);
+ st1 = nng_stat_find_socket(stats, s1);
+ st2 = nng_stat_find_socket(stats, s2);
+ NUTS_ASSERT(st1 != NULL);
+ NUTS_ASSERT(st2 != NULL);
+ NUTS_ASSERT(st1 != st2);
+ item = nng_stat_find(st1, "name");
+ NUTS_ASSERT(item != NULL);
+ NUTS_ASSERT(nng_stat_string(item) != NULL);
+ NUTS_MATCH(nng_stat_string(item), "1");
+ item = nng_stat_find(st2, "name");
+ NUTS_ASSERT(item != NULL);
+ NUTS_ASSERT(nng_stat_string(item) != NULL);
+ NUTS_MATCH(nng_stat_string(item), "second");
+ item = nng_stat_find(st1, "tx_msgs");
+ NUTS_ASSERT(item != NULL);
+ NUTS_ASSERT(nng_stat_value(item) == 1);
+ NUTS_ASSERT(nng_stat_unit(item) == NNG_UNIT_MESSAGES);
+ item = nng_stat_find(st2, "rx_msgs");
+ NUTS_ASSERT(item != NULL);
+ NUTS_ASSERT(nng_stat_value(item) == 1);
+ NUTS_ASSERT(nng_stat_unit(item) == NNG_UNIT_MESSAGES);
+ NUTS_CLOSE(s1);
+ NUTS_CLOSE(s2);
+ nng_stats_free(stats);
+#endif
+}
+
+void
+test_stats_dump(void)
+{
+#ifdef NNG_ENABLE_STATS
+ nng_socket s1;
+ nng_socket s2;
+ nng_stat *st1;
+ nng_stat *st2;
+ nng_stat *stats;
+
+ NUTS_OPEN(s1);
+ NUTS_OPEN(s2);
+ nng_socket_set_string(s2, NNG_OPT_SOCKNAME, "second");
+ NUTS_MARRY(s1, s2);
+ NUTS_SEND(s1, "ping");
+ NUTS_RECV(s2, "ping");
+ nng_stats_get(&stats);
+ NUTS_ASSERT(stats != NULL);
+ st1 = nng_stat_find_socket(stats, s1);
+ st2 = nng_stat_find_socket(stats, s2);
+ NUTS_ASSERT(st1 != NULL);
+ NUTS_ASSERT(st2 != NULL);
+ NUTS_ASSERT(st1 != st2);
+ nng_stats_dump(stats);
+ nng_stats_free(stats);
+ NUTS_CLOSE(s1);
+ NUTS_CLOSE(s2);
+#endif
+}
+
+NUTS_TESTS = {
+ { "socket stats", test_stats_socket },
+ { "dump stats", test_stats_dump },
+ { NULL, NULL },
+};