test: log: test message continuation
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sat, 17 Oct 2020 12:31:59 +0000 (14:31 +0200)
committerTom Rini <trini@konsulko.com>
Tue, 27 Oct 2020 17:50:53 +0000 (13:50 -0400)
Provide a unit test checking that a continuation message will use the same
log level and log category as the previous message.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
test/log/Makefile
test/log/cont_test.c [new file with mode: 0644]

index 52e2f7b..fdf5295 100644 (file)
@@ -13,7 +13,9 @@ obj-$(CONFIG_LOG_SYSLOG) += syslog_test.o
 obj-$(CONFIG_LOG_SYSLOG) += syslog_test_ndebug.o
 endif
 
-ifndef CONFIG_LOG
+ifdef CONFIG_LOG
+obj-$(CONFIG_CONSOLE_RECORD) += cont_test.o
+else
 obj-$(CONFIG_CONSOLE_RECORD) += nolog_test.o
 endif
 
diff --git a/test/log/cont_test.c b/test/log/cont_test.c
new file mode 100644 (file)
index 0000000..68ca1d2
--- /dev/null
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (c) 2020, Heinrich Schuchardt <xypron.glpk@gmx.de>
+ *
+ * Test continuation of log messages.
+ */
+
+#include <common.h>
+#include <console.h>
+#include <test/log.h>
+#include <test/test.h>
+#include <test/suites.h>
+#include <test/ut.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define BUFFSIZE 64
+
+static int log_test_cont(struct unit_test_state *uts)
+{
+       int log_fmt;
+       int log_level;
+
+       log_fmt = gd->log_fmt;
+       log_level = gd->default_log_level;
+
+       /* Write two messages, the second continuing the first */
+       gd->log_fmt = (1 << LOGF_CAT) | (1 << LOGF_LEVEL) | (1 << LOGF_MSG);
+       gd->default_log_level = LOGL_INFO;
+       console_record_reset_enable();
+       log(LOGC_ARCH, LOGL_ERR, "ea%d ", 1);
+       log(LOGC_CONT, LOGL_CONT, "cc%d\n", 2);
+       gd->default_log_level = log_level;
+       gd->log_fmt = log_fmt;
+       gd->flags &= ~GD_FLG_RECORD;
+       ut_assertok(ut_check_console_line(uts, "ERR.arch, ea1 ERR.arch, cc2"));
+       ut_assertok(ut_check_console_end(uts));
+
+       /* Write a third message which is not a continuation */
+       gd->log_fmt = (1 << LOGF_CAT) | (1 << LOGF_LEVEL) | (1 << LOGF_MSG);
+       gd->default_log_level = LOGL_INFO;
+       console_record_reset_enable();
+       log(LOGC_EFI, LOGL_INFO, "ie%d\n", 3);
+       gd->default_log_level = log_level;
+       gd->log_fmt = log_fmt;
+       gd->flags &= ~GD_FLG_RECORD;
+       ut_assertok(ut_check_console_line(uts, "INFO.efi, ie3"));
+       ut_assertok(ut_check_console_end(uts));
+
+       return 0;
+}
+LOG_TEST(log_test_cont);