diff mbox series

selftests: tpm2: conform test to TAP output

Message ID 20240426091435.2742024-1-usama.anjum@collabora.com (mailing list archive)
State New
Headers show
Series selftests: tpm2: conform test to TAP output | expand

Commit Message

Muhammad Usama Anjum April 26, 2024, 9:14 a.m. UTC
The python unittest is being used for executing tests. TAP output
cannot be added in the unittest framework. The python unittest is being
run from a script. Add the output TAP logs to the script. Add "#"
prefix to the python unittest output which will mark all output as
informational TAP messages. Check exit status of the python unittest to
decide if test passed or failed. Not sure why but python unittest
outputs logs in stderr. So redirect the logs to stdout and then add
prefix.

Specify the bash explicitly instead of sh to run these tests as all of
the kselftests are shifting towards using bash explicitly. Some
interpreters have different syntax and cause issues.

Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
 tools/testing/selftests/tpm2/test_async.sh | 24 ++++++++++++++++------
 tools/testing/selftests/tpm2/test_smoke.sh | 19 ++++++++++++++---
 tools/testing/selftests/tpm2/test_space.sh | 19 ++++++++++++++---
 3 files changed, 50 insertions(+), 12 deletions(-)

Comments

Muhammad Usama Anjum May 28, 2024, 5:05 a.m. UTC | #1
Kind reminder

On 4/26/24 2:14 PM, Muhammad Usama Anjum wrote:
> The python unittest is being used for executing tests. TAP output
> cannot be added in the unittest framework. The python unittest is being
> run from a script. Add the output TAP logs to the script. Add "#"
> prefix to the python unittest output which will mark all output as
> informational TAP messages. Check exit status of the python unittest to
> decide if test passed or failed. Not sure why but python unittest
> outputs logs in stderr. So redirect the logs to stdout and then add
> prefix.
> 
> Specify the bash explicitly instead of sh to run these tests as all of
> the kselftests are shifting towards using bash explicitly. Some
> interpreters have different syntax and cause issues.
> 
> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
>  tools/testing/selftests/tpm2/test_async.sh | 24 ++++++++++++++++------
>  tools/testing/selftests/tpm2/test_smoke.sh | 19 ++++++++++++++---
>  tools/testing/selftests/tpm2/test_space.sh | 19 ++++++++++++++---
>  3 files changed, 50 insertions(+), 12 deletions(-)
> 
> diff --git a/tools/testing/selftests/tpm2/test_async.sh b/tools/testing/selftests/tpm2/test_async.sh
> index 43bf5bd772fd4..0e6e5d9d649fb 100755
> --- a/tools/testing/selftests/tpm2/test_async.sh
> +++ b/tools/testing/selftests/tpm2/test_async.sh
> @@ -1,10 +1,22 @@
> -#!/bin/sh
> +#!/bin/bash
>  # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
>  
> -# Kselftest framework requirement - SKIP code is 4.
> -ksft_skip=4
> +DIR="$(dirname $(readlink -f "$0"))"
> +source "${DIR}"/../kselftest/ktap_helpers.sh
>  
> -[ -e /dev/tpm0 ] || exit $ksft_skip
> -[ -e /dev/tpmrm0 ] || exit $ksft_skip
> +ktap_print_header
>  
> -python3 -m unittest -v tpm2_tests.AsyncTest
> +[ -e /dev/tpm0 ] || ktap_finished
> +[ -e /dev/tpmrm0 ] || ktap_finished
> +
> +ktap_set_plan 1
> +
> +python3 -m unittest -v tpm2_tests.AsyncTest 2>&1 | sed "s/^/# /"
> +
> +if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
> +	ktap_test_pass "tpm2_tests.AsyncTest"
> +else
> +	ktap_test_fail "tpm2_tests.AsyncTest"
> +fi
> +
> +ktap_finished
> diff --git a/tools/testing/selftests/tpm2/test_smoke.sh b/tools/testing/selftests/tpm2/test_smoke.sh
> index 58af963e5b55a..2219a180de91d 100755
> --- a/tools/testing/selftests/tpm2/test_smoke.sh
> +++ b/tools/testing/selftests/tpm2/test_smoke.sh
> @@ -1,9 +1,22 @@
> -#!/bin/sh
> +#!/bin/bash
>  # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
>  
>  # Kselftest framework requirement - SKIP code is 4.
> -ksft_skip=4
> +DIR="$(dirname $(readlink -f "$0"))"
> +source "${DIR}"/../kselftest/ktap_helpers.sh
> +
> +ktap_print_header
>  
>  [ -e /dev/tpm0 ] || exit $ksft_skip
>  
> -python3 -m unittest -v tpm2_tests.SmokeTest
> +ktap_set_plan 1
> +
> +python3 -m unittest -v tpm2_tests.SmokeTest 2>&1 | sed "s/^/# /"
> +
> +if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
> +	ktap_test_pass "tpm2_tests.AsyncTest"
> +else
> +	ktap_test_fail "tpm2_tests.AsyncTest"
> +fi
> +
> +ktap_finished
> diff --git a/tools/testing/selftests/tpm2/test_space.sh b/tools/testing/selftests/tpm2/test_space.sh
> index 04c47b13fe8ac..6a55d13d74983 100755
> --- a/tools/testing/selftests/tpm2/test_space.sh
> +++ b/tools/testing/selftests/tpm2/test_space.sh
> @@ -1,9 +1,22 @@
> -#!/bin/sh
> +#!/bin/bash
>  # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
>  
>  # Kselftest framework requirement - SKIP code is 4.
> -ksft_skip=4
> +DIR="$(dirname $(readlink -f "$0"))"
> +source "${DIR}"/../kselftest/ktap_helpers.sh
> +
> +ktap_print_header
>  
>  [ -e /dev/tpmrm0 ] || exit $ksft_skip
>  
> -python3 -m unittest -v tpm2_tests.SpaceTest
> +ktap_set_plan 1
> +
> +python3 -m unittest -v tpm2_tests.SpaceTest 2>&1 | sed "s/^/# /"
> +
> +if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
> +	ktap_test_pass "tpm2_tests.AsyncTest"
> +else
> +	ktap_test_fail "tpm2_tests.AsyncTest"
> +fi
> +
> +ktap_finished
Muhammad Usama Anjum July 1, 2024, 8:40 a.m. UTC | #2
Adding Jarkko

On 5/28/24 10:05 AM, Muhammad Usama Anjum wrote:
> Kind reminder
> 
> On 4/26/24 2:14 PM, Muhammad Usama Anjum wrote:
>> The python unittest is being used for executing tests. TAP output
>> cannot be added in the unittest framework. The python unittest is being
>> run from a script. Add the output TAP logs to the script. Add "#"
>> prefix to the python unittest output which will mark all output as
>> informational TAP messages. Check exit status of the python unittest to
>> decide if test passed or failed. Not sure why but python unittest
>> outputs logs in stderr. So redirect the logs to stdout and then add
>> prefix.
>>
>> Specify the bash explicitly instead of sh to run these tests as all of
>> the kselftests are shifting towards using bash explicitly. Some
>> interpreters have different syntax and cause issues.
>>
>> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
>> ---
>>  tools/testing/selftests/tpm2/test_async.sh | 24 ++++++++++++++++------
>>  tools/testing/selftests/tpm2/test_smoke.sh | 19 ++++++++++++++---
>>  tools/testing/selftests/tpm2/test_space.sh | 19 ++++++++++++++---
>>  3 files changed, 50 insertions(+), 12 deletions(-)
>>
>> diff --git a/tools/testing/selftests/tpm2/test_async.sh b/tools/testing/selftests/tpm2/test_async.sh
>> index 43bf5bd772fd4..0e6e5d9d649fb 100755
>> --- a/tools/testing/selftests/tpm2/test_async.sh
>> +++ b/tools/testing/selftests/tpm2/test_async.sh
>> @@ -1,10 +1,22 @@
>> -#!/bin/sh
>> +#!/bin/bash
>>  # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
>>  
>> -# Kselftest framework requirement - SKIP code is 4.
>> -ksft_skip=4
>> +DIR="$(dirname $(readlink -f "$0"))"
>> +source "${DIR}"/../kselftest/ktap_helpers.sh
>>  
>> -[ -e /dev/tpm0 ] || exit $ksft_skip
>> -[ -e /dev/tpmrm0 ] || exit $ksft_skip
>> +ktap_print_header
>>  
>> -python3 -m unittest -v tpm2_tests.AsyncTest
>> +[ -e /dev/tpm0 ] || ktap_finished
>> +[ -e /dev/tpmrm0 ] || ktap_finished
>> +
>> +ktap_set_plan 1
>> +
>> +python3 -m unittest -v tpm2_tests.AsyncTest 2>&1 | sed "s/^/# /"
>> +
>> +if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
>> +	ktap_test_pass "tpm2_tests.AsyncTest"
>> +else
>> +	ktap_test_fail "tpm2_tests.AsyncTest"
>> +fi
>> +
>> +ktap_finished
>> diff --git a/tools/testing/selftests/tpm2/test_smoke.sh b/tools/testing/selftests/tpm2/test_smoke.sh
>> index 58af963e5b55a..2219a180de91d 100755
>> --- a/tools/testing/selftests/tpm2/test_smoke.sh
>> +++ b/tools/testing/selftests/tpm2/test_smoke.sh
>> @@ -1,9 +1,22 @@
>> -#!/bin/sh
>> +#!/bin/bash
>>  # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
>>  
>>  # Kselftest framework requirement - SKIP code is 4.
>> -ksft_skip=4
>> +DIR="$(dirname $(readlink -f "$0"))"
>> +source "${DIR}"/../kselftest/ktap_helpers.sh
>> +
>> +ktap_print_header
>>  
>>  [ -e /dev/tpm0 ] || exit $ksft_skip
>>  
>> -python3 -m unittest -v tpm2_tests.SmokeTest
>> +ktap_set_plan 1
>> +
>> +python3 -m unittest -v tpm2_tests.SmokeTest 2>&1 | sed "s/^/# /"
>> +
>> +if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
>> +	ktap_test_pass "tpm2_tests.AsyncTest"
>> +else
>> +	ktap_test_fail "tpm2_tests.AsyncTest"
>> +fi
>> +
>> +ktap_finished
>> diff --git a/tools/testing/selftests/tpm2/test_space.sh b/tools/testing/selftests/tpm2/test_space.sh
>> index 04c47b13fe8ac..6a55d13d74983 100755
>> --- a/tools/testing/selftests/tpm2/test_space.sh
>> +++ b/tools/testing/selftests/tpm2/test_space.sh
>> @@ -1,9 +1,22 @@
>> -#!/bin/sh
>> +#!/bin/bash
>>  # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
>>  
>>  # Kselftest framework requirement - SKIP code is 4.
>> -ksft_skip=4
>> +DIR="$(dirname $(readlink -f "$0"))"
>> +source "${DIR}"/../kselftest/ktap_helpers.sh
>> +
>> +ktap_print_header
>>  
>>  [ -e /dev/tpmrm0 ] || exit $ksft_skip
>>  
>> -python3 -m unittest -v tpm2_tests.SpaceTest
>> +ktap_set_plan 1
>> +
>> +python3 -m unittest -v tpm2_tests.SpaceTest 2>&1 | sed "s/^/# /"
>> +
>> +if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
>> +	ktap_test_pass "tpm2_tests.AsyncTest"
>> +else
>> +	ktap_test_fail "tpm2_tests.AsyncTest"
>> +fi
>> +
>> +ktap_finished
>
Jarkko Sakkinen July 1, 2024, 3:24 p.m. UTC | #3
On Mon, 2024-07-01 at 13:40 +0500, Muhammad Usama Anjum wrote:
> Adding Jarkko
> 
> On 5/28/24 10:05 AM, Muhammad Usama Anjum wrote:
> > Kind reminder
> > 
> > On 4/26/24 2:14 PM, Muhammad Usama Anjum wrote:
> > > The python unittest is being used for executing tests. TAP output
> > > cannot be added in the unittest framework. The python unittest is being
> > > run from a script. Add the output TAP logs to the script. Add "#"
> > > prefix to the python unittest output which will mark all output as
> > > informational TAP messages. Check exit status of the python unittest to
> > > decide if test passed or failed. Not sure why but python unittest
> > > outputs logs in stderr. So redirect the logs to stdout and then add
> > > prefix.
> > > 
> > > Specify the bash explicitly instead of sh to run these tests as all of
> > > the kselftests are shifting towards using bash explicitly. Some
> > > interpreters have different syntax and cause issues.
> > > 
> > > Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> > > ---
> > >  tools/testing/selftests/tpm2/test_async.sh | 24 ++++++++++++++++------
> > >  tools/testing/selftests/tpm2/test_smoke.sh | 19 ++++++++++++++---
> > >  tools/testing/selftests/tpm2/test_space.sh | 19 ++++++++++++++---
> > >  3 files changed, 50 insertions(+), 12 deletions(-)
> > > 
> > > diff --git a/tools/testing/selftests/tpm2/test_async.sh
> > > b/tools/testing/selftests/tpm2/test_async.sh
> > > index 43bf5bd772fd4..0e6e5d9d649fb 100755
> > > --- a/tools/testing/selftests/tpm2/test_async.sh
> > > +++ b/tools/testing/selftests/tpm2/test_async.sh
> > > @@ -1,10 +1,22 @@
> > > -#!/bin/sh
> > > +#!/bin/bash
> > >  # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
> > >  
> > > -# Kselftest framework requirement - SKIP code is 4.
> > > -ksft_skip=4
> > > +DIR="$(dirname $(readlink -f "$0"))"
> > > +source "${DIR}"/../kselftest/ktap_helpers.sh
> > >  
> > > -[ -e /dev/tpm0 ] || exit $ksft_skip
> > > -[ -e /dev/tpmrm0 ] || exit $ksft_skip
> > > +ktap_print_header
> > >  
> > > -python3 -m unittest -v tpm2_tests.AsyncTest
> > > +[ -e /dev/tpm0 ] || ktap_finished
> > > +[ -e /dev/tpmrm0 ] || ktap_finished
> > > +
> > > +ktap_set_plan 1
> > > +
> > > +python3 -m unittest -v tpm2_tests.AsyncTest 2>&1 | sed "s/^/# /"
> > > +
> > > +if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
> > > +	ktap_test_pass "tpm2_tests.AsyncTest"
> > > +else
> > > +	ktap_test_fail "tpm2_tests.AsyncTest"
> > > +fi
> > > +
> > > +ktap_finished
> > > diff --git a/tools/testing/selftests/tpm2/test_smoke.sh
> > > b/tools/testing/selftests/tpm2/test_smoke.sh
> > > index 58af963e5b55a..2219a180de91d 100755
> > > --- a/tools/testing/selftests/tpm2/test_smoke.sh
> > > +++ b/tools/testing/selftests/tpm2/test_smoke.sh
> > > @@ -1,9 +1,22 @@
> > > -#!/bin/sh
> > > +#!/bin/bash
> > >  # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
> > >  
> > >  # Kselftest framework requirement - SKIP code is 4.
> > > -ksft_skip=4
> > > +DIR="$(dirname $(readlink -f "$0"))"
> > > +source "${DIR}"/../kselftest/ktap_helpers.sh
> > > +
> > > +ktap_print_header
> > >  
> > >  [ -e /dev/tpm0 ] || exit $ksft_skip
> > >  
> > > -python3 -m unittest -v tpm2_tests.SmokeTest
> > > +ktap_set_plan 1
> > > +
> > > +python3 -m unittest -v tpm2_tests.SmokeTest 2>&1 | sed "s/^/# /"
> > > +
> > > +if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
> > > +	ktap_test_pass "tpm2_tests.AsyncTest"
> > > +else
> > > +	ktap_test_fail "tpm2_tests.AsyncTest"
> > > +fi
> > > +
> > > +ktap_finished
> > > diff --git a/tools/testing/selftests/tpm2/test_space.sh
> > > b/tools/testing/selftests/tpm2/test_space.sh
> > > index 04c47b13fe8ac..6a55d13d74983 100755
> > > --- a/tools/testing/selftests/tpm2/test_space.sh
> > > +++ b/tools/testing/selftests/tpm2/test_space.sh
> > > @@ -1,9 +1,22 @@
> > > -#!/bin/sh
> > > +#!/bin/bash
> > >  # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
> > >  
> > >  # Kselftest framework requirement - SKIP code is 4.
> > > -ksft_skip=4
> > > +DIR="$(dirname $(readlink -f "$0"))"
> > > +source "${DIR}"/../kselftest/ktap_helpers.sh
> > > +
> > > +ktap_print_header
> > >  
> > >  [ -e /dev/tpmrm0 ] || exit $ksft_skip
> > >  
> > > -python3 -m unittest -v tpm2_tests.SpaceTest
> > > +ktap_set_plan 1
> > > +
> > > +python3 -m unittest -v tpm2_tests.SpaceTest 2>&1 | sed "s/^/# /"
> > > +
> > > +if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
> > > +	ktap_test_pass "tpm2_tests.AsyncTest"
> > > +else
> > > +	ktap_test_fail "tpm2_tests.AsyncTest"
> > > +fi
> > > +
> > > +ktap_finished
> > 
> 

Cc me to the next patch version.

BR, Jarkko
diff mbox series

Patch

diff --git a/tools/testing/selftests/tpm2/test_async.sh b/tools/testing/selftests/tpm2/test_async.sh
index 43bf5bd772fd4..0e6e5d9d649fb 100755
--- a/tools/testing/selftests/tpm2/test_async.sh
+++ b/tools/testing/selftests/tpm2/test_async.sh
@@ -1,10 +1,22 @@ 
-#!/bin/sh
+#!/bin/bash
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
 
-# Kselftest framework requirement - SKIP code is 4.
-ksft_skip=4
+DIR="$(dirname $(readlink -f "$0"))"
+source "${DIR}"/../kselftest/ktap_helpers.sh
 
-[ -e /dev/tpm0 ] || exit $ksft_skip
-[ -e /dev/tpmrm0 ] || exit $ksft_skip
+ktap_print_header
 
-python3 -m unittest -v tpm2_tests.AsyncTest
+[ -e /dev/tpm0 ] || ktap_finished
+[ -e /dev/tpmrm0 ] || ktap_finished
+
+ktap_set_plan 1
+
+python3 -m unittest -v tpm2_tests.AsyncTest 2>&1 | sed "s/^/# /"
+
+if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
+	ktap_test_pass "tpm2_tests.AsyncTest"
+else
+	ktap_test_fail "tpm2_tests.AsyncTest"
+fi
+
+ktap_finished
diff --git a/tools/testing/selftests/tpm2/test_smoke.sh b/tools/testing/selftests/tpm2/test_smoke.sh
index 58af963e5b55a..2219a180de91d 100755
--- a/tools/testing/selftests/tpm2/test_smoke.sh
+++ b/tools/testing/selftests/tpm2/test_smoke.sh
@@ -1,9 +1,22 @@ 
-#!/bin/sh
+#!/bin/bash
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
 
 # Kselftest framework requirement - SKIP code is 4.
-ksft_skip=4
+DIR="$(dirname $(readlink -f "$0"))"
+source "${DIR}"/../kselftest/ktap_helpers.sh
+
+ktap_print_header
 
 [ -e /dev/tpm0 ] || exit $ksft_skip
 
-python3 -m unittest -v tpm2_tests.SmokeTest
+ktap_set_plan 1
+
+python3 -m unittest -v tpm2_tests.SmokeTest 2>&1 | sed "s/^/# /"
+
+if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
+	ktap_test_pass "tpm2_tests.AsyncTest"
+else
+	ktap_test_fail "tpm2_tests.AsyncTest"
+fi
+
+ktap_finished
diff --git a/tools/testing/selftests/tpm2/test_space.sh b/tools/testing/selftests/tpm2/test_space.sh
index 04c47b13fe8ac..6a55d13d74983 100755
--- a/tools/testing/selftests/tpm2/test_space.sh
+++ b/tools/testing/selftests/tpm2/test_space.sh
@@ -1,9 +1,22 @@ 
-#!/bin/sh
+#!/bin/bash
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
 
 # Kselftest framework requirement - SKIP code is 4.
-ksft_skip=4
+DIR="$(dirname $(readlink -f "$0"))"
+source "${DIR}"/../kselftest/ktap_helpers.sh
+
+ktap_print_header
 
 [ -e /dev/tpmrm0 ] || exit $ksft_skip
 
-python3 -m unittest -v tpm2_tests.SpaceTest
+ktap_set_plan 1
+
+python3 -m unittest -v tpm2_tests.SpaceTest 2>&1 | sed "s/^/# /"
+
+if [ ${PIPESTATUS[0]} -eq $ksft_pass ]; then
+	ktap_test_pass "tpm2_tests.AsyncTest"
+else
+	ktap_test_fail "tpm2_tests.AsyncTest"
+fi
+
+ktap_finished