[U-Boot] [PATCH v3 13/14] log: test: Add a pytest for logging
Lukasz Majewski
lukma at denx.de
Tue Nov 21 10:03:46 UTC 2017
On Mon, 20 Nov 2017 15:33:34 -0700
Simon Glass <sjg at 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 at denx.de>
> Signed-off-by: Simon Glass <sjg at 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 at 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)
> +
> + at 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 at 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 at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171121/d772216b/attachment.sig>
More information about the U-Boot
mailing list