summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorhathach <[email protected]>2026-03-23 15:43:47 +0700
committerhathach <[email protected]>2026-03-23 15:43:47 +0700
commit3c2627e7390dc9145329732900f0c0de6e886cc0 (patch)
tree9f39d14d48a5417fab3abe184ad2ba740e3f4060 /test
parentf7cf6bc581c514984d3513bea8538e33e7d726d8 (diff)
update host msc hil test
Diffstat (limited to 'test')
-rwxr-xr-xtest/hil/hil_test.py30
-rw-r--r--test/hil/tinyusb.json2
2 files changed, 23 insertions, 9 deletions
diff --git a/test/hil/hil_test.py b/test/hil/hil_test.py
index f8b43430d..4b17bed54 100755
--- a/test/hil/hil_test.py
+++ b/test/hil/hil_test.py
@@ -456,17 +456,30 @@ def test_host_device_info(board):
return 0
-def print_msc_info(lines):
- """Print MSC inquiry and disk size on a single line"""
+def check_msc_info(lines, msc_devs):
+ """Print MSC info and verify block_count/block_size against config"""
inquiry = ''
disk_size = ''
for l in lines:
- if re.match(r'^[A-Za-z].*\s+rev\s+', l):
+ if re.match(r'^[A-Za-z].*\s+(rev\s+|[0-9])', l) and 'Disk Size' not in l:
inquiry = l.strip()
if 'Disk Size' in l:
disk_size = l.strip()
if inquiry or disk_size:
print(f'\r\n {inquiry} {disk_size} ', end='')
+ # Verify block_count and block_size from "Disk Size: COUNT SIZE-byte blocks: N MB"
+ if disk_size and msc_devs:
+ m = re.match(r'Disk Size:\s+(\d+)\s+(\d+)-byte blocks', disk_size)
+ if m:
+ actual_count = int(m.group(1))
+ actual_size = int(m.group(2))
+ for dev in msc_devs:
+ exp_count = dev.get('block_count')
+ exp_size = dev.get('block_size')
+ if exp_count and actual_count == exp_count:
+ assert actual_size == exp_size, (
+ f'MSC block_size mismatch: expected {exp_size}, got {actual_size}')
+ break
def test_host_cdc_msc_hid(board):
@@ -525,7 +538,7 @@ def test_host_cdc_msc_hid(board):
if msc_devs:
assert b'MassStorage device is mounted' in data, 'MSC device not mounted on host'
assert b'Disk Size' in data, 'MSC Disk Size not reported'
- print_msc_info(lines)
+ check_msc_info(lines, msc_devs)
# CDC echo test via flasher serial
if not cdc_devs:
@@ -533,6 +546,7 @@ def test_host_cdc_msc_hid(board):
return
time.sleep(2)
+ ser.read(ser.in_waiting)
ser.reset_input_buffer()
def rand_ascii(length):
@@ -540,7 +554,7 @@ def test_host_cdc_msc_hid(board):
packet_size = 64
- # Echo test: 1KB random data, write random 1-packet_size chunks, only write next once echo matched
+ # Echo test: write random 1-packet_size chunks, wait for echo before sending next
echo_len = 1024
echo_data = rand_ascii(echo_len)
ser.reset_input_buffer()
@@ -551,8 +565,8 @@ def test_host_cdc_msc_hid(board):
ser.flush()
# wait until this chunk is echoed back
echo = b''
- t = 5.0
- while t > 0 and len(echo) < chunk_size:
+ t_end = time.monotonic() + 5.0
+ while time.monotonic() < t_end and len(echo) < chunk_size:
rd = ser.read(chunk_size - len(echo))
if rd:
echo += rd
@@ -591,7 +605,7 @@ def test_host_msc_file_explorer(board):
timeout -= 0.1
assert b'Disk Size' in data, 'MSC device not mounted'
lines = data.decode('utf-8', errors='ignore').splitlines()
- print_msc_info(lines)
+ check_msc_info(lines, msc_devs)
# Send "cat README.TXT" and read response
time.sleep(1)
diff --git a/test/hil/tinyusb.json b/test/hil/tinyusb.json
index b4c6aaefe..37e98a52f 100644
--- a/test/hil/tinyusb.json
+++ b/test/hil/tinyusb.json
@@ -182,7 +182,7 @@
"dev_attached": [
{"vid_pid": "0403_6001", "serial": "0", "is_cdc": true},
{"vid_pid": "058f_6387", "serial": "A8BEE062633D", "is_msc": true,
- "msc_disk_size": 3730, "msc_inquiry": "Generic Flash Disk rev 8.07"}
+ "block_size": 512, "block_count": 7639040, "msc_inquiry": "Generic Flash Disk 8.07"}
]
},
"flasher": {