test/py: net: Add a TFTP put test

Execute tftpput command for uploading files to a server and validate its
size & CRC32.

Signed-off-by: Love Kumar <love.kumar@amd.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Love Kumar 2023-11-08 12:40:31 +05:30 committed by Tom Rini
parent 339d96822e
commit 9f0588a1a9

View file

@ -7,6 +7,7 @@
import pytest
import u_boot_utils
import uuid
import datetime
"""
Note: This test relies on boardenv_* containing configuration values to define
@ -51,6 +52,8 @@ env__net_tftp_readable_file = {
'addr': 0x10000000,
'size': 5058624,
'crc32': 'c2244b26',
'timeout': 50000,
'fnu': 'ubtest-upload.bin',
}
# Details regarding a file that may be read from a NFS server. This variable
@ -326,3 +329,71 @@ def test_net_pxe_get(u_boot_console):
assert expected_text_default in output
assert "Config file 'default.boot' found" in output
@pytest.mark.buildconfigspec("cmd_crc32")
@pytest.mark.buildconfigspec("cmd_net")
@pytest.mark.buildconfigspec("cmd_tftpput")
def test_net_tftpput(u_boot_console):
"""Test the tftpput command.
A file is downloaded from the TFTP server and then uploaded to the TFTP
server, its size and its CRC32 are validated.
The details of the file to download are provided by the boardenv_* file;
see the comment at the beginning of this file.
"""
if not net_set_up:
pytest.skip("Network not initialized")
f = u_boot_console.config.env.get("env__net_tftp_readable_file", None)
if not f:
pytest.skip("No TFTP readable file to read")
addr = f.get("addr", None)
if not addr:
addr = u_boot_utils.find_ram_base(u_boot_console)
sz = f.get("size", None)
timeout = f.get("timeout", u_boot_console.p.timeout)
fn = f["fn"]
fnu = f.get("fnu", "_".join([datetime.datetime.now().strftime("%y%m%d%H%M%S"), fn]))
expected_text = "Bytes transferred = "
if sz:
expected_text += "%d" % sz
with u_boot_console.temporary_timeout(timeout):
output = u_boot_console.run_command("tftpboot %x %s" % (addr, fn))
assert "TIMEOUT" not in output
assert expected_text in output
expected_tftpb_crc = f.get("crc32", None)
output = u_boot_console.run_command("crc32 $fileaddr $filesize")
assert expected_tftpb_crc in output
with u_boot_console.temporary_timeout(timeout):
output = u_boot_console.run_command(
"tftpput $fileaddr $filesize $serverip:%s" % (fnu)
)
expected_text = "Bytes transferred = "
if sz:
expected_text += "%d" % sz
addr = addr + sz
assert "TIMEOUT" not in output
assert "Access violation" not in output
assert expected_text in output
with u_boot_console.temporary_timeout(timeout):
output = u_boot_console.run_command("tftpboot %x %s" % (addr, fnu))
expected_text = "Bytes transferred = "
if sz:
expected_text += "%d" % sz
assert "TIMEOUT" not in output
assert expected_text in output
output = u_boot_console.run_command("crc32 $fileaddr $filesize")
assert expected_tftpb_crc in output