test/py: mmc: Add 'mmc read' performance check

Add option to the mmc rd test to check the duration of the
execution of the mmc read command. This allows intercepting
read performance regressions.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Tom Rini <trini@konsulko.com>
Cc: Simon Glass <sjg@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Marek Vasut 2019-03-13 17:49:29 +01:00 committed by Tom Rini
parent 4ffec8cdf5
commit e551979790

View File

@ -6,6 +6,7 @@
# read if the test configuration contains a CRC of the expected data. # read if the test configuration contains a CRC of the expected data.
import pytest import pytest
import time
import u_boot_utils import u_boot_utils
""" """
@ -187,6 +188,7 @@ def test_mmc_rd(u_boot_console, env__mmc_rd_config):
sector = env__mmc_rd_config.get('sector', 0) sector = env__mmc_rd_config.get('sector', 0)
count_sectors = env__mmc_rd_config.get('count', 1) count_sectors = env__mmc_rd_config.get('count', 1)
expected_crc32 = env__mmc_rd_config.get('crc32', None) expected_crc32 = env__mmc_rd_config.get('crc32', None)
read_duration_max = env__mmc_rd_config.get('read_duration_max', 0)
count_bytes = count_sectors * 512 count_bytes = count_sectors * 512
bcfg = u_boot_console.config.buildconfig bcfg = u_boot_console.config.buildconfig
@ -213,7 +215,9 @@ def test_mmc_rd(u_boot_console, env__mmc_rd_config):
# Read data # Read data
cmd = 'mmc read %s %x %x' % (addr, sector, count_sectors) cmd = 'mmc read %s %x %x' % (addr, sector, count_sectors)
tstart = time.time()
response = u_boot_console.run_command(cmd) response = u_boot_console.run_command(cmd)
tend = time.time()
good_response = 'MMC read: dev # %d, block # %d, count %d ... %d blocks read: OK' % ( good_response = 'MMC read: dev # %d, block # %d, count %d ... %d blocks read: OK' % (
devid, sector, count_sectors, count_sectors) devid, sector, count_sectors, count_sectors)
assert good_response in response assert good_response in response
@ -226,3 +230,10 @@ def test_mmc_rd(u_boot_console, env__mmc_rd_config):
assert expected_crc32 in response assert expected_crc32 in response
else: else:
u_boot_console.log.warning('CONFIG_CMD_CRC32 != y: Skipping check') u_boot_console.log.warning('CONFIG_CMD_CRC32 != y: Skipping check')
# Check if the command did not take too long
if read_duration_max:
elapsed = tend - tstart
u_boot_console.log.info('Reading %d bytes took %f seconds' %
(count_bytes, elapsed))
assert elapsed <= (read_duration_max - 0.01)