From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 12/13] log: test: Add a pytest for logging
Date: Sat, 16 Sep 2017 15:23:25 -0600 [thread overview]
Message-ID: <20170916212331.170463-13-sjg@chromium.org> (raw)
In-Reply-To: <20170916212331.170463-1-sjg@chromium.org>
Add a test which tries out various filters and options to make sure that
logging works as expected.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
test/py/tests/test_log.py | 106 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 106 insertions(+)
create mode 100644 test/py/tests/test_log.py
diff --git a/test/py/tests/test_log.py b/test/py/tests/test_log.py
new file mode 100644
index 0000000000..d5a01df357
--- /dev/null
+++ b/test/py/tests/test_log.py
@@ -0,0 +1,106 @@
+# Copyright (c) 2016, Google Inc.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+# U-Boot Verified Boot Test
+
+"""
+This tests U-Boot logging. It uses the 'log test' command with various options
+and checks that the output is correct.
+"""
+
+import pytest
+
+LOGL_FIRST, LOGL_WARN, LOGL_INFO = (0, 3, 5)
+
+def test_log(u_boot_console):
+ """Test that U-Boot logging works correctly."""
+ def check_log_entries(lines, mask, max_level=LOGL_INFO):
+ """Check that the expected log records appear in the output
+
+ Args:
+ lines: iterator containing lines to check
+ mask: bit mask to select which lines to check for:
+ bit 0: standard log line
+ bit 1: _log line
+ max_level: maximum log level to expect in the output
+ """
+ for i in range(max_level):
+ if mask & 1:
+ assert 'log %d' % i == lines.next()
+ if mask & 3:
+ assert '_log %d' % i == lines.next()
+
+ def run_test(testnum):
+ """Run a particular test number (the 'log test' command)
+
+ Args:
+ testnum: Test number to run
+ Returns:
+ iterator containing the lines output from the command
+ """
+
+ with cons.log.section('basic'):
+ output = u_boot_console.run_command('log test %d' % testnum)
+ split = output.replace('\r', '').splitlines()
+ lines = iter(split)
+ assert 'test %d' % testnum == lines.next()
+ return lines
+
+ def test0():
+ lines = run_test(0)
+ assert 'error' == lines.next()
+ check_log_entries(lines, 3)
+
+ def test1():
+ lines = run_test(1)
+ check_log_entries(lines, 3)
+
+ def test2():
+ lines = run_test(2)
+ assert 'error' == lines.next()
+
+ def test3():
+ lines = run_test(3)
+ check_log_entries(lines, 2)
+
+ def test4():
+ lines = run_test(4)
+ assert next(lines, None) == None
+
+ def test5():
+ lines = run_test(5)
+ check_log_entries(lines, 2)
+
+ def test6():
+ lines = run_test(6)
+ assert 'error' == lines.next()
+ check_log_entries(lines, 3)
+
+ def test7():
+ lines = run_test(7)
+ assert 'error' == lines.next()
+ check_log_entries(lines, 3, LOGL_WARN)
+
+ def test8():
+ lines = run_test(8)
+ assert 'error' == lines.next()
+ check_log_entries(lines, 3)
+
+ def test9():
+ lines = run_test(8)
+ assert 'error' == lines.next()
+ check_log_entries(lines, 3)
+
+ # TODO(sjg at chromium.org): Consider structuring this as separate tests
+ cons = u_boot_console
+ test0()
+ test1()
+ test2()
+ test3()
+ test4()
+ test5()
+ test6()
+ test7()
+ test8()
+ test9()
--
2.14.1.690.gbb1197296e-goog
next prev parent reply other threads:[~2017-09-16 21:23 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-16 21:23 [U-Boot] [PATCH 00/13] log: Add a new logging feature Simon Glass
2017-09-16 21:23 ` [U-Boot] [PATCH 01/13] Revert "sandbox: remove os_putc() and os_puts()" Simon Glass
2017-09-17 12:48 ` Bin Meng
2017-09-17 17:55 ` Simon Glass
2017-09-16 21:23 ` [U-Boot] [PATCH 02/13] Revert "sandbox: Drop special case console code for sandbox" Simon Glass
2017-09-17 12:50 ` Bin Meng
2017-09-17 17:55 ` Simon Glass
2017-09-16 21:23 ` [U-Boot] [PATCH 03/13] Move debug and logging support to a separate header Simon Glass
2017-09-17 12:52 ` Bin Meng
2017-09-16 21:23 ` [U-Boot] [PATCH 04/13] mtdparts: Correct use of debug() Simon Glass
2017-09-17 12:54 ` Bin Meng
2017-09-16 21:23 ` [U-Boot] [PATCH 05/13] Drop the log buffer Simon Glass
2017-09-17 12:58 ` Bin Meng
2017-09-16 21:23 ` [U-Boot] [PATCH 06/13] log: Add an implemention of logging Simon Glass
2017-09-18 3:45 ` Bin Meng
2017-09-20 13:50 ` Simon Glass
2017-09-20 14:41 ` Bin Meng
2017-09-20 14:51 ` Dr. Philipp Tomsich
2017-09-21 4:58 ` Simon Glass
2017-09-22 13:37 ` Bin Meng
2017-09-25 2:14 ` Simon Glass
2017-09-20 2:51 ` Masahiro Yamada
2017-09-20 13:49 ` Simon Glass
2017-09-20 14:37 ` Dr. Philipp Tomsich
2017-09-20 17:34 ` Masahiro Yamada
2017-09-20 17:51 ` Dr. Philipp Tomsich
2017-09-27 16:19 ` Masahiro Yamada
2017-09-20 17:19 ` Masahiro Yamada
2017-09-26 19:10 ` Simon Glass
2017-09-27 17:11 ` Masahiro Yamada
2017-09-28 12:39 ` Simon Glass
2017-09-16 21:23 ` [U-Boot] [PATCH 07/13] log: Add a console driver Simon Glass
2017-09-18 3:45 ` Bin Meng
2017-09-26 19:10 ` Simon Glass
2017-09-16 21:23 ` [U-Boot] [PATCH 08/13] log: Add a 'log level' command Simon Glass
2017-09-18 3:46 ` Bin Meng
2017-09-16 21:23 ` [U-Boot] [PATCH 09/13] log: Add a test command Simon Glass
2017-09-18 3:47 ` Bin Meng
2017-09-16 21:23 ` [U-Boot] [PATCH 10/13] log: Plumb logging into the init sequence Simon Glass
2017-09-18 3:47 ` Bin Meng
2017-09-16 21:23 ` [U-Boot] [PATCH 11/13] log: sandbox: Enable logging Simon Glass
2017-09-18 3:47 ` Bin Meng
2017-09-16 21:23 ` Simon Glass [this message]
2017-09-16 21:23 ` [U-Boot] [PATCH 13/13] log: Add documentation Simon Glass
2017-09-18 3:47 ` Bin Meng
2017-09-20 3:04 ` Masahiro Yamada
2017-09-20 13:49 ` Simon Glass
2017-09-20 2:32 ` [U-Boot] [PATCH 00/13] log: Add a new logging feature Masahiro Yamada
2017-09-20 20:20 ` Heinrich Schuchardt
2017-09-21 4:58 ` Simon Glass
2017-09-20 19:55 ` Wolfgang Denk
2017-09-21 4:58 ` Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170916212331.170463-13-sjg@chromium.org \
--to=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox