
On Mon, 20 Nov 2017 15:33:34 -0700 Simon Glass sjg@chromium.org wrote:
Add a test which tries out various filters and options to make sure that logging works as expected.
Reviewed-by: Lukasz Majewski lukma@denx.de
Signed-off-by: Simon Glass sjg@chromium.org
Changes in v3: None Changes in v2:
- Change log levels to match new header
- Only execute log tests if CONFIG_LOG is enabled
- Rename LOGL_WARN to LOGL_WARNING
MAINTAINERS | 1 + test/py/tests/test_log.py | 101 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 test/py/tests/test_log.py
diff --git a/MAINTAINERS b/MAINTAINERS index 47f68651a7c..09ff9e76df9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -298,6 +298,7 @@ T: git git://git.denx.de/u-boot.git F: common/log.c F: cmd/log.c F: test/log/log_test.c +F: test/py/tests/test_log.py
MICROBLAZE M: Michal Simek monstr@monstr.eu diff --git a/test/py/tests/test_log.py b/test/py/tests/test_log.py new file mode 100644 index 00000000000..fa9a25e8dc0 --- /dev/null +++ b/test/py/tests/test_log.py @@ -0,0 +1,101 @@ +# 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_WARNING, LOGL_INFO = (0, 4, 6)
+@pytest.mark.buildconfigspec('log') +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)
check_log_entries(lines, 3)
- def test1():
lines = run_test(1)
check_log_entries(lines, 3)
- def test2():
lines = run_test(2)
- 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)
check_log_entries(lines, 3)
- def test7():
lines = run_test(7)
check_log_entries(lines, 3, LOGL_WARNING)
- def test8():
lines = run_test(8)
check_log_entries(lines, 3)
- def test9():
lines = run_test(9)
check_log_entries(lines, 3)
- # TODO(sjg@chromium.org): Consider structuring this as separate
tests
- cons = u_boot_console
- test0()
- test1()
- test2()
- test3()
- test4()
- test5()
- test6()
- test7()
- test8()
- test9()
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de