1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# SPDX-License-Identifier: GPL-2.0
# (C) Copyright 2023, Advanced Micro Devices, Inc.
import pytest
import re
"""
Note: This test doesn't rely on boardenv_* configuration value but they can
change test behavior.
For example:
# Setup env__mii_deive_test_skip to True if tests with ethernet PHY devices
# should be skipped. For example: Missing PHY device
env__mii_device_test_skip = True
# Setup env__mii_device_test to set the MII device names. Test will be skipped
# if env_mii_device_test is not set
env__mii_device_test = {
'device_list': ['eth0', 'eth1'],
}
"""
@pytest.mark.buildconfigspec("cmd_mii")
def test_mii_info(u_boot_console):
if u_boot_console.config.env.get("env__mii_device_test_skip", False):
pytest.skip("MII device test is not enabled!")
expected_output = "PHY"
output = u_boot_console.run_command("mii info")
if not re.search(r"PHY (.+?):", output):
pytest.skip("PHY device does not exist!")
assert expected_output in output
@pytest.mark.buildconfigspec("cmd_mii")
def test_mii_list(u_boot_console):
if u_boot_console.config.env.get("env__mii_device_test_skip", False):
pytest.skip("MII device test is not enabled!")
f = u_boot_console.config.env.get("env__mii_device_test", None)
if not f:
pytest.skip("No MII device to test!")
dev_list = f.get("device_list")
if not dev_list:
pytest.fail("No MII device list provided via env__mii_device_test!")
expected_output = "Current device"
output = u_boot_console.run_command("mii device")
mii_devices = (
re.search(r"MII devices: '(.+)'", output).groups()[0].replace("'", "").split()
)
assert len([x for x in dev_list if x in mii_devices]) == len(dev_list)
assert expected_output in output
@pytest.mark.buildconfigspec("cmd_mii")
def test_mii_set_device(u_boot_console):
test_mii_list(u_boot_console)
f = u_boot_console.config.env.get("env__mii_device_test", None)
dev_list = f.get("device_list")
output = u_boot_console.run_command("mii device")
current_dev = re.search(r"Current device: '(.+?)'", output).groups()[0]
for dev in dev_list:
u_boot_console.run_command(f"mii device {dev}")
output = u_boot_console.run_command("echo $?")
assert output.endswith("0")
u_boot_console.run_command(f"mii device {current_dev}")
output = u_boot_console.run_command("mii device")
dev = re.search(r"Current device: '(.+?)'", output).groups()[0]
assert current_dev == dev
@pytest.mark.buildconfigspec("cmd_mii")
def test_mii_read(u_boot_console):
test_mii_list(u_boot_console)
output = u_boot_console.run_command("mii info")
eth_addr = hex(int(re.search(r"PHY (.+?):", output).groups()[0], 16))
u_boot_console.run_command(f"mii read {eth_addr} 0")
output = u_boot_console.run_command("echo $?")
assert output.endswith("0")
@pytest.mark.buildconfigspec("cmd_mii")
def test_mii_dump(u_boot_console):
test_mii_list(u_boot_console)
expected_response = "PHY control register"
output = u_boot_console.run_command("mii info")
eth_addr = hex(int(re.search(r"PHY (.+?):", output).groups()[0], 16))
response = u_boot_console.run_command(f"mii dump {eth_addr} 0")
assert expected_response in response
output = u_boot_console.run_command("echo $?")
assert output.endswith("0")
|