Hi Simon, Thanks for fixing this.
On Sun, 29 Oct 2023 at 06:28, Simon Glass <s...@chromium.org> wrote: > > Some of the Python tests are a pain because they don't reset the TPM > state before each test. Driver model tests do this, so convert the > tests to C. > > This means that these tests won't run on real hardware, but we have > tests which do TPM init, so there is still enough coverage. > > Rename and update the Python tpm_init test to use 'tpm autostart', > since this deals with starting up ready for the tests below. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > test/dm/tpm.c | 77 +++++++++++++++++++++++++++++++++++++- > test/py/tests/test_tpm2.py | 57 +--------------------------- > 2 files changed, 77 insertions(+), 57 deletions(-) > > diff --git a/test/dm/tpm.c b/test/dm/tpm.c > index cde933ab2848..f8264af13789 100644 > --- a/test/dm/tpm.c > +++ b/test/dm/tpm.c > @@ -50,14 +50,87 @@ static int test_tpm_init(struct unit_test_state *uts, > enum tpm_version version) > return 0; > } > > -static int dm_test_tpm(struct unit_test_state *uts) > +static int dm_test_tpm_init(struct unit_test_state *uts) > { > ut_assertok(test_tpm_init(uts, TPM_V1)); > ut_assertok(test_tpm_init(uts, TPM_V2)); > > return 0; > } > -DM_TEST(dm_test_tpm, UT_TESTF_SCAN_FDT); > +DM_TEST(dm_test_tpm_init, UT_TESTF_SCAN_FDT); > + > +/* Test TPM startup */ > +static int test_tpm_startup(struct unit_test_state *uts, > + enum tpm_version version) > +{ > + struct udevice *dev; > + > + /* check probe success */ > + ut_assertok(get_tpm_version(version, &dev)); > + > + ut_assertok(tpm_init(dev)); > + ut_assertok(tpm_startup(dev, TPM_ST_CLEAR)); > + > + return 0; > +} > + > +static int dm_test_tpm_startup(struct unit_test_state *uts) > +{ > + ut_assertok(test_tpm_startup(uts, TPM_V1)); > + ut_assertok(test_tpm_startup(uts, TPM_V2)); > + > + return 0; > +} > +DM_TEST(dm_test_tpm_startup, UT_TESTF_SCAN_FDT); > + > +/* Test TPM self-test full */ > +static int test_tpm_self_test_full(struct unit_test_state *uts, > + enum tpm_version version) > +{ > + struct udevice *dev; > + > + /* check probe success */ > + ut_assertok(get_tpm_version(version, &dev)); > + > + ut_assertok(tpm_init(dev)); > + ut_assertok(tpm_startup(dev, TPM_ST_CLEAR)); > + > + return 0; > +} > + > +static int dm_test_tpm_self_test_full(struct unit_test_state *uts) > +{ > + ut_assertok(test_tpm_self_test_full(uts, TPM_V1)); > + ut_assertok(test_tpm_self_test_full(uts, TPM_V2)); > + > + return 0; > +} > +DM_TEST(dm_test_tpm_self_test_full, UT_TESTF_SCAN_FDT); > + > +/* Test TPM self-test continue */ > +static int test_tpm_self_test_cont(struct unit_test_state *uts, > + enum tpm_version version) > +{ > + struct udevice *dev; > + > + /* check probe success */ > + ut_assertok(get_tpm_version(version, &dev)); > + > + ut_assertok(tpm_init(dev)); > + ut_assertok(tpm_startup(dev, TPM_ST_CLEAR)); > + ut_assertok(tpm_continue_self_test(dev)); > + > + return 0; > +} > + > +static int dm_test_tpm_self_test_cont(struct unit_test_state *uts) > +{ > + ut_assertok(test_tpm_self_test_cont(uts, TPM_V1)); > + ut_assertok(test_tpm_self_test_cont(uts, TPM_V2)); > + > + return 0; > +} > +DM_TEST(dm_test_tpm_self_test_cont, UT_TESTF_SCAN_FDT); > > /* Test report_state */ > static int dm_test_tpm_report_state(struct unit_test_state *uts) > diff --git a/test/py/tests/test_tpm2.py b/test/py/tests/test_tpm2.py > index c2579fa02c58..522ed41de633 100644 > --- a/test/py/tests/test_tpm2.py > +++ b/test/py/tests/test_tpm2.py > @@ -56,25 +56,12 @@ def is_sandbox(cons): > return sys_arch == 'sandbox' > > @pytest.mark.buildconfigspec('cmd_tpm_v2') > -def test_tpm2_init(u_boot_console): > +def test_tpm2_autostart(u_boot_console): > """Init the software stack to use TPMv2 commands.""" > skip_test = u_boot_console.config.env.get('env__tpm_device_test_skip', > False) > if skip_test: > pytest.skip('skip TPM device test') > - u_boot_console.run_command('tpm2 init') > - output = u_boot_console.run_command('echo $?') > - assert output.endswith('0') > - > -@pytest.mark.buildconfigspec('cmd_tpm_v2') > -def test_tpm2_startup(u_boot_console): > - """Execute a TPM2_Startup command. > - > - Initiate the TPM internal state machine. > - """ > - skip_test = u_boot_console.config.env.get('env__tpm_device_test_skip', > False) > - if skip_test: > - pytest.skip('skip TPM device test') > - u_boot_console.run_command('tpm2 startup TPM2_SU_CLEAR') > + u_boot_console.run_command('tpm2 autostart') > output = u_boot_console.run_command('echo $?') > assert output.endswith('0') > > @@ -92,46 +79,6 @@ def tpm2_sandbox_init(u_boot_console): > if skip_test: > pytest.skip('skip TPM device test') > > -@pytest.mark.buildconfigspec('cmd_tpm_v2') > -def test_tpm2_sandbox_self_test_full(u_boot_console): > - """Execute a TPM2_SelfTest (full) command. > - > - Ask the TPM to perform all self tests to also enable full capabilities. > - """ > - if is_sandbox(u_boot_console): > - u_boot_console.restart_uboot() > - u_boot_console.run_command('tpm2 init') > - output = u_boot_console.run_command('echo $?') > - assert output.endswith('0') > - > - u_boot_console.run_command('tpm2 startup TPM2_SU_CLEAR') > - output = u_boot_console.run_command('echo $?') > - assert output.endswith('0') > - > - skip_test = u_boot_console.config.env.get('env__tpm_device_test_skip', > False) > - if skip_test: > - pytest.skip('skip TPM device test') > - u_boot_console.run_command('tpm2 self_test full') > - output = u_boot_console.run_command('echo $?') > - assert output.endswith('0') > - > -@pytest.mark.buildconfigspec('cmd_tpm_v2') > -def test_tpm2_continue_self_test(u_boot_console): > - """Execute a TPM2_SelfTest (continued) command. > - > - Ask the TPM to finish its self tests (alternative to the full test) in > order > - to enter a fully operational state. > - """ > - > - skip_test = u_boot_console.config.env.get('env__tpm_device_test_skip', > False) > - if skip_test: > - pytest.skip('skip TPM device test') > - if is_sandbox(u_boot_console): > - tpm2_sandbox_init(u_boot_console) > - u_boot_console.run_command('tpm2 self_test continue') > - output = u_boot_console.run_command('echo $?') > - assert output.endswith('0') > - Can we please preserve this one only? > @pytest.mark.buildconfigspec('cmd_tpm_v2') > def test_tpm2_clear(u_boot_console): > """Execute a TPM2_Clear command. > -- > 2.42.0.820.g83a721a137-goog > Thanks /Ilias