All of lore.kernel.org
 help / color / mirror / Atom feed
From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: Sughosh Ganu <sughosh.ganu@linaro.org>
Cc: u-boot@lists.denx.de, Heinrich Schuchardt <xypron.glpk@gmx.de>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	Ying-Chun Liu <paul.liu@linaro.org>,
	Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>,
	Heiko Thiery <heiko.thiery@gmail.com>,
	Frieder Schrempf <frieder.schrempf@kontron.de>,
	Michael Walle <michael@walle.cc>,
	Masami Hiramatsu <masami.hiramatsu@linaro.org>,
	Jassi Brar <jaswinder.singh@linaro.org>,
	Michal Simek <monstr@monstr.eu>,
	Michal Simek <michal.simek@xilinx.com>
Subject: Re: [PATCH v6 5/8] test: capsule: Modify the capsule tests to use GUID values for sandbox
Date: Wed, 13 Apr 2022 15:35:32 +0900	[thread overview]
Message-ID: <20220413063532.GD87648@laputa> (raw)
In-Reply-To: <20220412130447.300574-6-sughosh.ganu@linaro.org>

On Tue, Apr 12, 2022 at 06:34:44PM +0530, Sughosh Ganu wrote:
> The current UEFI capsule updation code uses two GUID values, one for
> FIT images, and one for raw images across platforms. This logic is
> being changed to have GUID values per image, per platform. Change the
> tests for the capsule update code to reflect this change. The GUID
> values now used are the ones specific to the sandbox platform -- one
> for the u-boot image, and another for the u-boot environment image.
> 
> Install the FMP instance for raw images on the sandbox variant for
> testing the capsule update code. Install the FMP instance for the FIT
> images on the sandbox64 and sandbox_flattree variant for testing
> capsule update for FIT images. This is being done by splitting the
> capsule update script for FIT and raw images.

Why do we have to have different configs to test FIT and RAW capsules?

> Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
> ---
> 
> Changes since V5:
> * Restart the platform before starting the tests. This is done to
>   clear out any stale state from a previously run test.
> 
> 
>  configs/sandbox64_defconfig                   |   1 -
>  configs/sandbox_defconfig                     |   1 -
>  configs/sandbox_flattree_defconfig            |   5 +
>  test/py/tests/test_efi_capsule/conftest.py    |  21 +-
>  .../test_capsule_firmware_fit.py              | 191 ++++++++++++++++++
>  ...rmware.py => test_capsule_firmware_raw.py} | 167 ++++++---------
>  6 files changed, 270 insertions(+), 116 deletions(-)
>  create mode 100644 test/py/tests/test_efi_capsule/test_capsule_firmware_fit.py
>  rename test/py/tests/test_efi_capsule/{test_capsule_firmware.py => test_capsule_firmware_raw.py} (75%)
> 
> diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig
> index 88f9ecbb7f..db748bbed3 100644
> --- a/configs/sandbox64_defconfig
> +++ b/configs/sandbox64_defconfig
> @@ -246,7 +246,6 @@ CONFIG_ERRNO_STR=y
>  CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
>  CONFIG_EFI_CAPSULE_ON_DISK=y
>  CONFIG_EFI_CAPSULE_FIRMWARE_FIT=y
> -CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
>  CONFIG_EFI_SECURE_BOOT=y
>  CONFIG_TEST_FDTDEC=y
>  CONFIG_UNIT_TEST=y
> diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
> index cb8d590eb6..0dfc2d863d 100644
> --- a/configs/sandbox_defconfig
> +++ b/configs/sandbox_defconfig
> @@ -319,7 +319,6 @@ CONFIG_SHA384=y
>  CONFIG_ERRNO_STR=y
>  CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
>  CONFIG_EFI_CAPSULE_ON_DISK=y
> -CONFIG_EFI_CAPSULE_FIRMWARE_FIT=y
>  CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
>  CONFIG_EFI_SECURE_BOOT=y
>  CONFIG_TEST_FDTDEC=y
> diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig
> index 24b272068a..27dd38a0c0 100644
> --- a/configs/sandbox_flattree_defconfig
> +++ b/configs/sandbox_flattree_defconfig
> @@ -28,6 +28,7 @@ CONFIG_CMD_BOOTEFI_HELLO=y
>  CONFIG_CMD_ASKENV=y
>  CONFIG_CMD_GREPENV=y
>  CONFIG_CMD_ERASEENV=y
> +CONFIG_CMD_NVEDIT_EFI=y
>  CONFIG_CMD_NVEDIT_INFO=y
>  CONFIG_CMD_NVEDIT_LOAD=y
>  CONFIG_CMD_NVEDIT_SELECT=y
> @@ -209,3 +210,7 @@ CONFIG_HEXDUMP=y
>  CONFIG_UNIT_TEST=y
>  CONFIG_UT_TIME=y
>  CONFIG_UT_DM=y
> +CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
> +CONFIG_EFI_CAPSULE_ON_DISK=y
> +CONFIG_EFI_CAPSULE_FIRMWARE_FIT=y
> +CONFIG_DFU_SF=y
> diff --git a/test/py/tests/test_efi_capsule/conftest.py b/test/py/tests/test_efi_capsule/conftest.py
> index 9076087a12..d757415c88 100644
> --- a/test/py/tests/test_efi_capsule/conftest.py
> +++ b/test/py/tests/test_efi_capsule/conftest.py
> @@ -72,7 +72,7 @@ def efi_capsule_data(request, u_boot_config):
>  
>          # Create capsule files
>          # two regions: one for u-boot.bin and the other for u-boot.env
> -        check_call('cd %s; echo -n u-boot:Old > u-boot.bin.old; echo -n u-boot:New > u-boot.bin.new; echo -n u-boot-env:Old -> u-boot.env.old; echo -n u-boot-env:New > u-boot.env.new' % data_dir,
> +        check_call('cd %s; echo -n u-boot:Old > u-boot.bin.old; echo -n u-boot:New > u-boot.bin.new; echo -n u-boot-env:Old > u-boot.env.old; echo -n u-boot-env:New > u-boot.env.new' % data_dir,
>                     shell=True)
>          check_call('sed -e \"s?BINFILE1?u-boot.bin.new?\" -e \"s?BINFILE2?u-boot.env.new?\" %s/test/py/tests/test_efi_capsule/uboot_bin_env.its > %s/uboot_bin_env.its' %
>                     (u_boot_config.source_dir, data_dir),
> @@ -80,21 +80,29 @@ def efi_capsule_data(request, u_boot_config):
>          check_call('cd %s; %s/tools/mkimage -f uboot_bin_env.its uboot_bin_env.itb' %
>                     (data_dir, u_boot_config.build_dir),
>                     shell=True)
> -        check_call('cd %s; %s/tools/mkeficapsule --index 1 --fit uboot_bin_env.itb Test01' %
> +        check_call('cd %s; %s/tools/mkeficapsule --index 1 --guid 09D7CF52-0720-4710-91D1-08469B7FE9C8 u-boot.bin.new Test01' %
>                     (data_dir, u_boot_config.build_dir),
>                     shell=True)
> -        check_call('cd %s; %s/tools/mkeficapsule --index 1 --raw u-boot.bin.new Test02' %
> +        check_call('cd %s; %s/tools/mkeficapsule --index 2 --guid 5A7021F5-FEF2-48B4-AABA-832E777418C0 u-boot.env.new Test02' %
>                     (data_dir, u_boot_config.build_dir),
>                     shell=True)
> -        check_call('cd %s; %s/tools/mkeficapsule --index 1 --guid E2BB9C06-70E9-4B14-97A3-5A7913176E3F u-boot.bin.new Test03' %
> +        check_call('cd %s; %s/tools/mkeficapsule --index 1 --guid 058B7D83-50D5-4C47-A195-60D86AD341C4 u-boot.bin.new Test03' %
>                     (data_dir, u_boot_config.build_dir),
>                     shell=True)
> +        check_call('cd %s; %s/tools/mkeficapsule --index 1 --guid 3673B45D-6A7C-46F3-9E60-ADABB03F7937 uboot_bin_env.itb Test04' %
> +                   (data_dir, u_boot_config.build_dir),
> +                   shell=True)
> +        check_call('cd %s; %s/tools/mkeficapsule --index 1 --guid  058B7D83-50D5-4C47-A195-60D86AD341C4 uboot_bin_env.itb Test05' %
> +                   (data_dir, u_boot_config.build_dir),
> +                   shell=True)
> +
>          if capsule_auth_enabled:
>              # firmware signed with proper key
>              check_call('cd %s; '
>                         '%s/tools/mkeficapsule --index 1 --monotonic-count 1 '
>                              '--private-key SIGNER.key --certificate SIGNER.crt '
> -                            '--raw u-boot.bin.new Test11'
> +                            '--guid 09D7DF52-0720-4710-91D1-08469B7FE9C8 '
> +                            'u-boot.bin.new Test11'
>                         % (data_dir, u_boot_config.build_dir),
>                         shell=True)
>              # firmware signed with *mal* key
> @@ -102,7 +110,8 @@ def efi_capsule_data(request, u_boot_config):
>                         '%s/tools/mkeficapsule --index 1 --monotonic-count 1 '
>                              '--private-key SIGNER2.key '
>                              '--certificate SIGNER2.crt '
> -                            '--raw u-boot.bin.new Test12'
> +                            '--guid 09D7DF52-0720-4710-91D1-08469B7FE9C8 '
> +                            'u-boot.bin.new Test12'
>                         % (data_dir, u_boot_config.build_dir),
>                         shell=True)
>  
> diff --git a/test/py/tests/test_efi_capsule/test_capsule_firmware_fit.py b/test/py/tests/test_efi_capsule/test_capsule_firmware_fit.py
> new file mode 100644
> index 0000000000..5bef84958b
> --- /dev/null
> +++ b/test/py/tests/test_efi_capsule/test_capsule_firmware_fit.py

If possible, can you manage the git history so that
  test/py/tests/test_efi_capsule/test_capsule_firmware_fit.py
is the original and
  test/py/tests/test_efi_capsule/test_capsule_firmware_raw.py
is a new test?
I think that will reflect the correct history of development/changes.

-Takahiro Akashi

> @@ -0,0 +1,191 @@
> +# SPDX-License-Identifier:      GPL-2.0+
> +# Copyright (c) 2020, Linaro Limited
> +# Author: AKASHI Takahiro <takahiro.akashi@linaro.org>
> +#
> +# U-Boot UEFI: Firmware Update Test
> +
> +"""
> +This test verifies capsule-on-disk firmware update for FIT images
> +"""
> +
> +from subprocess import check_call, check_output, CalledProcessError
> +import pytest
> +from capsule_defs import *
> +
> +
> +@pytest.mark.boardspec('sandbox64')
> +@pytest.mark.boardspec('sandbox_flattree')
> +@pytest.mark.buildconfigspec('efi_capsule_firmware_fit')
> +@pytest.mark.buildconfigspec('efi_capsule_on_disk')
> +@pytest.mark.buildconfigspec('dfu')
> +@pytest.mark.buildconfigspec('dfu_sf')
> +@pytest.mark.buildconfigspec('cmd_efidebug')
> +@pytest.mark.buildconfigspec('cmd_fat')
> +@pytest.mark.buildconfigspec('cmd_memory')
> +@pytest.mark.buildconfigspec('cmd_nvedit_efi')
> +@pytest.mark.buildconfigspec('cmd_sf')
> +@pytest.mark.slow
> +class TestEfiCapsuleFirmwareFit(object):
> +    def test_efi_capsule_fw1(
> +            self, u_boot_config, u_boot_console, efi_capsule_data):
> +        """
> +        Test Case 1 - Update U-Boot and U-Boot environment on SPI Flash
> +                      but with an incorrect GUID value in the capsule
> +                      No update should happen
> +                      0x100000-0x150000: U-Boot binary (but dummy)
> +                      0x150000-0x200000: U-Boot environment (but dummy)
> +        """
> +        # other tests might have run and the
> +        # system might not be in a clean state.
> +        # Restart before starting the tests.
> +        u_boot_console.restart_uboot()
> +
> +        disk_img = efi_capsule_data
> +        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,
> +                'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi -s ""',
> +                'efidebug boot order 1',
> +                'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
> +                'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
> +                'env save'])
> +
> +            # initialize contents
> +            output = u_boot_console.run_command_list([
> +                'sf probe 0:0',
> +                'fatload host 0:1 4000000 %s/u-boot.bin.old' % CAPSULE_DATA_DIR,
> +                'sf write 4000000 100000 10',
> +                'sf read 5000000 100000 10',
> +                'md.b 5000000 10'])
> +            assert 'Old' in ''.join(output)
> +            output = u_boot_console.run_command_list([
> +                'sf probe 0:0',
> +                'fatload host 0:1 4000000 %s/u-boot.env.old' % CAPSULE_DATA_DIR,
> +                'sf write 4000000 150000 10',
> +                'sf read 5000000 150000 10',
> +                'md.b 5000000 10'])
> +            assert 'Old' in ''.join(output)
> +
> +            # place a capsule file
> +            output = u_boot_console.run_command_list([
> +                'fatload host 0:1 4000000 %s/Test05' % CAPSULE_DATA_DIR,
> +                'fatwrite host 0:1 4000000 %s/Test05 $filesize' % CAPSULE_INSTALL_DIR,
> +                'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> +            assert 'Test05' in ''.join(output)
> +
> +        capsule_early = u_boot_config.buildconfig.get(
> +            'config_efi_capsule_on_disk_early')
> +        capsule_auth = u_boot_config.buildconfig.get(
> +            'config_efi_capsule_authenticate')
> +
> +        # reboot
> +        u_boot_console.restart_uboot(expect_reset = capsule_early)
> +
> +        with u_boot_console.log.section('Test Case 1-b, after reboot'):
> +            if not capsule_early:
> +                # make sure that dfu_alt_info exists even persistent variables
> +                # are not available.
> +                output = u_boot_console.run_command_list([
> +                    'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
> +                    'host bind 0 %s' % disk_img,
> +                    'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> +                assert 'Test05' in ''.join(output)
> +
> +                # need to run uefi command to initiate capsule handling
> +                output = u_boot_console.run_command(
> +                    'env print -e Capsule0000', wait_for_reboot = True)
> +
> +            output = u_boot_console.run_command_list([
> +                'sf probe 0:0',
> +                'sf read 4000000 100000 10',
> +                'md.b 4000000 10'])
> +            assert 'u-boot:Old' in ''.join(output)
> +
> +            output = u_boot_console.run_command_list([
> +                'sf read 4000000 150000 10',
> +                'md.b 4000000 10'])
> +            assert 'u-boot-env:Old' in ''.join(output)
> +
> +    def test_efi_capsule_fw2(
> +            self, u_boot_config, u_boot_console, efi_capsule_data):
> +        """
> +        Test Case 2 - Update U-Boot and U-Boot environment on SPI Flash
> +                      0x100000-0x150000: U-Boot binary (but dummy)
> +                      0x150000-0x200000: U-Boot environment (but dummy)
> +        """
> +        disk_img = efi_capsule_data
> +        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,
> +                'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi -s ""',
> +                'efidebug boot order 1',
> +                'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
> +                'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
> +                'env save'])
> +
> +            # initialize contents
> +            output = u_boot_console.run_command_list([
> +                'sf probe 0:0',
> +                'fatload host 0:1 4000000 %s/u-boot.bin.old' % CAPSULE_DATA_DIR,
> +                'sf write 4000000 100000 10',
> +                'sf read 5000000 100000 10',
> +                'md.b 5000000 10'])
> +            assert 'Old' in ''.join(output)
> +            output = u_boot_console.run_command_list([
> +                'sf probe 0:0',
> +                'fatload host 0:1 4000000 %s/u-boot.env.old' % CAPSULE_DATA_DIR,
> +                'sf write 4000000 150000 10',
> +                'sf read 5000000 150000 10',
> +                'md.b 5000000 10'])
> +            assert 'Old' in ''.join(output)
> +
> +            # place a capsule file
> +            output = u_boot_console.run_command_list([
> +                'fatload host 0:1 4000000 %s/Test04' % CAPSULE_DATA_DIR,
> +                'fatwrite host 0:1 4000000 %s/Test04 $filesize' % CAPSULE_INSTALL_DIR,
> +                'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> +            assert 'Test04' in ''.join(output)
> +
> +        capsule_early = u_boot_config.buildconfig.get(
> +            'config_efi_capsule_on_disk_early')
> +        capsule_auth = u_boot_config.buildconfig.get(
> +            'config_efi_capsule_authenticate')
> +
> +        # reboot
> +        u_boot_console.restart_uboot(expect_reset = capsule_early)
> +
> +        with u_boot_console.log.section('Test Case 2-b, after reboot'):
> +            if not capsule_early:
> +                # make sure that dfu_alt_info exists even persistent variables
> +                # are not available.
> +                output = u_boot_console.run_command_list([
> +                    'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
> +                    'host bind 0 %s' % disk_img,
> +                    'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> +                assert 'Test04' in ''.join(output)
> +
> +                # need to run uefi command to initiate capsule handling
> +                output = u_boot_console.run_command(
> +                    'env print -e Capsule0000', wait_for_reboot = True)
> +
> +            output = u_boot_console.run_command_list([
> +                'host bind 0 %s' % disk_img,
> +                'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> +            assert 'Test04' not in ''.join(output)
> +
> +            output = u_boot_console.run_command_list([
> +                'sf probe 0:0',
> +                'sf read 4000000 100000 10',
> +                'md.b 4000000 10'])
> +            if capsule_auth:
> +                assert 'u-boot:Old' in ''.join(output)
> +            else:
> +                assert 'u-boot:New' in ''.join(output)
> +
> +            output = u_boot_console.run_command_list([
> +                'sf read 4000000 150000 10',
> +                'md.b 4000000 10'])
> +            if capsule_auth:
> +                assert 'u-boot-env:Old' in ''.join(output)
> +            else:
> +                assert 'u-boot-env:New' in ''.join(output)
> diff --git a/test/py/tests/test_efi_capsule/test_capsule_firmware.py b/test/py/tests/test_efi_capsule/test_capsule_firmware_raw.py
> similarity index 75%
> rename from test/py/tests/test_efi_capsule/test_capsule_firmware.py
> rename to test/py/tests/test_efi_capsule/test_capsule_firmware_raw.py
> index 1dcf1c70f4..ae99f080ff 100644
> --- a/test/py/tests/test_efi_capsule/test_capsule_firmware.py
> +++ b/test/py/tests/test_efi_capsule/test_capsule_firmware_raw.py
> @@ -5,7 +5,7 @@
>  # U-Boot UEFI: Firmware Update Test
>  
>  """
> -This test verifies capsule-on-disk firmware update
> +This test verifies capsule-on-disk firmware update for raw images
>  """
>  
>  from subprocess import check_call, check_output, CalledProcessError
> @@ -14,7 +14,6 @@ from capsule_defs import *
>  
>  
>  @pytest.mark.boardspec('sandbox')
> -@pytest.mark.buildconfigspec('efi_capsule_firmware_fit')
>  @pytest.mark.buildconfigspec('efi_capsule_firmware_raw')
>  @pytest.mark.buildconfigspec('efi_capsule_on_disk')
>  @pytest.mark.buildconfigspec('dfu')
> @@ -25,23 +24,29 @@ from capsule_defs import *
>  @pytest.mark.buildconfigspec('cmd_nvedit_efi')
>  @pytest.mark.buildconfigspec('cmd_sf')
>  @pytest.mark.slow
> -class TestEfiCapsuleFirmwareFit(object):
> +class TestEfiCapsuleFirmwareRaw(object):
>      def test_efi_capsule_fw1(
>              self, u_boot_config, u_boot_console, efi_capsule_data):
>          """
>          Test Case 1 - Update U-Boot and U-Boot environment on SPI Flash
> -                      but with OsIndications unset
> +                      but with an incorrect GUID value in the capsule
>                        No update should happen
>                        0x100000-0x150000: U-Boot binary (but dummy)
>                        0x150000-0x200000: U-Boot environment (but dummy)
>          """
> +
> +        # other tests might have run and the
> +        # system might not be in a clean state.
> +        # Restart before starting the tests.
> +        u_boot_console.restart_uboot()
> +
>          disk_img = efi_capsule_data
>          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,
>                  'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi -s ""',
>                  'efidebug boot order 1',
> -                'env set -e OsIndications',
> +                'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
>                  'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
>                  'env save'])
>  
> @@ -63,16 +68,17 @@ class TestEfiCapsuleFirmwareFit(object):
>  
>              # place a capsule file
>              output = u_boot_console.run_command_list([
> -                'fatload host 0:1 4000000 %s/Test01' % CAPSULE_DATA_DIR,
> -                'fatwrite host 0:1 4000000 %s/Test01 $filesize' % CAPSULE_INSTALL_DIR,
> +                'fatload host 0:1 4000000 %s/Test03' % CAPSULE_DATA_DIR,
> +                'fatwrite host 0:1 4000000 %s/Test03 $filesize' % CAPSULE_INSTALL_DIR,
>                  'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> -            assert 'Test01' in ''.join(output)
> +            assert 'Test03' in ''.join(output)
>  
>          # reboot
>          u_boot_console.restart_uboot()
>  
>          capsule_early = u_boot_config.buildconfig.get(
>              'config_efi_capsule_on_disk_early')
> +
>          with u_boot_console.log.section('Test Case 1-b, after reboot'):
>              if not capsule_early:
>                  # make sure that dfu_alt_info exists even persistent variables
> @@ -81,16 +87,11 @@ class TestEfiCapsuleFirmwareFit(object):
>                      'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
>                      'host bind 0 %s' % disk_img,
>                      'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> -                assert 'Test01' in ''.join(output)
> +                assert 'Test03' in ''.join(output)
>  
>                  # need to run uefi command to initiate capsule handling
>                  output = u_boot_console.run_command(
> -                    'env print -e Capsule0000')
> -
> -            output = u_boot_console.run_command_list([
> -                'host bind 0 %s' % disk_img,
> -                'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> -            assert 'Test01' in ''.join(output)
> +                    'env print -e Capsule0000', wait_for_reboot = True)
>  
>              output = u_boot_console.run_command_list([
>                  'sf probe 0:0',
> @@ -107,6 +108,8 @@ class TestEfiCapsuleFirmwareFit(object):
>              self, u_boot_config, u_boot_console, efi_capsule_data):
>          """
>          Test Case 2 - Update U-Boot and U-Boot environment on SPI Flash
> +                      but with OsIndications unset
> +                      No update should happen
>                        0x100000-0x150000: U-Boot binary (but dummy)
>                        0x150000-0x200000: U-Boot environment (but dummy)
>          """
> @@ -116,7 +119,7 @@ class TestEfiCapsuleFirmwareFit(object):
>                  'host bind 0 %s' % disk_img,
>                  'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi -s ""',
>                  'efidebug boot order 1',
> -                'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
> +                'env set -e OsIndications',
>                  'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
>                  'env save'])
>  
> @@ -136,21 +139,24 @@ class TestEfiCapsuleFirmwareFit(object):
>                  'md.b 5000000 10'])
>              assert 'Old' in ''.join(output)
>  
> -            # place a capsule file
> +            # place the capsule files
>              output = u_boot_console.run_command_list([
>                  'fatload host 0:1 4000000 %s/Test01' % CAPSULE_DATA_DIR,
>                  'fatwrite host 0:1 4000000 %s/Test01 $filesize' % CAPSULE_INSTALL_DIR,
>                  'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
>              assert 'Test01' in ''.join(output)
>  
> -        capsule_early = u_boot_config.buildconfig.get(
> -            'config_efi_capsule_on_disk_early')
> -        capsule_auth = u_boot_config.buildconfig.get(
> -            'config_efi_capsule_authenticate')
> +            output = u_boot_console.run_command_list([
> +                'fatload host 0:1 4000000 %s/Test02' % CAPSULE_DATA_DIR,
> +                'fatwrite host 0:1 4000000 %s/Test02 $filesize' % CAPSULE_INSTALL_DIR,
> +                'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> +            assert 'Test02' in ''.join(output)
>  
>          # reboot
> -        u_boot_console.restart_uboot(expect_reset = capsule_early)
> +        u_boot_console.restart_uboot()
>  
> +        capsule_early = u_boot_config.buildconfig.get(
> +            'config_efi_capsule_on_disk_early')
>          with u_boot_console.log.section('Test Case 2-b, after reboot'):
>              if not capsule_early:
>                  # make sure that dfu_alt_info exists even persistent variables
> @@ -160,32 +166,28 @@ class TestEfiCapsuleFirmwareFit(object):
>                      'host bind 0 %s' % disk_img,
>                      'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
>                  assert 'Test01' in ''.join(output)
> +                assert 'Test02' in ''.join(output)
>  
>                  # need to run uefi command to initiate capsule handling
>                  output = u_boot_console.run_command(
> -                    'env print -e Capsule0000', wait_for_reboot = True)
> +                    'env print -e Capsule0000')
>  
>              output = u_boot_console.run_command_list([
>                  'host bind 0 %s' % disk_img,
>                  'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> -            assert 'Test01' not in ''.join(output)
> +            assert 'Test01' in ''.join(output)
> +            assert 'Test02' in ''.join(output)
>  
>              output = u_boot_console.run_command_list([
>                  'sf probe 0:0',
>                  'sf read 4000000 100000 10',
>                  'md.b 4000000 10'])
> -            if capsule_auth:
> -                assert 'u-boot:Old' in ''.join(output)
> -            else:
> -                assert 'u-boot:New' in ''.join(output)
> +            assert 'u-boot:Old' in ''.join(output)
>  
>              output = u_boot_console.run_command_list([
>                  'sf read 4000000 150000 10',
>                  'md.b 4000000 10'])
> -            if capsule_auth:
> -                assert 'u-boot-env:Old' in ''.join(output)
> -            else:
> -                assert 'u-boot-env:New' in ''.join(output)
> +            assert 'u-boot-env:Old' in ''.join(output)
>  
>      def test_efi_capsule_fw3(
>              self, u_boot_config, u_boot_console, efi_capsule_data):
> @@ -203,7 +205,7 @@ class TestEfiCapsuleFirmwareFit(object):
>                  'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
>                  'env save'])
>  
> -            # initialize content
> +            # initialize contents
>              output = u_boot_console.run_command_list([
>                  'sf probe 0:0',
>                  'fatload host 0:1 4000000 %s/u-boot.bin.old' % CAPSULE_DATA_DIR,
> @@ -212,7 +214,21 @@ class TestEfiCapsuleFirmwareFit(object):
>                  'md.b 5000000 10'])
>              assert 'Old' in ''.join(output)
>  
> -            # place a capsule file
> +            output = u_boot_console.run_command_list([
> +                'sf probe 0:0',
> +                'fatload host 0:1 4000000 %s/u-boot.env.old' % CAPSULE_DATA_DIR,
> +                'sf write 4000000 150000 10',
> +                'sf read 5000000 100000 10',
> +                'md.b 5000000 10'])
> +            assert 'Old' in ''.join(output)
> +
> +            # place the capsule files
> +            output = u_boot_console.run_command_list([
> +                'fatload host 0:1 4000000 %s/Test01' % CAPSULE_DATA_DIR,
> +                'fatwrite host 0:1 4000000 %s/Test01 $filesize' % CAPSULE_INSTALL_DIR,
> +                'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> +            assert 'Test01' in ''.join(output)
> +
>              output = u_boot_console.run_command_list([
>                  'fatload host 0:1 4000000 %s/Test02' % CAPSULE_DATA_DIR,
>                  'fatwrite host 0:1 4000000 %s/Test02 $filesize' % CAPSULE_INSTALL_DIR,
> @@ -235,6 +251,7 @@ class TestEfiCapsuleFirmwareFit(object):
>                      'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
>                      'host bind 0 %s' % disk_img,
>                      'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> +                assert 'Test01' in ''.join(output)
>                  assert 'Test02' in ''.join(output)
>  
>                  # need to run uefi command to initiate capsule handling
> @@ -246,15 +263,16 @@ class TestEfiCapsuleFirmwareFit(object):
>                  'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
>                  'efidebug capsule esrt'])
>  
> -            # ensure that EFI_FIRMWARE_IMAGE_TYPE_UBOOT_FIT_GUID is in the ESRT.
> -            assert 'AE13FF2D-9AD4-4E25-9AC8-6D80B3B22147' in ''.join(output)
> +            # ensure that SANDBOX_UBOOT_ENV_IMAGE_GUID is in the ESRT.
> +            assert '5A7021F5-FEF2-48B4-AABA-832E777418C0' in ''.join(output)
>  
> -            # ensure that  EFI_FIRMWARE_IMAGE_TYPE_UBOOT_RAW_GUID is in the ESRT.
> -            assert 'E2BB9C06-70E9-4B14-97A3-5A7913176E3F' in ''.join(output)
> +            # ensure that SANDBOX_UBOOT_IMAGE_GUID is in the ESRT.
> +            assert '09D7CF52-0720-4710-91D1-08469B7FE9C8' in ''.join(output)
>  
>              output = u_boot_console.run_command_list([
>                  'host bind 0 %s' % disk_img,
>                  'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> +            assert 'Test01' not in ''.join(output)
>              assert 'Test02' not in ''.join(output)
>  
>              output = u_boot_console.run_command_list([
> @@ -266,78 +284,11 @@ class TestEfiCapsuleFirmwareFit(object):
>              else:
>                  assert 'u-boot:New' in ''.join(output)
>  
> -    def test_efi_capsule_fw4(
> -            self, u_boot_config, u_boot_console, efi_capsule_data):
> -        """
> -        Test Case 4 - Test "--guid" option of mkeficapsule
> -                      The test scenario is the same as Case 3.
> -        """
> -        disk_img = efi_capsule_data
> -        with u_boot_console.log.section('Test Case 4-a, before reboot'):
> -            output = u_boot_console.run_command_list([
> -                'host bind 0 %s' % disk_img,
> -                'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi -s ""',
> -                'efidebug boot order 1',
> -                'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
> -                'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
> -                'env save'])
> -
> -            # initialize content
>              output = u_boot_console.run_command_list([
>                  'sf probe 0:0',
> -                'fatload host 0:1 4000000 %s/u-boot.bin.old' % CAPSULE_DATA_DIR,
> -                'sf write 4000000 100000 10',
> -                'sf read 5000000 100000 10',
> -                'md.b 5000000 10'])
> -            assert 'Old' in ''.join(output)
> -
> -            # place a capsule file
> -            output = u_boot_console.run_command_list([
> -                'fatload host 0:1 4000000 %s/Test03' % CAPSULE_DATA_DIR,
> -                'fatwrite host 0:1 4000000 %s/Test03 $filesize' % CAPSULE_INSTALL_DIR,
> -                'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> -            assert 'Test03' in ''.join(output)
> -
> -        capsule_early = u_boot_config.buildconfig.get(
> -            'config_efi_capsule_on_disk_early')
> -        capsule_auth = u_boot_config.buildconfig.get(
> -            'config_efi_capsule_authenticate')
> -
> -        # reboot
> -        u_boot_console.restart_uboot(expect_reset = capsule_early)
> -
> -        with u_boot_console.log.section('Test Case 4-b, after reboot'):
> -            if not capsule_early:
> -                # make sure that dfu_alt_info exists even persistent variables
> -                # are not available.
> -                output = u_boot_console.run_command_list([
> -                    'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
> -                    'host bind 0 %s' % disk_img,
> -                    'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> -                assert 'Test03' in ''.join(output)
> -
> -                # need to run uefi command to initiate capsule handling
> -                output = u_boot_console.run_command(
> -                    'env print -e Capsule0000', wait_for_reboot = True)
> -
> -            # make sure the dfu_alt_info exists because it is required for making ESRT.
> -            output = u_boot_console.run_command_list([
> -                'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
> -                'efidebug capsule esrt'])
> -
> -            # ensure that  EFI_FIRMWARE_IMAGE_TYPE_UBOOT_RAW_GUID is in the ESRT.
> -            assert 'E2BB9C06-70E9-4B14-97A3-5A7913176E3F' in ''.join(output)
> -
> -            output = u_boot_console.run_command_list([
> -                'host bind 0 %s' % disk_img,
> -                'fatls host 0:1 %s' % CAPSULE_INSTALL_DIR])
> -            assert 'Test03' not in ''.join(output)
> -
> -            output = u_boot_console.run_command_list([
> -                'sf probe 0:0',
> -                'sf read 4000000 100000 10',
> +                'sf read 4000000 150000 10',
>                  'md.b 4000000 10'])
>              if capsule_auth:
> -                assert 'u-boot:Old' in ''.join(output)
> +                assert 'u-boot-env:Old' in ''.join(output)
>              else:
> -                assert 'u-boot:New' in ''.join(output)
> +                assert 'u-boot-env:New' in ''.join(output)
> -- 
> 2.25.1
> 

  reply	other threads:[~2022-04-13  6:35 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-12 13:04 [PATCH v6 0/8] efi: capsule: Capsule Update fixes and enhancements Sughosh Ganu
2022-04-12 13:04 ` [PATCH v6 1/8] capsule: board: Add information needed for capsule updates Sughosh Ganu
2022-04-12 13:04 ` [PATCH v6 2/8] capsule: FMP: Populate the image descriptor array from platform data Sughosh Ganu
2022-04-12 13:04 ` [PATCH v6 3/8] capsule: Put a check for image index before the update Sughosh Ganu
2022-04-12 13:04 ` [PATCH v6 4/8] efi: Define set_dfu_alt_info() for boards with UEFI capsule update enabled Sughosh Ganu
2022-04-12 13:04 ` [PATCH v6 5/8] test: capsule: Modify the capsule tests to use GUID values for sandbox Sughosh Ganu
2022-04-13  6:35   ` AKASHI Takahiro [this message]
2022-04-13  8:29     ` Sughosh Ganu
2022-04-12 13:04 ` [PATCH v6 6/8] FMP: Remove GUIDs for FIT and raw images Sughosh Ganu
2022-04-12 13:04 ` [PATCH v6 7/8] mkeficapsule: Remove raw and FIT GUID types Sughosh Ganu
2022-04-13  6:05   ` AKASHI Takahiro
2022-04-13  6:14     ` Sughosh Ganu
2022-04-13  6:23       ` AKASHI Takahiro
2022-04-13  6:30         ` Sughosh Ganu
2022-04-13  6:44           ` AKASHI Takahiro
2022-04-12 13:04 ` [PATCH v6 8/8] doc: uefi: Update the capsule update related documentation Sughosh Ganu
2022-04-13  6:18   ` AKASHI Takahiro
2022-04-13  7:08     ` Sughosh Ganu
2022-04-13  7:33       ` AKASHI Takahiro
2022-04-13  8:11         ` Masami Hiramatsu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220413063532.GD87648@laputa \
    --to=takahiro.akashi@linaro.org \
    --cc=frieder.schrempf@kontron.de \
    --cc=heiko.thiery@gmail.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=jaswinder.singh@linaro.org \
    --cc=masami.hiramatsu@linaro.org \
    --cc=michael@walle.cc \
    --cc=michal.simek@xilinx.com \
    --cc=monstr@monstr.eu \
    --cc=paul.liu@linaro.org \
    --cc=sughosh.ganu@linaro.org \
    --cc=tuomas.tynkkynen@iki.fi \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.