]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
pytest: zynq_aes: Add pytest for zynqaes command
authorSiva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Tue, 6 Mar 2018 12:07:11 +0000 (17:37 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 8 Mar 2018 08:33:42 +0000 (09:33 +0100)
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>
test/py/tests/test_zynq_aes.py [new file with mode: 0644]

diff --git a/test/py/tests/test_zynq_aes.py b/test/py/tests/test_zynq_aes.py
new file mode 100644 (file)
index 0000000..a5f5187
--- /dev/null
@@ -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