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>master
parent
e189a0bda8
commit
20faa27c2b
@ -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() |
Loading…
Reference in new issue