102 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
| # 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()
 |