]> git.proxmox.com Git - mirror_frr.git/commitdiff
tests: add unit test for zlog
authorQuentin Young <qlyoung@cumulusnetworks.com>
Mon, 12 Mar 2018 18:04:56 +0000 (14:04 -0400)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Mon, 12 Mar 2018 19:39:45 +0000 (15:39 -0400)
Just tests zlog_hexdump right now

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
lib/log.c
tests/Makefile.am
tests/lib/test_zlog.c [new file with mode: 0644]
tests/lib/test_zlog.py [new file with mode: 0644]

index 2d856cc777821c7235cab91d8b3982a5f5bf996d..74e7be7c7d76821705d9e923261f0a8bef707a9b 100644 (file)
--- a/lib/log.c
+++ b/lib/log.c
@@ -1092,14 +1092,16 @@ void zlog_hexdump(const void *mem, unsigned int len)
        unsigned long i = 0;
        unsigned int j = 0;
        unsigned int columns = 8;
-       /* 19 bytes for 0xADDRESS: */
-       /* 24 bytes for data; 2 chars plus a space per data byte */
-       /*  1 byte for space */
-       /*  8 bytes for ASCII representation */
-       /*  1 byte for a newline */
-       /* ===================== */
-       /* 53 bytes per 8 bytes of data */
-       /*  1 byte for null term */
+       /*
+        * 19 bytes for 0xADDRESS:
+        * 24 bytes for data; 2 chars plus a space per data byte
+        *  1 byte for space
+        *  8 bytes for ASCII representation
+        *  1 byte for a newline
+        * =====================
+        * 53 bytes per 8 bytes of data
+        *  1 byte for null term
+        */
        size_t bs = ((len / 8) + 1) * 53 + 1;
        char buf[bs];
        char *s = buf;
index f4ab2a126a2903d1bc186f61b71598399d56761b..0c9a5684dad2c18806882988c6a0a5fd93dfca36 100644 (file)
@@ -73,6 +73,7 @@ check_PROGRAMS = \
        lib/test_timer_correctness \
        lib/test_timer_performance \
        lib/test_ttable \
+       lib/test_zlog \
        lib/cli/test_cli \
        lib/cli/test_commands \
        $(TESTS_BGPD) \
@@ -115,9 +116,9 @@ lib_test_heavy_SOURCES = lib/test_heavy.c helpers/c/main.c
 lib_test_memory_SOURCES = lib/test_memory.c
 lib_test_nexthop_iter_SOURCES = lib/test_nexthop_iter.c helpers/c/prng.c
 lib_test_privs_SOURCES = lib/test_privs.c
+lib_test_ringbuf_SOURCES = lib/test_ringbuf.c
 lib_test_srcdest_table_SOURCES = lib/test_srcdest_table.c \
                                  helpers/c/prng.c
-lib_test_ringbuf_SOURCES = lib/test_ringbuf.c
 lib_test_segv_SOURCES = lib/test_segv.c
 lib_test_sig_SOURCES = lib/test_sig.c
 lib_test_stream_SOURCES = lib/test_stream.c
@@ -127,6 +128,7 @@ lib_test_timer_correctness_SOURCES = lib/test_timer_correctness.c \
 lib_test_timer_performance_SOURCES = lib/test_timer_performance.c \
                                      helpers/c/prng.c
 lib_test_ttable_SOURCES = lib/test_ttable.c
+lib_test_zlog_SOURCES = lib/test_zlog.c
 lib_test_zmq_SOURCES = lib/test_zmq.c
 lib_test_zmq_CFLAGS = $(AM_CFLAGS) $(ZEROMQ_CFLAGS)
 lib_cli_test_cli_SOURCES = lib/cli/test_cli.c lib/cli/common_cli.c
@@ -167,6 +169,7 @@ lib_test_table_LDADD = $(ALL_TESTS_LDADD) -lm
 lib_test_timer_correctness_LDADD = $(ALL_TESTS_LDADD)
 lib_test_timer_performance_LDADD = $(ALL_TESTS_LDADD)
 lib_test_ttable_LDADD = $(ALL_TESTS_LDADD)
+lib_test_zlog_LDADD = $(ALL_TESTS_LDADD)
 lib_test_zmq_LDADD = ../lib/libfrrzmq.la $(ALL_TESTS_LDADD) $(ZEROMQ_LIBS)
 lib_cli_test_cli_LDADD = $(ALL_TESTS_LDADD)
 lib_cli_test_commands_LDADD = $(ALL_TESTS_LDADD)
@@ -207,6 +210,7 @@ EXTRA_DIST = \
     lib/test_timer_correctness.py \
     lib/test_ttable.py \
     lib/test_ttable.refout \
+    lib/test_zlog.py \
     ospf6d/test_lsdb.py \
     ospf6d/test_lsdb.in \
     ospf6d/test_lsdb.refout \
diff --git a/tests/lib/test_zlog.c b/tests/lib/test_zlog.c
new file mode 100644 (file)
index 0000000..790e65c
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Zlog tests.
+ * Copyright (C) 2018  Cumulus Networks, Inc.
+ *                     Quentin Young
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * 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 along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+#include <zebra.h>
+#include <memory.h>
+#include "log.h"
+
+/* maximum amount of data to hexdump */
+#define MAXDATA 16384
+
+/*
+ * Test hexdump functionality.
+ *
+ * At the moment, not crashing is considered success.
+ */
+static bool test_zlog_hexdump(void)
+{
+       unsigned int nl = 1;
+
+       do {
+               long d[nl];
+
+               for (unsigned int i = 0; i < nl; i++)
+                       d[i] = random();
+               zlog_hexdump(d, nl * sizeof(long));
+       } while (++nl * sizeof(long) <= MAXDATA);
+
+       return true;
+}
+
+bool (*tests[])(void) = {
+       test_zlog_hexdump,
+};
+
+int main(int argc, char **argv)
+{
+       openzlog("testzlog", "NONE", 0, LOG_CONS | LOG_NDELAY | LOG_PID,
+                LOG_ERR);
+       zlog_set_file("test_zlog.log", LOG_DEBUG);
+
+       for (unsigned int i = 0; i < array_size(tests); i++)
+               if (!tests[i]())
+                       return 1;
+       return 0;
+}
diff --git a/tests/lib/test_zlog.py b/tests/lib/test_zlog.py
new file mode 100644 (file)
index 0000000..2ca2585
--- /dev/null
@@ -0,0 +1,4 @@
+import frrtest
+
+class TestZlog(frrtest.TestMultiOut):
+    program = './test_zlog'