[PATCH] efi: test/py: repair authenticated capsules tests

AKASHI Takahiro takahiro.akashi at linaro.org
Tue Jun 28 07:14:03 CEST 2022


Heinrich,

On Mon, Jun 27, 2022 at 12:46:07PM +0200, Heinrich Schuchardt wrote:
> On 6/27/22 12:23, Vincent Stehlé wrote:
> > The UEFI console initialisation has been modified by commit 68edbed454b8
> > ("efi_loader: initialize console size late"). A corresponding workaround is
> > now necessary for the automated tests, as added to some of the tests
> > already by commit e05bd68ed5fc ("test: work around for EFI terminal size
> > probing").
> > 
> > Add the same workaround to the UEFI authenticated capsules tests to repair
> > them.
> > 
> > This can be tested with sandbox_defconfig, sandbox64_defconfig or
> > sandbox_flattree_defconfig, plus CONFIG_EFI_CAPSULE_AUTHENTICATE=y.
> > 
> > Signed-off-by: Vincent Stehlé <vincent.stehle at arm.com>
> 
> Why are these tests not run in Gitlab?
> Can't we permanently adjust one of said defconfigs for this purpose?
> Or do we need a new defconfig for testing?

Because we cannot turn on or off capsule authentication dynamically
on a single U-Boot image, we cannot test non-signed test cases
and signed test cases simultaneously in CI.

That is why I proposed a new config file for sandbox with
EFI_CAPSULE_AUTHENTICATE, but the idea was rejected (if I remember correctly, by Simon).

That said, I also made a small change to unsigned test cases
(test_efi_capsule_firmware(_*).py) so that they can *pass* even with
EFI_CAPSULE_AUTHENTICATE enabled.
(As you can image, however, actual capsule update never happens in
this test environment.)

commit e012550cd7d6 ("test/py: efi_capsule: check the results in case of
CAPSULE_AUTHENTICATE")


-Takahiro Akashi


> Best regards
> 
> Heinrich
> 
> > Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
> > ---
> >   .../tests/test_efi_capsule/test_capsule_firmware_signed_fit.py | 3 +++
> >   .../tests/test_efi_capsule/test_capsule_firmware_signed_raw.py | 2 ++
> >   2 files changed, 5 insertions(+)
> > 
> > diff --git a/test/py/tests/test_efi_capsule/test_capsule_firmware_signed_fit.py b/test/py/tests/test_efi_capsule/test_capsule_firmware_signed_fit.py
> > index 4400b8f1368..d6ca9b16745 100644
> > --- a/test/py/tests/test_efi_capsule/test_capsule_firmware_signed_fit.py
> > +++ b/test/py/tests/test_efi_capsule/test_capsule_firmware_signed_fit.py
> > @@ -40,6 +40,7 @@ class TestEfiCapsuleFirmwareSignedFit(object):
> >           with u_boot_console.log.section('Test Case 1-a, before reboot'):
> >               output = u_boot_console.run_command_list([
> >                   'host bind 0 %s' % disk_img,
> > +                'printenv -e PlatformLangCodes', # workaround for terminal size determination
> >                   'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi',
> >                   'efidebug boot order 1',
> >                   'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
> > @@ -115,6 +116,7 @@ class TestEfiCapsuleFirmwareSignedFit(object):
> >           with u_boot_console.log.section('Test Case 2-a, before reboot'):
> >               output = u_boot_console.run_command_list([
> >                   'host bind 0 %s' % disk_img,
> > +                'printenv -e PlatformLangCodes', # workaround for terminal size determination
> >                   'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi',
> >                   'efidebug boot order 1',
> >                   'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
> > @@ -192,6 +194,7 @@ class TestEfiCapsuleFirmwareSignedFit(object):
> >           with u_boot_console.log.section('Test Case 3-a, before reboot'):
> >               output = u_boot_console.run_command_list([
> >                   'host bind 0 %s' % disk_img,
> > +                'printenv -e PlatformLangCodes', # workaround for terminal size determination
> >                   'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi',
> >                   'efidebug boot order 1',
> >                   'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
> > diff --git a/test/py/tests/test_efi_capsule/test_capsule_firmware_signed_raw.py b/test/py/tests/test_efi_capsule/test_capsule_firmware_signed_raw.py
> > index 1b5a1bb42eb..2bbaa9cc55f 100644
> > --- a/test/py/tests/test_efi_capsule/test_capsule_firmware_signed_raw.py
> > +++ b/test/py/tests/test_efi_capsule/test_capsule_firmware_signed_raw.py
> > @@ -112,6 +112,7 @@ class TestEfiCapsuleFirmwareSignedRaw(object):
> >           with u_boot_console.log.section('Test Case 2-a, before reboot'):
> >               output = u_boot_console.run_command_list([
> >                   'host bind 0 %s' % disk_img,
> > +                'printenv -e PlatformLangCodes', # workaround for terminal size determination
> >                   'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi',
> >                   'efidebug boot order 1',
> >                   'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
> > @@ -189,6 +190,7 @@ class TestEfiCapsuleFirmwareSignedRaw(object):
> >           with u_boot_console.log.section('Test Case 3-a, before reboot'):
> >               output = u_boot_console.run_command_list([
> >                   'host bind 0 %s' % disk_img,
> > +                'printenv -e PlatformLangCodes', # workaround for terminal size determination
> >                   'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi',
> >                   'efidebug boot order 1',
> >                   'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
> 


More information about the U-Boot mailing list