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:
Siva Durga Prasad Paladugu
2018-03-06 17:37:11 +05:30
committed by Michal Simek
parent 013d46690a
commit 90d43e6e7f

View 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