test/py: tpm2: Skip tpm pytest based on env variable

Tpm test cases relies on tpm device setup. Provide an environment
variable "env__tpm_device_test_skip = True" to skip the test case
if tpm device is not present.
Only needed will have to add variable to the py-test framework.
Test runs successfully even this variable is absent.

Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
T Karthik Reddy 2021-07-23 06:18:26 -06:00 committed by Ramon Fried
parent c74d0ae519
commit 577e45f36f

View file

@ -18,6 +18,15 @@ any password.
* Commands like pcr_setauthpolicy and pcr_resetauthpolicy are not implemented * Commands like pcr_setauthpolicy and pcr_resetauthpolicy are not implemented
here because they would fail the tests in most cases (TPMs do not implement them here because they would fail the tests in most cases (TPMs do not implement them
and return an error). and return an error).
Note:
This test doesn't rely on boardenv_* configuration value but can change test
behavior.
* Setup env__tpm_device_test_skip to True if tests with TPM devices should be
skipped.
""" """
updates = 0 updates = 0
@ -29,6 +38,9 @@ def force_init(u_boot_console, force=False):
twice will spawn an error used to detect that the TPM was not reset and no twice will spawn an error used to detect that the TPM was not reset and no
initialization code should be run. initialization code should be run.
""" """
skip_test = u_boot_console.config.env.get('env__tpm_device_test_skip', False)
if skip_test:
pytest.skip('skip TPM device test')
output = u_boot_console.run_command('tpm2 init') output = u_boot_console.run_command('tpm2 init')
if force or not 'Error' in output: if force or not 'Error' in output:
u_boot_console.run_command('echo --- start of init ---') u_boot_console.run_command('echo --- start of init ---')
@ -44,6 +56,10 @@ def force_init(u_boot_console, force=False):
def test_tpm2_init(u_boot_console): def test_tpm2_init(u_boot_console):
"""Init the software stack to use TPMv2 commands.""" """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') u_boot_console.run_command('tpm2 init')
output = u_boot_console.run_command('echo $?') output = u_boot_console.run_command('echo $?')
assert output.endswith('0') assert output.endswith('0')
@ -55,6 +71,9 @@ def test_tpm2_startup(u_boot_console):
Initiate the TPM internal state machine. 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 startup TPM2_SU_CLEAR')
output = u_boot_console.run_command('echo $?') output = u_boot_console.run_command('echo $?')
assert output.endswith('0') assert output.endswith('0')
@ -66,6 +85,9 @@ def test_tpm2_self_test_full(u_boot_console):
Ask the TPM to perform all self tests to also enable full capabilities. Ask the TPM to perform all self tests to also enable full capabilities.
""" """
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') u_boot_console.run_command('tpm2 self_test full')
output = u_boot_console.run_command('echo $?') output = u_boot_console.run_command('echo $?')
assert output.endswith('0') assert output.endswith('0')
@ -78,6 +100,9 @@ def test_tpm2_continue_self_test(u_boot_console):
to enter a fully operational state. 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')
u_boot_console.run_command('tpm2 self_test continue') u_boot_console.run_command('tpm2 self_test continue')
output = u_boot_console.run_command('echo $?') output = u_boot_console.run_command('echo $?')
assert output.endswith('0') assert output.endswith('0')
@ -95,6 +120,9 @@ def test_tpm2_clear(u_boot_console):
PLATFORM hierarchies are also available. PLATFORM hierarchies are also available.
""" """
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 clear TPM2_RH_LOCKOUT') u_boot_console.run_command('tpm2 clear TPM2_RH_LOCKOUT')
output = u_boot_console.run_command('echo $?') output = u_boot_console.run_command('echo $?')
assert output.endswith('0') assert output.endswith('0')