mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-07 13:23:20 +09:00
![Stephen Warren](/assets/img/avatar_default.png)
Implement three improvements to the HTML log file: - Ability to expand/contract sections. All passing sections are contracted at file load time so the user can concentrate on issues requiring action. - The overall status report is copied to the top of the log for easy access. - Add links from the status report to the test logs, for easy navigation. This all relies on Javascript and the jquery library. If the user doesn't have Javascript enabled, or jquery can't be downloaded, the log should look and behave identically to how it did before this patch. A few notes on the diff: - A few more 'with log.section("xxx")' were added, so that all stream blocks are kept within a section block for consistent HTML entity nesting structure. This changed indentation in a few places, making the diff look slightly larger. - HTML entity IDs are cleaned up. We assign simple incrementing integer IDs now, rather than using mangled test names which were possibly invalid. - Sections and streams now use common CSS class names (in addition to the current separate class names) to more easily share the new behaviour. This also reduces the CSS file size since rules don't need to be duplicated. - An "OK" status is logged after some external command executions so that make and flash steps are auto-contracted at log file load time, assuming they passed. Signed-off-by: Stephen Warren <swarren@nvidia.com>
68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
# Copyright (c) 2015 Stephen Warren
|
|
# Copyright (c) 2015-2016, NVIDIA CORPORATION. All rights reserved.
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
# Logic to interact with U-Boot running on real hardware, typically via a
|
|
# physical serial port.
|
|
|
|
import sys
|
|
from u_boot_spawn import Spawn
|
|
from u_boot_console_base import ConsoleBase
|
|
|
|
class ConsoleExecAttach(ConsoleBase):
|
|
"""Represents a physical connection to a U-Boot console, typically via a
|
|
serial port. This implementation executes a sub-process to attach to the
|
|
console, expecting that the stdin/out of the sub-process will be forwarded
|
|
to/from the physical hardware. This approach isolates the test infra-
|
|
structure from the user-/installation-specific details of how to
|
|
communicate with, and the identity of, serial ports etc."""
|
|
|
|
def __init__(self, log, config):
|
|
"""Initialize a U-Boot console connection.
|
|
|
|
Args:
|
|
log: A multiplexed_log.Logfile instance.
|
|
config: A "configuration" object as defined in conftest.py.
|
|
|
|
Returns:
|
|
Nothing.
|
|
"""
|
|
|
|
# The max_fifo_fill value might need tweaking per-board/-SoC?
|
|
# 1 would be safe anywhere, but is very slow (a pexpect issue?).
|
|
# 16 is a common FIFO size.
|
|
# HW flow control would mean this could be infinite.
|
|
super(ConsoleExecAttach, self).__init__(log, config, max_fifo_fill=16)
|
|
|
|
with self.log.section('flash'):
|
|
self.log.action('Flashing U-Boot')
|
|
cmd = ['u-boot-test-flash', config.board_type, config.board_identity]
|
|
runner = self.log.get_runner(cmd[0], sys.stdout)
|
|
runner.run(cmd)
|
|
runner.close()
|
|
self.log.status_pass('OK')
|
|
|
|
def get_spawn(self):
|
|
"""Connect to a fresh U-Boot instance.
|
|
|
|
The target board is reset, so that U-Boot begins running from scratch.
|
|
|
|
Args:
|
|
None.
|
|
|
|
Returns:
|
|
A u_boot_spawn.Spawn object that is attached to U-Boot.
|
|
"""
|
|
|
|
args = [self.config.board_type, self.config.board_identity]
|
|
s = Spawn(['u-boot-test-console'] + args)
|
|
|
|
self.log.action('Resetting board')
|
|
cmd = ['u-boot-test-reset'] + args
|
|
runner = self.log.get_runner(cmd[0], sys.stdout)
|
|
runner.run(cmd)
|
|
runner.close()
|
|
|
|
return s
|