mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-27 07:51:38 +00:00
test/py: Drop importing utils as util
Now that we have a shorter name, we don't need this sort of thing. Drop it. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # test_android
This commit is contained in:
parent
d9ed4b75ad
commit
dd693ecb60
18 changed files with 110 additions and 104 deletions
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
def make_fname(ubman, basename):
|
def make_fname(ubman, basename):
|
||||||
"""Make a temporary filename
|
"""Make a temporary filename
|
||||||
|
@ -54,7 +54,7 @@ def make_fit(ubman, mkimage, base_its, params, basename='test.fit', base_fdt=Non
|
||||||
"""
|
"""
|
||||||
fit = make_fname(ubman, basename)
|
fit = make_fname(ubman, basename)
|
||||||
its = make_its(ubman, base_its, params)
|
its = make_its(ubman, base_its, params)
|
||||||
util.run_and_log(ubman, [mkimage, '-f', its, fit])
|
utils.run_and_log(ubman, [mkimage, '-f', its, fit])
|
||||||
if base_fdt:
|
if base_fdt:
|
||||||
with open(make_fname(ubman, 'u-boot.dts'), 'w') as fd:
|
with open(make_fname(ubman, 'u-boot.dts'), 'w') as fd:
|
||||||
fd.write(base_fdt)
|
fd.write(base_fdt)
|
||||||
|
@ -89,5 +89,5 @@ def make_dtb(ubman, base_fdt, basename):
|
||||||
dtb = make_fname(ubman, f'{basename}.dtb')
|
dtb = make_fname(ubman, f'{basename}.dtb')
|
||||||
with open(src, 'w', encoding='utf-8') as outf:
|
with open(src, 'w', encoding='utf-8') as outf:
|
||||||
outf.write(base_fdt)
|
outf.write(base_fdt)
|
||||||
util.run_and_log(ubman, ['dtc', src, '-O', 'dtb', '-o', dtb])
|
utils.run_and_log(ubman, ['dtc', src, '-O', 'dtb', '-o', dtb])
|
||||||
return dtb
|
return dtb
|
||||||
|
|
|
@ -15,7 +15,6 @@ For configuration verification:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import utils as util
|
|
||||||
|
|
||||||
# defauld mmc id
|
# defauld mmc id
|
||||||
mmc_dev = 1
|
mmc_dev = 1
|
||||||
|
|
|
@ -55,7 +55,7 @@ env__efi_fit_tftp_file = {
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
import pytest
|
import pytest
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
# Define the parametrized ITS data to be used for FIT images generation.
|
# Define the parametrized ITS data to be used for FIT images generation.
|
||||||
ITS_DATA = '''
|
ITS_DATA = '''
|
||||||
|
@ -224,11 +224,11 @@ def test_efi_fit_launch(ubman):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
bin_path = make_fpath(fname)
|
bin_path = make_fpath(fname)
|
||||||
util.run_and_log(cons,
|
utils.run_and_log(cons,
|
||||||
['cp', make_fpath('lib/efi_loader/helloworld.efi'),
|
['cp', make_fpath('lib/efi_loader/helloworld.efi'),
|
||||||
bin_path])
|
bin_path])
|
||||||
if comp:
|
if comp:
|
||||||
util.run_and_log(cons, ['gzip', '-f', bin_path])
|
utils.run_and_log(cons, ['gzip', '-f', bin_path])
|
||||||
bin_path += '.gz'
|
bin_path += '.gz'
|
||||||
return bin_path
|
return bin_path
|
||||||
|
|
||||||
|
@ -257,9 +257,10 @@ def test_efi_fit_launch(ubman):
|
||||||
|
|
||||||
# Build the test FDT.
|
# Build the test FDT.
|
||||||
dtb = make_fpath('test-efi-fit-%s.dtb' % fdt_type)
|
dtb = make_fpath('test-efi-fit-%s.dtb' % fdt_type)
|
||||||
util.run_and_log(cons, ['dtc', '-I', 'dts', '-O', 'dtb', '-o', dtb, dts])
|
utils.run_and_log(cons,
|
||||||
|
['dtc', '-I', 'dts', '-O', 'dtb', '-o', dtb, dts])
|
||||||
if comp:
|
if comp:
|
||||||
util.run_and_log(cons, ['gzip', '-f', dtb])
|
utils.run_and_log(cons, ['gzip', '-f', dtb])
|
||||||
dtb += '.gz'
|
dtb += '.gz'
|
||||||
return dtb
|
return dtb
|
||||||
|
|
||||||
|
@ -290,7 +291,7 @@ def test_efi_fit_launch(ubman):
|
||||||
|
|
||||||
# Build the test ITS.
|
# Build the test ITS.
|
||||||
fit_path = make_fpath('test-efi-fit-helloworld.fit')
|
fit_path = make_fpath('test-efi-fit-helloworld.fit')
|
||||||
util.run_and_log(
|
utils.run_and_log(
|
||||||
cons, [make_fpath('tools/mkimage'), '-f', its_path, fit_path])
|
cons, [make_fpath('tools/mkimage'), '-f', its_path, fit_path])
|
||||||
return fit_path
|
return fit_path
|
||||||
|
|
||||||
|
@ -307,7 +308,7 @@ def test_efi_fit_launch(ubman):
|
||||||
|
|
||||||
addr = fit.get('addr', None)
|
addr = fit.get('addr', None)
|
||||||
if not addr:
|
if not addr:
|
||||||
addr = util.find_ram_base(cons)
|
addr = utils.find_ram_base(cons)
|
||||||
|
|
||||||
output = cons.run_command(
|
output = cons.run_command(
|
||||||
'host load hostfs - %x %s/%s' % (addr, fit['dn'], fit['fn']))
|
'host load hostfs - %x %s/%s' % (addr, fit['dn'], fit['fn']))
|
||||||
|
@ -334,7 +335,7 @@ def test_efi_fit_launch(ubman):
|
||||||
|
|
||||||
addr = fit.get('addr', None)
|
addr = fit.get('addr', None)
|
||||||
if not addr:
|
if not addr:
|
||||||
addr = util.find_ram_base(cons)
|
addr = utils.find_ram_base(cons)
|
||||||
|
|
||||||
file_name = fit['fn']
|
file_name = fit['fn']
|
||||||
output = cons.run_command('tftpboot %x %s' % (addr, file_name))
|
output = cons.run_command('tftpboot %x %s' % (addr, file_name))
|
||||||
|
@ -412,7 +413,8 @@ def test_efi_fit_launch(ubman):
|
||||||
|
|
||||||
# Copy image to TFTP root directory.
|
# Copy image to TFTP root directory.
|
||||||
if fit['dn'] != cons.config.build_dir:
|
if fit['dn'] != cons.config.build_dir:
|
||||||
util.run_and_log(cons, ['mv', '-f', fit_path, '%s/' % fit['dn']])
|
utils.run_and_log(cons,
|
||||||
|
['mv', '-f', fit_path, '%s/' % fit['dn']])
|
||||||
|
|
||||||
# Load FIT image.
|
# Load FIT image.
|
||||||
addr = load_fit_from_host(fit) if is_sandbox else load_fit_from_tftp(fit)
|
addr = load_fit_from_host(fit) if is_sandbox else load_fit_from_tftp(fit)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import re
|
import re
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
# This is only a partial test - coverting 64-bit sandbox. It does not test
|
# This is only a partial test - coverting 64-bit sandbox. It does not test
|
||||||
# big-endian images, nor 32-bit images
|
# big-endian images, nor 32-bit images
|
||||||
|
@ -13,7 +13,7 @@ def test_event_dump(ubman):
|
||||||
"""Test that the "help" command can be executed."""
|
"""Test that the "help" command can be executed."""
|
||||||
cons = ubman
|
cons = ubman
|
||||||
sandbox = cons.config.build_dir + '/u-boot'
|
sandbox = cons.config.build_dir + '/u-boot'
|
||||||
out = util.run_and_log(cons, ['scripts/event_dump.py', sandbox])
|
out = utils.run_and_log(cons, ['scripts/event_dump.py', sandbox])
|
||||||
expect = '''.*Event type Id Source location
|
expect = '''.*Event type Id Source location
|
||||||
-------------------- ------------------------------ ------------------------------
|
-------------------- ------------------------------ ------------------------------
|
||||||
EVT_FT_FIXUP bootmeth_vbe_ft_fixup .*boot/vbe_request.c:.*
|
EVT_FT_FIXUP bootmeth_vbe_ft_fixup .*boot/vbe_request.c:.*
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
import os
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
import struct
|
import struct
|
||||||
import utils as util
|
import utils
|
||||||
import fit_util
|
import fit_util
|
||||||
|
|
||||||
# Define a base ITS which we can adjust using % and a dictionary
|
# Define a base ITS which we can adjust using % and a dictionary
|
||||||
|
@ -165,7 +165,7 @@ def test_fit(ubman):
|
||||||
return fname
|
return fname
|
||||||
|
|
||||||
def make_compressed(filename):
|
def make_compressed(filename):
|
||||||
util.run_and_log(cons, ['gzip', '-f', '-k', filename])
|
utils.run_and_log(cons, ['gzip', '-f', '-k', filename])
|
||||||
return filename + '.gz'
|
return filename + '.gz'
|
||||||
|
|
||||||
def find_matching(text, match):
|
def find_matching(text, match):
|
||||||
|
|
|
@ -17,7 +17,7 @@ The test does not run the sandbox. It only checks the host tool mkimage.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
import utils as util
|
import utils
|
||||||
import binascii
|
import binascii
|
||||||
from Cryptodome.Hash import SHA1
|
from Cryptodome.Hash import SHA1
|
||||||
from Cryptodome.Hash import SHA256
|
from Cryptodome.Hash import SHA256
|
||||||
|
@ -33,15 +33,15 @@ class SignedFitHelper(object):
|
||||||
self.confgs_nodes = set()
|
self.confgs_nodes = set()
|
||||||
|
|
||||||
def __fdt_list(self, path):
|
def __fdt_list(self, path):
|
||||||
return util.run_and_log(self.cons,
|
return utils.run_and_log(self.cons,
|
||||||
f'fdtget -l {self.fit} {path}')
|
f'fdtget -l {self.fit} {path}')
|
||||||
|
|
||||||
def __fdt_get_string(self, node, prop):
|
def __fdt_get_string(self, node, prop):
|
||||||
return util.run_and_log(self.cons,
|
return utils.run_and_log(self.cons,
|
||||||
f'fdtget -ts {self.fit} {node} {prop}')
|
f'fdtget -ts {self.fit} {node} {prop}')
|
||||||
|
|
||||||
def __fdt_get_binary(self, node, prop):
|
def __fdt_get_binary(self, node, prop):
|
||||||
numbers = util.run_and_log(self.cons,
|
numbers = utils.run_and_log(self.cons,
|
||||||
f'fdtget -tbi {self.fit} {node} {prop}')
|
f'fdtget -tbi {self.fit} {node} {prop}')
|
||||||
|
|
||||||
bignum = bytearray()
|
bignum = bytearray()
|
||||||
|
@ -166,7 +166,7 @@ def test_fit_auto_signed(ubman):
|
||||||
s_args = " -k" + tempdir + " -g" + key_name + " -o" + sign_algo
|
s_args = " -k" + tempdir + " -g" + key_name + " -o" + sign_algo
|
||||||
|
|
||||||
# 1 - Create auto FIT with images crc32 checksum, and verify it
|
# 1 - Create auto FIT with images crc32 checksum, and verify it
|
||||||
util.run_and_log(cons, mkimage + ' -fauto' + b_args + " " + fit_file)
|
utils.run_and_log(cons, mkimage + ' -fauto' + b_args + " " + fit_file)
|
||||||
|
|
||||||
fit = SignedFitHelper(cons, fit_file)
|
fit = SignedFitHelper(cons, fit_file)
|
||||||
if fit.build_nodes_sets() == 0:
|
if fit.build_nodes_sets() == 0:
|
||||||
|
@ -175,7 +175,7 @@ def test_fit_auto_signed(ubman):
|
||||||
fit.check_fit_crc32_images()
|
fit.check_fit_crc32_images()
|
||||||
|
|
||||||
# 2 - Create auto FIT with signed images, and verify it
|
# 2 - Create auto FIT with signed images, and verify it
|
||||||
util.run_and_log(cons, mkimage + ' -fauto' + b_args + s_args + " " +
|
utils.run_and_log(cons, mkimage + ' -fauto' + b_args + s_args + " " +
|
||||||
fit_file)
|
fit_file)
|
||||||
|
|
||||||
fit = SignedFitHelper(cons, fit_file)
|
fit = SignedFitHelper(cons, fit_file)
|
||||||
|
@ -185,7 +185,7 @@ def test_fit_auto_signed(ubman):
|
||||||
fit.check_fit_signed_images(key_name, sign_algo, verifier)
|
fit.check_fit_signed_images(key_name, sign_algo, verifier)
|
||||||
|
|
||||||
# 3 - Create auto FIT with signed configs and hashed images, and verify it
|
# 3 - Create auto FIT with signed configs and hashed images, and verify it
|
||||||
util.run_and_log(cons, mkimage + ' -fauto-conf' + b_args + s_args + " " +
|
utils.run_and_log(cons, mkimage + ' -fauto-conf' + b_args + s_args + " " +
|
||||||
fit_file)
|
fit_file)
|
||||||
|
|
||||||
fit = SignedFitHelper(cons, fit_file)
|
fit = SignedFitHelper(cons, fit_file)
|
||||||
|
|
|
@ -12,7 +12,7 @@ This test doesn't run the sandbox. It only checks the host tool 'mkimage'
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
import utils as util
|
import utils
|
||||||
from Cryptodome.Hash import SHA256
|
from Cryptodome.Hash import SHA256
|
||||||
from Cryptodome.PublicKey import ECC
|
from Cryptodome.PublicKey import ECC
|
||||||
from Cryptodome.Signature import DSS
|
from Cryptodome.Signature import DSS
|
||||||
|
@ -25,14 +25,16 @@ class SignableFitImage(object):
|
||||||
self.signable_nodes = set()
|
self.signable_nodes = set()
|
||||||
|
|
||||||
def __fdt_list(self, path):
|
def __fdt_list(self, path):
|
||||||
return util.run_and_log(self.cons, f'fdtget -l {self.fit} {path}')
|
return utils.run_and_log(self.cons, f'fdtget -l {self.fit} {path}')
|
||||||
|
|
||||||
def __fdt_set(self, node, **prop_value):
|
def __fdt_set(self, node, **prop_value):
|
||||||
for prop, value in prop_value.items():
|
for prop, value in prop_value.items():
|
||||||
util.run_and_log(self.cons, f'fdtput -ts {self.fit} {node} {prop} {value}')
|
utils.run_and_log(self.cons,
|
||||||
|
f'fdtput -ts {self.fit} {node} {prop} {value}')
|
||||||
|
|
||||||
def __fdt_get_binary(self, node, prop):
|
def __fdt_get_binary(self, node, prop):
|
||||||
numbers = util.run_and_log(self.cons, f'fdtget -tbi {self.fit} {node} {prop}')
|
numbers = utils.run_and_log(self.cons,
|
||||||
|
f'fdtget -tbi {self.fit} {node} {prop}')
|
||||||
|
|
||||||
bignum = bytearray()
|
bignum = bytearray()
|
||||||
for little_num in numbers.split():
|
for little_num in numbers.split():
|
||||||
|
@ -53,7 +55,7 @@ class SignableFitImage(object):
|
||||||
self.__fdt_set(f'{image}/signature', algo='sha256,ecdsa256')
|
self.__fdt_set(f'{image}/signature', algo='sha256,ecdsa256')
|
||||||
|
|
||||||
def sign(self, mkimage, key_file):
|
def sign(self, mkimage, key_file):
|
||||||
util.run_and_log(self.cons, [mkimage, '-F', self.fit, f'-G{key_file}'])
|
utils.run_and_log(self.cons, [mkimage, '-F', self.fit, f'-G{key_file}'])
|
||||||
|
|
||||||
def check_signatures(self, key):
|
def check_signatures(self, key):
|
||||||
for image in self.signable_nodes:
|
for image in self.signable_nodes:
|
||||||
|
@ -76,11 +78,11 @@ def test_fit_ecdsa(ubman):
|
||||||
|
|
||||||
def assemble_fit_image(dest_fit, its, destdir):
|
def assemble_fit_image(dest_fit, its, destdir):
|
||||||
dtc_args = f'-I dts -O dtb -i {destdir}'
|
dtc_args = f'-I dts -O dtb -i {destdir}'
|
||||||
util.run_and_log(cons, [mkimage, '-D', dtc_args, '-f', its, dest_fit])
|
utils.run_and_log(cons, [mkimage, '-D', dtc_args, '-f', its, dest_fit])
|
||||||
|
|
||||||
def dtc(dts):
|
def dtc(dts):
|
||||||
dtb = dts.replace('.dts', '.dtb')
|
dtb = dts.replace('.dts', '.dtb')
|
||||||
util.run_and_log(cons, f'dtc {datadir}/{dts} -O dtb -o {tempdir}/{dtb}')
|
utils.run_and_log(cons, f'dtc {datadir}/{dts} -O dtb -o {tempdir}/{dtb}')
|
||||||
|
|
||||||
cons = ubman
|
cons = ubman
|
||||||
mkimage = cons.config.build_dir + '/tools/mkimage'
|
mkimage = cons.config.build_dir + '/tools/mkimage'
|
||||||
|
|
|
@ -12,7 +12,7 @@ This test doesn't run the sandbox. It only checks the host tool 'mkimage'
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
kernel_hashes = {
|
kernel_hashes = {
|
||||||
"sha512" : "f18c1486a2c29f56360301576cdfce4dfd8e8e932d0ed8e239a1f314b8ae1d77b2a58cd7fe32e4075e69448e623ce53b0b6aa6ce5626d2c189a5beae29a68d93",
|
"sha512" : "f18c1486a2c29f56360301576cdfce4dfd8e8e932d0ed8e239a1f314b8ae1d77b2a58cd7fe32e4075e69448e623ce53b0b6aa6ce5626d2c189a5beae29a68d93",
|
||||||
|
@ -32,14 +32,15 @@ class ReadonlyFitImage(object):
|
||||||
self.hashable_nodes = set()
|
self.hashable_nodes = set()
|
||||||
|
|
||||||
def __fdt_list(self, path):
|
def __fdt_list(self, path):
|
||||||
return util.run_and_log(self.cons, f'fdtget -l {self.fit} {path}')
|
return utils.run_and_log(self.cons, f'fdtget -l {self.fit} {path}')
|
||||||
|
|
||||||
def __fdt_get(self, node, prop):
|
def __fdt_get(self, node, prop):
|
||||||
val = util.run_and_log(self.cons, f'fdtget {self.fit} {node} {prop}')
|
val = utils.run_and_log(self.cons, f'fdtget {self.fit} {node} {prop}')
|
||||||
return val.rstrip('\n')
|
return val.rstrip('\n')
|
||||||
|
|
||||||
def __fdt_get_sexadecimal(self, node, prop):
|
def __fdt_get_sexadecimal(self, node, prop):
|
||||||
numbers = util.run_and_log(self.cons, f'fdtget -tbx {self.fit} {node} {prop}')
|
numbers = utils.run_and_log(self.cons,
|
||||||
|
f'fdtget -tbx {self.fit} {node} {prop}')
|
||||||
|
|
||||||
sexadecimal = ''
|
sexadecimal = ''
|
||||||
for num in numbers.rstrip('\n').split(' '):
|
for num in numbers.rstrip('\n').split(' '):
|
||||||
|
@ -85,11 +86,12 @@ def test_mkimage_hashes(ubman):
|
||||||
|
|
||||||
def assemble_fit_image(dest_fit, its, destdir):
|
def assemble_fit_image(dest_fit, its, destdir):
|
||||||
dtc_args = f'-I dts -O dtb -i {destdir}'
|
dtc_args = f'-I dts -O dtb -i {destdir}'
|
||||||
util.run_and_log(cons, [mkimage, '-D', dtc_args, '-f', its, dest_fit])
|
utils.run_and_log(cons, [mkimage, '-D', dtc_args, '-f', its, dest_fit])
|
||||||
|
|
||||||
def dtc(dts):
|
def dtc(dts):
|
||||||
dtb = dts.replace('.dts', '.dtb')
|
dtb = dts.replace('.dts', '.dtb')
|
||||||
util.run_and_log(cons, f'dtc {datadir}/{dts} -O dtb -o {tempdir}/{dtb}')
|
utils.run_and_log(cons,
|
||||||
|
f'dtc {datadir}/{dts} -O dtb -o {tempdir}/{dtb}')
|
||||||
|
|
||||||
cons = ubman
|
cons = ubman
|
||||||
mkimage = cons.config.build_dir + '/tools/mkimage'
|
mkimage = cons.config.build_dir + '/tools/mkimage'
|
||||||
|
|
|
@ -8,7 +8,6 @@ import pytest
|
||||||
import re
|
import re
|
||||||
from subprocess import call, check_call, check_output, CalledProcessError
|
from subprocess import call, check_call, check_output, CalledProcessError
|
||||||
from fstest_defs import *
|
from fstest_defs import *
|
||||||
import utils as util
|
|
||||||
# pylint: disable=E0611
|
# pylint: disable=E0611
|
||||||
from tests import fs_helper
|
from tests import fs_helper
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
# This is needed for Azure, since the default '..' directory is not writeable
|
# This is needed for Azure, since the default '..' directory is not writeable
|
||||||
TMPDIR = '/tmp/test_kconfig'
|
TMPDIR = '/tmp/test_kconfig'
|
||||||
|
@ -16,7 +16,7 @@ def test_kconfig(ubman):
|
||||||
cons = ubman
|
cons = ubman
|
||||||
|
|
||||||
# This detects build errors in test/lib/kconfig.c
|
# This detects build errors in test/lib/kconfig.c
|
||||||
out = util.run_and_log(
|
out = utils.run_and_log(
|
||||||
cons, ['./tools/buildman/buildman', '-m', '--board', 'sandbox',
|
cons, ['./tools/buildman/buildman', '-m', '--board', 'sandbox',
|
||||||
'-a', 'TEST_KCONFIG', '-o', TMPDIR], ignore_errors=True)
|
'-a', 'TEST_KCONFIG', '-o', TMPDIR], ignore_errors=True)
|
||||||
assert 'invalid_use_of_IF_ENABLED_INT' in out
|
assert 'invalid_use_of_IF_ENABLED_INT' in out
|
||||||
|
@ -29,7 +29,7 @@ def test_kconfig_spl(ubman):
|
||||||
cons = ubman
|
cons = ubman
|
||||||
|
|
||||||
# This detects build errors in test/lib/kconfig_spl.c
|
# This detects build errors in test/lib/kconfig_spl.c
|
||||||
out = util.run_and_log(
|
out = utils.run_and_log(
|
||||||
cons, ['./tools/buildman/buildman', '-m', '--board', 'sandbox_spl',
|
cons, ['./tools/buildman/buildman', '-m', '--board', 'sandbox_spl',
|
||||||
'-a', 'TEST_KCONFIG', '-o', TMPDIR], ignore_errors=True)
|
'-a', 'TEST_KCONFIG', '-o', TMPDIR], ignore_errors=True)
|
||||||
assert 'invalid_use_of_IF_ENABLED_INT' in out
|
assert 'invalid_use_of_IF_ENABLED_INT' in out
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
import os
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
# This is needed for Azure, since the default '..' directory is not writeable
|
# This is needed for Azure, since the default '..' directory is not writeable
|
||||||
TMPDIR1 = '/tmp/test_no_migrate'
|
TMPDIR1 = '/tmp/test_no_migrate'
|
||||||
|
@ -33,7 +33,7 @@ def build_for_migrate(cons, replace_pair, board, tmpdir, disable_migrate=True):
|
||||||
dt_dir = os.path.join(build_dir, 'arch', 'sandbox', 'dts')
|
dt_dir = os.path.join(build_dir, 'arch', 'sandbox', 'dts')
|
||||||
orig_fname = os.path.join(dt_dir, 'sandbox.dtb')
|
orig_fname = os.path.join(dt_dir, 'sandbox.dtb')
|
||||||
out_dts = os.path.join(dt_dir, 'sandbox_out.dts')
|
out_dts = os.path.join(dt_dir, 'sandbox_out.dts')
|
||||||
util.run_and_log(cons, ['dtc', orig_fname, '-I', 'dtb', '-O', 'dts',
|
utils.run_and_log(cons, ['dtc', orig_fname, '-I', 'dtb', '-O', 'dts',
|
||||||
'-o', out_dts])
|
'-o', out_dts])
|
||||||
|
|
||||||
# Update it to use an old tag
|
# Update it to use an old tag
|
||||||
|
@ -45,7 +45,7 @@ def build_for_migrate(cons, replace_pair, board, tmpdir, disable_migrate=True):
|
||||||
with open(dts_fname, 'w') as outf:
|
with open(dts_fname, 'w') as outf:
|
||||||
print(data, file=outf)
|
print(data, file=outf)
|
||||||
dtb_fname = os.path.join(dt_dir, 'sandbox_oldtag.dtb')
|
dtb_fname = os.path.join(dt_dir, 'sandbox_oldtag.dtb')
|
||||||
util.run_and_log(cons, ['dtc', dts_fname, '-o', dtb_fname])
|
utils.run_and_log(cons, ['dtc', dts_fname, '-o', dtb_fname])
|
||||||
|
|
||||||
migrate = ['-a', '~CONFIG_OF_TAG_MIGRATE'] if disable_migrate else []
|
migrate = ['-a', '~CONFIG_OF_TAG_MIGRATE'] if disable_migrate else []
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ def build_for_migrate(cons, replace_pair, board, tmpdir, disable_migrate=True):
|
||||||
env['EXT_DTB'] = dtb_fname
|
env['EXT_DTB'] = dtb_fname
|
||||||
env['DEVICE_TREE'] = 'sandbox_new'
|
env['DEVICE_TREE'] = 'sandbox_new'
|
||||||
env['NO_LTO'] = '1' # Speed up build
|
env['NO_LTO'] = '1' # Speed up build
|
||||||
out = util.run_and_log(
|
out = utils.run_and_log(
|
||||||
cons, ['./tools/buildman/buildman', '-m', '--board', board,
|
cons, ['./tools/buildman/buildman', '-m', '--board', board,
|
||||||
*migrate, '-w', '-o', tmpdir], ignore_errors=True, env=env)
|
*migrate, '-w', '-o', tmpdir], ignore_errors=True, env=env)
|
||||||
return out
|
return out
|
||||||
|
@ -70,7 +70,7 @@ def test_of_no_migrate(ubman):
|
||||||
|
|
||||||
# It should fail to run, since the lcd device will not be bound before
|
# It should fail to run, since the lcd device will not be bound before
|
||||||
# relocation. so won't get its frame-buffer memory
|
# relocation. so won't get its frame-buffer memory
|
||||||
out = util.run_and_log(
|
out = utils.run_and_log(
|
||||||
cons, [os.path.join(TMPDIR1, 'u-boot'), '-D', '-c', 'help'],
|
cons, [os.path.join(TMPDIR1, 'u-boot'), '-D', '-c', 'help'],
|
||||||
ignore_errors=True)
|
ignore_errors=True)
|
||||||
assert "Video device 'lcd' cannot allocate frame buffer memory" in out
|
assert "Video device 'lcd' cannot allocate frame buffer memory" in out
|
||||||
|
@ -102,7 +102,7 @@ def test_of_migrate(ubman):
|
||||||
'sandbox', TMPDIR3, disable_migrate=False)
|
'sandbox', TMPDIR3, disable_migrate=False)
|
||||||
|
|
||||||
# It should show a migration message
|
# It should show a migration message
|
||||||
out = util.run_and_log(
|
out = utils.run_and_log(
|
||||||
cons, [os.path.join(TMPDIR3, 'u-boot'), '-D', '-c', 'help'],
|
cons, [os.path.join(TMPDIR3, 'u-boot'), '-D', '-c', 'help'],
|
||||||
ignore_errors=True)
|
ignore_errors=True)
|
||||||
assert "Warning: Device tree includes old 'u-boot,dm-' tags" in out
|
assert "Warning: Device tree includes old 'u-boot,dm-' tags" in out
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# Copyright (c) 2016 Google, Inc
|
# Copyright (c) 2016 Google, Inc
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
@pytest.mark.boardspec('sandbox_spl')
|
@pytest.mark.boardspec('sandbox_spl')
|
||||||
@pytest.mark.buildconfigspec('spl_of_platdata')
|
@pytest.mark.buildconfigspec('spl_of_platdata')
|
||||||
|
@ -11,7 +11,7 @@ def test_spl_devicetree(ubman):
|
||||||
cons = ubman
|
cons = ubman
|
||||||
dtb = cons.config.build_dir + '/spl/u-boot-spl.dtb'
|
dtb = cons.config.build_dir + '/spl/u-boot-spl.dtb'
|
||||||
fdtgrep = cons.config.build_dir + '/tools/fdtgrep'
|
fdtgrep = cons.config.build_dir + '/tools/fdtgrep'
|
||||||
output = util.run_and_log(cons, [fdtgrep, '-l', dtb])
|
output = utils.run_and_log(cons, [fdtgrep, '-l', dtb])
|
||||||
|
|
||||||
assert "bootph-all" not in output
|
assert "bootph-all" not in output
|
||||||
assert "bootph-some-ram" not in output
|
assert "bootph-some-ram" not in output
|
||||||
|
|
|
@ -7,7 +7,7 @@ This tests optee_rpmb cmd in U-Boot
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
@pytest.mark.buildconfigspec('cmd_optee_rpmb')
|
@pytest.mark.buildconfigspec('cmd_optee_rpmb')
|
||||||
def test_optee_rpmb_read_write(ubman):
|
def test_optee_rpmb_read_write(ubman):
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
# This is needed for Azure, since the default '..' directory is not writeable
|
# This is needed for Azure, since the default '..' directory is not writeable
|
||||||
TMPDIR = '/tmp/test_cmdline'
|
TMPDIR = '/tmp/test_cmdline'
|
||||||
|
@ -15,7 +15,7 @@ def test_sandbox_cmdline(ubman):
|
||||||
"""Test building sandbox without CONFIG_CMDLINE"""
|
"""Test building sandbox without CONFIG_CMDLINE"""
|
||||||
cons = ubman
|
cons = ubman
|
||||||
|
|
||||||
out = util.run_and_log(
|
utils.run_and_log(
|
||||||
cons, ['./tools/buildman/buildman', '-m', '--board', 'sandbox',
|
cons, ['./tools/buildman/buildman', '-m', '--board', 'sandbox',
|
||||||
'-a', '~CMDLINE', '-o', TMPDIR])
|
'-a', '~CMDLINE', '-o', TMPDIR])
|
||||||
|
|
||||||
|
@ -25,6 +25,6 @@ def test_sandbox_lto(ubman):
|
||||||
"""Test building sandbox without CONFIG_LTO"""
|
"""Test building sandbox without CONFIG_LTO"""
|
||||||
cons = ubman
|
cons = ubman
|
||||||
|
|
||||||
out = util.run_and_log(
|
utils.run_and_log(
|
||||||
cons, ['./tools/buildman/buildman', '-m', '--board', 'sandbox',
|
cons, ['./tools/buildman/buildman', '-m', '--board', 'sandbox',
|
||||||
'-a', '~LTO', '-o', TMPDIR])
|
'-a', '~LTO', '-o', TMPDIR])
|
||||||
|
|
|
@ -11,7 +11,7 @@ For additional details check doc/usage/scp03.rst
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
@pytest.mark.buildconfigspec('cmd_scp03')
|
@pytest.mark.buildconfigspec('cmd_scp03')
|
||||||
def test_scp03(ubman):
|
def test_scp03(ubman):
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
@pytest.mark.boardspec('sandbox')
|
@pytest.mark.boardspec('sandbox')
|
||||||
@pytest.mark.buildconfigspec('cmd_echo')
|
@pytest.mark.buildconfigspec('cmd_echo')
|
||||||
|
@ -15,7 +15,7 @@ def test_source(ubman):
|
||||||
mkimage = os.path.join(cons.config.build_dir, 'tools/mkimage')
|
mkimage = os.path.join(cons.config.build_dir, 'tools/mkimage')
|
||||||
its = os.path.join(cons.config.source_dir, 'test/py/tests/source.its')
|
its = os.path.join(cons.config.source_dir, 'test/py/tests/source.its')
|
||||||
fit = os.path.join(cons.config.build_dir, 'source.itb')
|
fit = os.path.join(cons.config.build_dir, 'source.itb')
|
||||||
util.run_and_log(cons, (mkimage, '-f', its, fit))
|
utils.run_and_log(cons, (mkimage, '-f', its, fit))
|
||||||
cons.run_command(f'host load hostfs - $loadaddr {fit}')
|
cons.run_command(f'host load hostfs - $loadaddr {fit}')
|
||||||
|
|
||||||
assert '2' in cons.run_command('source')
|
assert '2' in cons.run_command('source')
|
||||||
|
|
|
@ -6,7 +6,7 @@ import os
|
||||||
import pytest
|
import pytest
|
||||||
import re
|
import re
|
||||||
|
|
||||||
import utils as util
|
import utils
|
||||||
|
|
||||||
# This is needed for Azure, since the default '..' directory is not writeable
|
# This is needed for Azure, since the default '..' directory is not writeable
|
||||||
TMPDIR = '/tmp/test_trace'
|
TMPDIR = '/tmp/test_trace'
|
||||||
|
@ -106,12 +106,12 @@ def check_function(cons, fname, proftool, map_fname, trace_dat):
|
||||||
map_fname (str): Filename of System.map
|
map_fname (str): Filename of System.map
|
||||||
trace_dat (str): Filename of output file
|
trace_dat (str): Filename of output file
|
||||||
"""
|
"""
|
||||||
out = util.run_and_log(
|
out = utils.run_and_log(
|
||||||
cons, [proftool, '-t', fname, '-o', trace_dat, '-m', map_fname,
|
cons, [proftool, '-t', fname, '-o', trace_dat, '-m', map_fname,
|
||||||
'dump-ftrace'])
|
'dump-ftrace'])
|
||||||
|
|
||||||
# Check that trace-cmd can read it
|
# Check that trace-cmd can read it
|
||||||
out = util.run_and_log(cons, ['trace-cmd', 'dump', trace_dat])
|
out = utils.run_and_log(cons, ['trace-cmd', 'dump', trace_dat])
|
||||||
|
|
||||||
# Tracing meta data in file /tmp/test_trace/trace.dat:
|
# Tracing meta data in file /tmp/test_trace/trace.dat:
|
||||||
# [Initial format]
|
# [Initial format]
|
||||||
|
@ -140,7 +140,7 @@ def check_function(cons, fname, proftool, map_fname, trace_dat):
|
||||||
|
|
||||||
# Check that the trace has something useful
|
# Check that the trace has something useful
|
||||||
cmd = f"trace-cmd report -l {trace_dat} |grep -E '(initf_|initr_)'"
|
cmd = f"trace-cmd report -l {trace_dat} |grep -E '(initf_|initr_)'"
|
||||||
out = util.run_and_log(cons, ['sh', '-c', cmd])
|
out = utils.run_and_log(cons, ['sh', '-c', cmd])
|
||||||
|
|
||||||
# Format:
|
# Format:
|
||||||
# u-boot-1 0..... 60.805596: function: initf_malloc
|
# u-boot-1 0..... 60.805596: function: initf_malloc
|
||||||
|
@ -182,13 +182,13 @@ def check_funcgraph(cons, fname, proftool, map_fname, trace_dat):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Generate the funcgraph format
|
# Generate the funcgraph format
|
||||||
out = util.run_and_log(
|
out = utils.run_and_log(
|
||||||
cons, [proftool, '-t', fname, '-o', trace_dat, '-m', map_fname,
|
cons, [proftool, '-t', fname, '-o', trace_dat, '-m', map_fname,
|
||||||
'dump-ftrace', '-f', 'funcgraph'])
|
'dump-ftrace', '-f', 'funcgraph'])
|
||||||
|
|
||||||
# Check that the trace has what we expect
|
# Check that the trace has what we expect
|
||||||
cmd = f'trace-cmd report -l {trace_dat} |head -n 70'
|
cmd = f'trace-cmd report -l {trace_dat} |head -n 70'
|
||||||
out = util.run_and_log(cons, ['sh', '-c', cmd])
|
out = utils.run_and_log(cons, ['sh', '-c', cmd])
|
||||||
|
|
||||||
# First look for this:
|
# First look for this:
|
||||||
# u-boot-1 0..... 282.101360: funcgraph_entry: 0.004 us | initf_malloc();
|
# u-boot-1 0..... 282.101360: funcgraph_entry: 0.004 us | initf_malloc();
|
||||||
|
@ -230,7 +230,7 @@ def check_funcgraph(cons, fname, proftool, map_fname, trace_dat):
|
||||||
# Now look for initf_dm() and dm_timer_init() so we can check the bootstage
|
# Now look for initf_dm() and dm_timer_init() so we can check the bootstage
|
||||||
# time
|
# time
|
||||||
cmd = f"trace-cmd report -l {trace_dat} |grep -E '(initf_dm|dm_timer_init)'"
|
cmd = f"trace-cmd report -l {trace_dat} |grep -E '(initf_dm|dm_timer_init)'"
|
||||||
out = util.run_and_log(cons, ['sh', '-c', cmd])
|
out = utils.run_and_log(cons, ['sh', '-c', cmd])
|
||||||
|
|
||||||
start_timestamp = None
|
start_timestamp = None
|
||||||
end_timestamp = None
|
end_timestamp = None
|
||||||
|
@ -267,7 +267,7 @@ def check_flamegraph(cons, fname, proftool, map_fname, trace_fg):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Generate the flamegraph format
|
# Generate the flamegraph format
|
||||||
out = util.run_and_log(
|
out = utils.run_and_log(
|
||||||
cons, [proftool, '-t', fname, '-o', trace_fg, '-m', map_fname,
|
cons, [proftool, '-t', fname, '-o', trace_fg, '-m', map_fname,
|
||||||
'dump-flamegraph'])
|
'dump-flamegraph'])
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ def check_flamegraph(cons, fname, proftool, map_fname, trace_fg):
|
||||||
assert found == 2
|
assert found == 2
|
||||||
|
|
||||||
# Generate the timing graph
|
# Generate the timing graph
|
||||||
out = util.run_and_log(
|
utils.run_and_log(
|
||||||
cons, [proftool, '-t', fname, '-o', trace_fg, '-m', map_fname,
|
cons, [proftool, '-t', fname, '-o', trace_fg, '-m', map_fname,
|
||||||
'dump-flamegraph', '-f', 'timing'])
|
'dump-flamegraph', '-f', 'timing'])
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ import os
|
||||||
import shutil
|
import shutil
|
||||||
import struct
|
import struct
|
||||||
import pytest
|
import pytest
|
||||||
import utils as util
|
import utils
|
||||||
import vboot_forge
|
import vboot_forge
|
||||||
import vboot_evil
|
import vboot_evil
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ def dtc(dts, cons, dtc_args, datadir, tmpdir, dtb):
|
||||||
dtb: Resulting DTB file.
|
dtb: Resulting DTB file.
|
||||||
"""
|
"""
|
||||||
dtb = dts.replace('.dts', '.dtb')
|
dtb = dts.replace('.dts', '.dtb')
|
||||||
util.run_and_log(cons, 'dtc %s %s%s -O dtb '
|
utils.run_and_log(cons, 'dtc %s %s%s -O dtb '
|
||||||
'-o %s%s' % (dtc_args, datadir, dts, tmpdir, dtb))
|
'-o %s%s' % (dtc_args, datadir, dts, tmpdir, dtb))
|
||||||
|
|
||||||
def make_fit(its, cons, mkimage, dtc_args, datadir, fit):
|
def make_fit(its, cons, mkimage, dtc_args, datadir, fit):
|
||||||
|
@ -78,7 +78,7 @@ def make_fit(its, cons, mkimage, dtc_args, datadir, fit):
|
||||||
datadir: Path to data directory.
|
datadir: Path to data directory.
|
||||||
fit: Resulting FIT file.
|
fit: Resulting FIT file.
|
||||||
"""
|
"""
|
||||||
util.run_and_log(cons, [mkimage, '-D', dtc_args, '-f',
|
utils.run_and_log(cons, [mkimage, '-D', dtc_args, '-f',
|
||||||
'%s%s' % (datadir, its), fit])
|
'%s%s' % (datadir, its), fit])
|
||||||
|
|
||||||
# Only run the full suite on a few combinations, since it doesn't add any more
|
# Only run the full suite on a few combinations, since it doesn't add any more
|
||||||
|
@ -134,8 +134,8 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
options: Options provided to the compiler.
|
options: Options provided to the compiler.
|
||||||
"""
|
"""
|
||||||
dtb = dts.replace('.dts', '.dtb')
|
dtb = dts.replace('.dts', '.dtb')
|
||||||
util.run_and_log(cons, 'dtc %s %s%s -O dtb '
|
utils.run_and_log(cons, 'dtc %s %s%s -O dtb -o %s%s %s' %
|
||||||
'-o %s%s %s' % (dtc_args, datadir, dts, tmpdir, dtb, options))
|
(dtc_args, datadir, dts, tmpdir, dtb, options))
|
||||||
|
|
||||||
def run_binman(dtb):
|
def run_binman(dtb):
|
||||||
"""Run binman to build an image
|
"""Run binman to build an image
|
||||||
|
@ -145,7 +145,7 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
"""
|
"""
|
||||||
pythonpath = os.environ.get('PYTHONPATH', '')
|
pythonpath = os.environ.get('PYTHONPATH', '')
|
||||||
os.environ['PYTHONPATH'] = pythonpath + ':' + '%s/../scripts/dtc/pylibfdt' % tmpdir
|
os.environ['PYTHONPATH'] = pythonpath + ':' + '%s/../scripts/dtc/pylibfdt' % tmpdir
|
||||||
util.run_and_log(cons, [binman, 'build', '-d', "%s/%s" % (tmpdir,dtb),
|
utils.run_and_log(cons, [binman, 'build', '-d', "%s/%s" % (tmpdir,dtb),
|
||||||
'-a', "pre-load-key-path=%s" % tmpdir, '-O',
|
'-a', "pre-load-key-path=%s" % tmpdir, '-O',
|
||||||
tmpdir, '-I', tmpdir])
|
tmpdir, '-I', tmpdir])
|
||||||
os.environ['PYTHONPATH'] = pythonpath
|
os.environ['PYTHONPATH'] = pythonpath
|
||||||
|
@ -195,7 +195,7 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
if options:
|
if options:
|
||||||
args += options.split(' ')
|
args += options.split(' ')
|
||||||
cons.log.action('%s: Sign images' % sha_algo)
|
cons.log.action('%s: Sign images' % sha_algo)
|
||||||
util.run_and_log(cons, args)
|
utils.run_and_log(cons, args)
|
||||||
|
|
||||||
def sign_fit_dtb(sha_algo, options, dtb):
|
def sign_fit_dtb(sha_algo, options, dtb):
|
||||||
"""Sign the FIT
|
"""Sign the FIT
|
||||||
|
@ -212,7 +212,7 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
if options:
|
if options:
|
||||||
args += options.split(' ')
|
args += options.split(' ')
|
||||||
cons.log.action('%s: Sign images' % sha_algo)
|
cons.log.action('%s: Sign images' % sha_algo)
|
||||||
util.run_and_log(cons, args)
|
utils.run_and_log(cons, args)
|
||||||
|
|
||||||
def sign_fit_norequire(sha_algo, options):
|
def sign_fit_norequire(sha_algo, options):
|
||||||
"""Sign the FIT
|
"""Sign the FIT
|
||||||
|
@ -229,7 +229,7 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
if options:
|
if options:
|
||||||
args += options.split(' ')
|
args += options.split(' ')
|
||||||
cons.log.action('%s: Sign images' % sha_algo)
|
cons.log.action('%s: Sign images' % sha_algo)
|
||||||
util.run_and_log(cons, args)
|
utils.run_and_log(cons, args)
|
||||||
|
|
||||||
def replace_fit_totalsize(size):
|
def replace_fit_totalsize(size):
|
||||||
"""Replace FIT header's totalsize with something greater.
|
"""Replace FIT header's totalsize with something greater.
|
||||||
|
@ -278,13 +278,13 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
else:
|
else:
|
||||||
rsa_keygen_bits = 2048
|
rsa_keygen_bits = 2048
|
||||||
|
|
||||||
util.run_and_log(cons, 'openssl genpkey -algorithm RSA -out %s%s.key '
|
utils.run_and_log(cons, 'openssl genpkey -algorithm RSA -out %s%s.key '
|
||||||
'-pkeyopt rsa_keygen_bits:%d '
|
'-pkeyopt rsa_keygen_bits:%d '
|
||||||
'-pkeyopt rsa_keygen_pubexp:%d' %
|
'-pkeyopt rsa_keygen_pubexp:%d' %
|
||||||
(tmpdir, name, rsa_keygen_bits, public_exponent))
|
(tmpdir, name, rsa_keygen_bits, public_exponent))
|
||||||
|
|
||||||
# Create a certificate containing the public key
|
# Create a certificate containing the public key
|
||||||
util.run_and_log(cons, 'openssl req -batch -new -x509 -key %s%s.key '
|
utils.run_and_log(cons, 'openssl req -batch -new -x509 -key %s%s.key '
|
||||||
'-out %s%s.crt' % (tmpdir, name, tmpdir, name))
|
'-out %s%s.crt' % (tmpdir, name, tmpdir, name))
|
||||||
|
|
||||||
def test_with_algo(sha_algo, padding, sign_options):
|
def test_with_algo(sha_algo, padding, sign_options):
|
||||||
|
@ -328,7 +328,7 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
|
|
||||||
cons.log.action('%s: Check signed config on the host' % sha_algo)
|
cons.log.action('%s: Check signed config on the host' % sha_algo)
|
||||||
|
|
||||||
util.run_and_log(cons, [fit_check_sign, '-f', fit, '-k', dtb])
|
utils.run_and_log(cons, [fit_check_sign, '-f', fit, '-k', dtb])
|
||||||
|
|
||||||
if full_test:
|
if full_test:
|
||||||
# Make sure that U-Boot checks that the config is in the list of
|
# Make sure that U-Boot checks that the config is in the list of
|
||||||
|
@ -340,7 +340,7 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
root, strblock = vboot_forge.manipulate(root, strblock)
|
root, strblock = vboot_forge.manipulate(root, strblock)
|
||||||
with open(ffit, 'w+b') as fd:
|
with open(ffit, 'w+b') as fd:
|
||||||
vboot_forge.write_fdt(root, strblock, fd)
|
vboot_forge.write_fdt(root, strblock, fd)
|
||||||
util.run_and_log_expect_exception(
|
utils.run_and_log_expect_exception(
|
||||||
cons, [fit_check_sign, '-f', ffit, '-k', dtb],
|
cons, [fit_check_sign, '-f', ffit, '-k', dtb],
|
||||||
1, 'Failed to verify required signature')
|
1, 'Failed to verify required signature')
|
||||||
|
|
||||||
|
@ -351,7 +351,7 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
shutil.copyfile(fit, efit)
|
shutil.copyfile(fit, efit)
|
||||||
vboot_evil.add_evil_node(fit, efit, evil_kernel, 'fakeroot')
|
vboot_evil.add_evil_node(fit, efit, evil_kernel, 'fakeroot')
|
||||||
|
|
||||||
util.run_and_log_expect_exception(
|
utils.run_and_log_expect_exception(
|
||||||
cons, [fit_check_sign, '-f', efit, '-k', dtb],
|
cons, [fit_check_sign, '-f', efit, '-k', dtb],
|
||||||
1, 'Failed to verify required signature')
|
1, 'Failed to verify required signature')
|
||||||
run_bootm(sha_algo, 'evil fakeroot', 'Bad FIT kernel image format',
|
run_bootm(sha_algo, 'evil fakeroot', 'Bad FIT kernel image format',
|
||||||
|
@ -363,7 +363,7 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
vboot_evil.add_evil_node(fit, efit, evil_kernel, 'kernel@')
|
vboot_evil.add_evil_node(fit, efit, evil_kernel, 'kernel@')
|
||||||
|
|
||||||
msg = 'Signature checking prevents use of unit addresses (@) in nodes'
|
msg = 'Signature checking prevents use of unit addresses (@) in nodes'
|
||||||
util.run_and_log_expect_exception(
|
utils.run_and_log_expect_exception(
|
||||||
cons, [fit_check_sign, '-f', efit, '-k', dtb],
|
cons, [fit_check_sign, '-f', efit, '-k', dtb],
|
||||||
1, msg)
|
1, msg)
|
||||||
run_bootm(sha_algo, 'evil kernel@', msg, False, efit)
|
run_bootm(sha_algo, 'evil kernel@', msg, False, efit)
|
||||||
|
@ -384,20 +384,20 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
cons.log.action('%s: Check default FIT header totalsize' % sha_algo)
|
cons.log.action('%s: Check default FIT header totalsize' % sha_algo)
|
||||||
|
|
||||||
# Increment the first byte of the signature, which should cause failure
|
# Increment the first byte of the signature, which should cause failure
|
||||||
sig = util.run_and_log(cons, 'fdtget -t bx %s %s value' %
|
sig = utils.run_and_log(cons, 'fdtget -t bx %s %s value' %
|
||||||
(fit, sig_node))
|
(fit, sig_node))
|
||||||
byte_list = sig.split()
|
byte_list = sig.split()
|
||||||
byte = int(byte_list[0], 16)
|
byte = int(byte_list[0], 16)
|
||||||
byte_list[0] = '%x' % (byte + 1)
|
byte_list[0] = '%x' % (byte + 1)
|
||||||
sig = ' '.join(byte_list)
|
sig = ' '.join(byte_list)
|
||||||
util.run_and_log(cons, 'fdtput -t bx %s %s value %s' %
|
utils.run_and_log(cons, 'fdtput -t bx %s %s value %s' %
|
||||||
(fit, sig_node, sig))
|
(fit, sig_node, sig))
|
||||||
|
|
||||||
run_bootm(sha_algo, 'Signed config with bad hash', 'Bad Data Hash',
|
run_bootm(sha_algo, 'Signed config with bad hash', 'Bad Data Hash',
|
||||||
False)
|
False)
|
||||||
|
|
||||||
cons.log.action('%s: Check bad config on the host' % sha_algo)
|
cons.log.action('%s: Check bad config on the host' % sha_algo)
|
||||||
util.run_and_log_expect_exception(
|
utils.run_and_log_expect_exception(
|
||||||
cons, [fit_check_sign, '-f', fit, '-k', dtb],
|
cons, [fit_check_sign, '-f', fit, '-k', dtb],
|
||||||
1, 'Failed to verify required signature')
|
1, 'Failed to verify required signature')
|
||||||
|
|
||||||
|
@ -449,8 +449,8 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
# a dev signature only (sign_fit() overwrites the FIT).
|
# a dev signature only (sign_fit() overwrites the FIT).
|
||||||
# Try to boot the FIT with dev key. This FIT should be accepted by
|
# Try to boot the FIT with dev key. This FIT should be accepted by
|
||||||
# U-Boot because the dev key is required and policy is "any" required key.
|
# U-Boot because the dev key is required and policy is "any" required key.
|
||||||
util.run_and_log(cons, 'fdtput -t s %s /signature required-mode any' %
|
utils.run_and_log(cons, 'fdtput -t s %s /signature required-mode any' %
|
||||||
(dtb))
|
dtb)
|
||||||
run_bootm(sha_algo, 'multi required key', 'dev+', True)
|
run_bootm(sha_algo, 'multi required key', 'dev+', True)
|
||||||
|
|
||||||
# Set the required-mode policy to "all".
|
# Set the required-mode policy to "all".
|
||||||
|
@ -459,8 +459,8 @@ def test_vboot(ubman, name, sha_algo, padding, sign_options, required,
|
||||||
# a dev signature only (sign_fit() overwrites the FIT).
|
# a dev signature only (sign_fit() overwrites the FIT).
|
||||||
# Try to boot the FIT with dev key. This FIT should not be accepted by
|
# Try to boot the FIT with dev key. This FIT should not be accepted by
|
||||||
# U-Boot because the prod key is required and policy is "all" required key
|
# U-Boot because the prod key is required and policy is "all" required key
|
||||||
util.run_and_log(cons, 'fdtput -t s %s /signature required-mode all' %
|
utils.run_and_log(cons, 'fdtput -t s %s /signature required-mode all' %
|
||||||
(dtb))
|
dtb)
|
||||||
run_bootm(sha_algo, 'multi required key', '', False)
|
run_bootm(sha_algo, 'multi required key', '', False)
|
||||||
|
|
||||||
def test_global_sign(sha_algo, padding, sign_options):
|
def test_global_sign(sha_algo, padding, sign_options):
|
||||||
|
@ -594,7 +594,7 @@ def test_fdt_add_pubkey(ubman, name, sha_algo, padding, sign_options, algo_arg):
|
||||||
if options:
|
if options:
|
||||||
args += options.split(' ')
|
args += options.split(' ')
|
||||||
cons.log.action('%s: Sign images' % sha_algo)
|
cons.log.action('%s: Sign images' % sha_algo)
|
||||||
util.run_and_log(cons, args)
|
utils.run_and_log(cons, args)
|
||||||
|
|
||||||
def test_add_pubkey(sha_algo, padding, sign_options):
|
def test_add_pubkey(sha_algo, padding, sign_options):
|
||||||
"""Test fdt_add_pubkey utility with given hash algorithm and padding.
|
"""Test fdt_add_pubkey utility with given hash algorithm and padding.
|
||||||
|
@ -613,7 +613,9 @@ def test_fdt_add_pubkey(ubman, name, sha_algo, padding, sign_options, algo_arg):
|
||||||
|
|
||||||
cons.log.action('%s: Test fdt_add_pubkey with signed configuration' % sha_algo)
|
cons.log.action('%s: Test fdt_add_pubkey with signed configuration' % sha_algo)
|
||||||
# Then add the dev key via the fdt_add_pubkey tool
|
# Then add the dev key via the fdt_add_pubkey tool
|
||||||
util.run_and_log(cons, [fdt_add_pubkey, '-a', '%s,%s' % ('sha256' if algo_arg else sha_algo, \
|
utils.run_and_log(cons,
|
||||||
|
[fdt_add_pubkey, '-a', '%s,%s' %
|
||||||
|
('sha256' if algo_arg else sha_algo,
|
||||||
'rsa3072' if sha_algo == 'sha384' else 'rsa2048'),
|
'rsa3072' if sha_algo == 'sha384' else 'rsa2048'),
|
||||||
'-k', tmpdir, '-n', 'dev', '-r', 'conf', dtb])
|
'-k', tmpdir, '-n', 'dev', '-r', 'conf', dtb])
|
||||||
|
|
||||||
|
@ -623,7 +625,7 @@ def test_fdt_add_pubkey(ubman, name, sha_algo, padding, sign_options, algo_arg):
|
||||||
sign_fit(sha_algo, sign_options)
|
sign_fit(sha_algo, sign_options)
|
||||||
|
|
||||||
# Check with fit_check_sign that FIT is signed with key
|
# Check with fit_check_sign that FIT is signed with key
|
||||||
util.run_and_log(cons, [fit_check_sign, '-f', fit, '-k', dtb])
|
utils.run_and_log(cons, [fit_check_sign, '-f', fit, '-k', dtb])
|
||||||
|
|
||||||
cons = ubman
|
cons = ubman
|
||||||
tmpdir = os.path.join(cons.config.result_dir, name) + '/'
|
tmpdir = os.path.join(cons.config.result_dir, name) + '/'
|
||||||
|
|
Loading…
Add table
Reference in a new issue