From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Tue, 21 Nov 2017 11:03:46 +0100 Subject: [U-Boot] [PATCH v3 13/14] log: test: Add a pytest for logging In-Reply-To: <20171120223335.45852-14-sjg@chromium.org> References: <20171120223335.45852-1-sjg@chromium.org> <20171120223335.45852-14-sjg@chromium.org> Message-ID: <20171121110346.36c741fc@jawa> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Mon, 20 Nov 2017 15:33:34 -0700 Simon Glass wrote: > Add a test which tries out various filters and options to make sure > that logging works as expected. > Reviewed-by: Lukasz Majewski > Signed-off-by: Simon Glass > --- > > 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 > 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: