|
@@ -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()
|