pytest: zynq_aes: Add pytest for zynqaes command
This patch adds pytest for zynqaes commands. It tests loading encrypted image back to DDR and tests loading encrypted bitstream to PL using "zynqaes load" command. This test needs to be executed only in bootmode, if not it wil be skipped. Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
committed by
Michal Simek
parent
013d46690a
commit
90d43e6e7f
119
test/py/tests/test_zynq_aes.py
Normal file
119
test/py/tests/test_zynq_aes.py
Normal file
@@ -0,0 +1,119 @@
|
||||
# Copyright (c) 2018, Xilinx Inc.
|
||||
#
|
||||
# Siva Durga Prasad Paladugu
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
import pytest
|
||||
import re
|
||||
import random
|
||||
import u_boot_utils
|
||||
|
||||
"""
|
||||
Note: This test relies on boardenv_* containing configuration values to define
|
||||
the network available and files to be used for testing. Without this, this test
|
||||
will be automatically skipped.
|
||||
|
||||
For example:
|
||||
|
||||
# True if a DHCP server is attached to the network, and should be tested.
|
||||
env__net_dhcp_server = True
|
||||
|
||||
# A list of environment variables that should be set in order to configure a
|
||||
# static IP. In this test case we atleast need serverip for performing tftpb
|
||||
# to get required files.
|
||||
env__net_static_env_vars = [
|
||||
("ipaddr", "10.0.0.100"),
|
||||
("netmask", "255.255.255.0"),
|
||||
("serverip", "10.0.0.1"),
|
||||
]
|
||||
|
||||
# Details regarding the files that may be read from a TFTP server. .
|
||||
env__zynq_aes_readable_file = {
|
||||
"fn": "zynq_aes_image.bin",
|
||||
"fnbit": "zynq_aes_bit.bin",
|
||||
"srcaddr": 0x1000000,
|
||||
"dstaddr": 0x2000000,
|
||||
"dstlen": "0x1000000",
|
||||
}
|
||||
"""
|
||||
|
||||
import test_net
|
||||
|
||||
def zynq_aes_pre_commands(u_boot_console):
|
||||
|
||||
output = u_boot_console.run_command('print modeboot')
|
||||
if not "modeboot=" in output:
|
||||
pytest.skip('bootmode cannnot be determined')
|
||||
m = re.search('modeboot=(.+?)boot', output)
|
||||
if not m:
|
||||
pytest.skip('bootmode cannnot be determined')
|
||||
bootmode=m.group(1)
|
||||
if bootmode is "jtag":
|
||||
pytest.skip('skipping due to jtag bootmode')
|
||||
|
||||
@pytest.mark.buildconfigspec('cmd_zynq_aes')
|
||||
@pytest.mark.buildconfigspec('cmd_net')
|
||||
@pytest.mark.buildconfigspec('cmd_dhcp')
|
||||
@pytest.mark.buildconfigspec('net')
|
||||
# Can be tested on board xhd-zc702-2 - efuse must be blown
|
||||
@pytest.mark.xfail
|
||||
def test_zynq_aes_image(u_boot_console):
|
||||
|
||||
zynq_aes_pre_commands(u_boot_console)
|
||||
test_net.test_net_dhcp(u_boot_console)
|
||||
test_net.test_net_setup_static(u_boot_console)
|
||||
|
||||
f = u_boot_console.config.env.get('env__zynq_aes_readable_file', None)
|
||||
if not f:
|
||||
pytest.skip('No TFTP readable file to read')
|
||||
|
||||
srcaddr = f.get('srcaddr', None)
|
||||
if not srcaddr:
|
||||
addr = u_boot_utils.find_ram_base(u_boot_console)
|
||||
|
||||
expected_tftp = 'Bytes transferred = '
|
||||
fn = f['fn']
|
||||
output = u_boot_console.run_command('tftpboot %x %s' % (srcaddr, fn))
|
||||
assert expected_tftp in output
|
||||
|
||||
dstaddr = f.get('dstaddr', None)
|
||||
if not dstaddr:
|
||||
pytest.skip('No dstaddr specified in env file to read')
|
||||
|
||||
dstsize = f.get('dstlen', None)
|
||||
if not dstsize:
|
||||
pytest.skip('No dstlen specified in env file to read')
|
||||
|
||||
expected_zynqaes = 'zynqaes [operation type] <srcaddr>'
|
||||
output = u_boot_console.run_command('zynqaes %x $filesize %x %x' % (srcaddr, dstaddr, dstsize))
|
||||
assert expected_zynqaes not in output
|
||||
|
||||
@pytest.mark.buildconfigspec('cmd_zynq_aes')
|
||||
@pytest.mark.buildconfigspec('cmd_net')
|
||||
@pytest.mark.buildconfigspec('cmd_dhcp')
|
||||
@pytest.mark.buildconfigspec('net')
|
||||
# Can be tested on board xhd-zc702-2 - efuse must be blown
|
||||
@pytest.mark.xfail
|
||||
def test_zynq_aes_bitstream(u_boot_console):
|
||||
|
||||
zynq_aes_pre_commands(u_boot_console)
|
||||
test_net.test_net_dhcp(u_boot_console)
|
||||
test_net.test_net_setup_static(u_boot_console)
|
||||
|
||||
f = u_boot_console.config.env.get('env__zynq_aes_readable_file', None)
|
||||
if not f:
|
||||
pytest.skip('No TFTP readable file to read')
|
||||
|
||||
srcaddr = f.get('srcaddr', None)
|
||||
if not srcaddr:
|
||||
addr = u_boot_utils.find_ram_base(u_boot_console)
|
||||
|
||||
expected_tftp = 'Bytes transferred = '
|
||||
fn = f['fnbit']
|
||||
output = u_boot_console.run_command('tftpboot %x %s' % (srcaddr, fn))
|
||||
assert expected_tftp in output
|
||||
|
||||
expected_zynqaes = 'zynqaes [operation type] <srcaddr>'
|
||||
output = u_boot_console.run_command('zynqaes load %x $filesize' % (srcaddr))
|
||||
assert expected_zynqaes not in output
|
||||
Reference in New Issue
Block a user