blob: be2e283e7d257ae3671156637b8c8d3a2141892a [file] [log] [blame]
# SPDX-License-Identifier: GPL-2.0
# (C) Copyright 2023, Advanced Micro Devices, Inc.
import pytest
"""
Note: This test relies on boardenv_* containing configuration values to define
the SCSI device number, type and capacity. This test will be automatically
skipped without this.
For example:
# Setup env__scsi_device_test to set the SCSI device number/slot, the type of
device, and the device capacity in MB.
env__scsi_device_test = {
'dev_num': 0,
'device_type': 'Hard Disk',
'device_capacity': '476940.0 MB',
}
"""
def scsi_setup(u_boot_console):
f = u_boot_console.config.env.get('env__scsi_device_test', None)
if not f:
pytest.skip('No SCSI device to test')
dev_num = f.get('dev_num', None)
if not isinstance(dev_num, int):
pytest.skip('No device number specified in env file to read')
dev_type = f.get('device_type')
if not dev_type:
pytest.skip('No device type specified in env file to read')
dev_size = f.get('device_capacity')
if not dev_size:
pytest.skip('No device capacity specified in env file to read')
return dev_num, dev_type, dev_size
@pytest.mark.buildconfigspec('cmd_scsi')
def test_scsi_reset(u_boot_console):
dev_num, dev_type, dev_size = scsi_setup(u_boot_console)
output = u_boot_console.run_command('scsi reset')
assert f'Device {dev_num}:' in output
assert f'Type: {dev_type}' in output
assert f'Capacity: {dev_size}' in output
output = u_boot_console.run_command('echo $?')
assert output.endswith('0')
@pytest.mark.buildconfigspec('cmd_scsi')
def test_scsi_info(u_boot_console):
dev_num, dev_type, dev_size = scsi_setup(u_boot_console)
output = u_boot_console.run_command('scsi info')
assert f'Device {dev_num}:' in output
assert f'Type: {dev_type}' in output
assert f'Capacity: {dev_size}' in output
output = u_boot_console.run_command('echo $?')
assert output.endswith('0')
@pytest.mark.buildconfigspec('cmd_scsi')
def test_scsi_scan(u_boot_console):
dev_num, dev_type, dev_size = scsi_setup(u_boot_console)
output = u_boot_console.run_command('scsi scan')
assert f'Device {dev_num}:' in output
assert f'Type: {dev_type}' in output
assert f'Capacity: {dev_size}' in output
output = u_boot_console.run_command('echo $?')
assert output.endswith('0')
@pytest.mark.buildconfigspec('cmd_scsi')
def test_scsi_dev(u_boot_console):
dev_num, dev_type, dev_size = scsi_setup(u_boot_console)
output = u_boot_console.run_command('scsi device')
assert 'no scsi devices available' not in output
assert f'device {dev_num}:' in output
assert f'Type: {dev_type}' in output
assert f'Capacity: {dev_size}' in output
output = u_boot_console.run_command('echo $?')
assert output.endswith('0')
output = u_boot_console.run_command('scsi device %d' % dev_num)
assert 'is now current device' in output
output = u_boot_console.run_command('echo $?')
assert output.endswith('0')
@pytest.mark.buildconfigspec('cmd_scsi')
def test_scsi_part(u_boot_console):
test_scsi_dev(u_boot_console)
output = u_boot_console.run_command('scsi part')
assert 'Partition Map for SCSI device' in output
output = u_boot_console.run_command('echo $?')
assert output.endswith('0')