public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Lukasz Majewski <lukma@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 13/14] log: test: Add a pytest for logging
Date: Tue, 21 Nov 2017 11:03:46 +0100	[thread overview]
Message-ID: <20171121110346.36c741fc@jawa> (raw)
In-Reply-To: <20171120223335.45852-14-sjg@chromium.org>

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)
> +
> + 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>

  reply	other threads:[~2017-11-21 10:03 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-20 22:33 [U-Boot] [PATCH v3 00/14] log: Add a new logging feature Simon Glass
2017-11-20 22:33 ` [U-Boot] [PATCH v3 01/14] Revert "sandbox: remove os_putc() and os_puts()" Simon Glass
2017-11-20 22:33 ` [U-Boot] [PATCH v3 02/14] sandbox: Adjust pre-console address to avoid conflict Simon Glass
2017-11-20 22:33 ` [U-Boot] [PATCH v3 03/14] Revert "sandbox: Drop special case console code for sandbox" Simon Glass
2017-11-20 22:33 ` [U-Boot] [PATCH v3 04/14] Move debug and logging support to a separate header Simon Glass
2017-11-21  9:41   ` Lukasz Majewski
2017-11-20 22:33 ` [U-Boot] [PATCH v3 05/14] mtdparts: Correct use of debug() Simon Glass
2017-11-20 22:33 ` [U-Boot] [PATCH v3 06/14] Drop the log buffer Simon Glass
2017-11-20 22:33 ` [U-Boot] [PATCH v3 07/14] log: Add an implemention of logging Simon Glass
2017-11-21  9:55   ` Lukasz Majewski
2017-11-24  1:49     ` Simon Glass
2017-11-20 22:33 ` [U-Boot] [PATCH v3 08/14] log: Add a console driver Simon Glass
2017-11-21  9:57   ` Lukasz Majewski
2017-11-20 22:33 ` [U-Boot] [PATCH v3 09/14] log: Add a 'log level' command Simon Glass
2017-11-21  9:58   ` Lukasz Majewski
2017-11-20 22:33 ` [U-Boot] [PATCH v3 10/14] log: Add a test command Simon Glass
2017-11-21 10:00   ` Lukasz Majewski
2017-11-30  3:35   ` [U-Boot] [U-Boot,v3,10/14] " Tom Rini
2017-11-30 16:27     ` Simon Glass
2017-11-30 16:38       ` Tom Rini
2017-11-20 22:33 ` [U-Boot] [PATCH v3 11/14] log: Plumb logging into the init sequence Simon Glass
2017-11-21 10:01   ` Lukasz Majewski
2017-11-20 22:33 ` [U-Boot] [PATCH v3 12/14] log: sandbox: Enable logging Simon Glass
2017-11-21 10:01   ` Lukasz Majewski
2017-11-20 22:33 ` [U-Boot] [PATCH v3 13/14] log: test: Add a pytest for logging Simon Glass
2017-11-21 10:03   ` Lukasz Majewski [this message]
2017-11-20 22:33 ` [U-Boot] [PATCH v3 14/14] log: Add documentation Simon Glass
2017-11-21 10:19   ` Lukasz Majewski
2018-04-02  8:43     ` 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=20171121110346.36c741fc@jawa \
    --to=lukma@denx.de \
    --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