public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [RFC PATCH v4 0/5] shell: Introduce TST_TIMEOUT variable
@ 2019-09-30 14:59 Petr Vorel
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 1/5] shell: Add tst_is_num() Petr Vorel
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Petr Vorel @ 2019-09-30 14:59 UTC (permalink / raw)
  To: ltp

Hi,

changes v3->v4:
* add test runner test_timeout.sh, move tests into separate directory
issues reported by Cyril:
* ceil LTP_TIMEOUT_MUL to int instead of complicating code with float
* Don't add LTP_TIMEOUT_MUL docs. This should be added to somewhere else, maybe to
  doc/user-guide.txt if [1] is accepted
* don't renumber sections
* move memcg_stress_test.sh change into separate commit

[1] https://patchwork.ozlabs.org/patch/1169282/

Petr Vorel (5):
  shell: Add tst_is_num()
  shell: Introduce TST_TIMEOUT variable, add checks
  shell: Add timeout shell API tests
  memcg_stress_test.sh: use TST_TIMEOUT (replace LTP_TIMEOUT_MUL)
  net/if-mtu-change.sh: set TST_TIMEOUT

 doc/test-writing-guidelines.txt               | 14 ++++++-
 lib/newlib_tests/shell/test_timeout.sh        | 38 ++++++++++++++++++
 lib/newlib_tests/shell/timeout01.sh           | 13 +++++++
 lib/newlib_tests/shell/timeout02.sh           | 13 +++++++
 .../memcg/stress/memcg_stress_test.sh         |  2 +-
 testcases/lib/tst_test.sh                     | 39 +++++++++++++++++--
 .../network/stress/interface/if-mtu-change.sh |  4 +-
 7 files changed, 116 insertions(+), 7 deletions(-)
 create mode 100755 lib/newlib_tests/shell/test_timeout.sh
 create mode 100755 lib/newlib_tests/shell/timeout01.sh
 create mode 100755 lib/newlib_tests/shell/timeout02.sh

-- 
2.23.0


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [LTP] [RFC PATCH v4 1/5] shell: Add tst_is_num()
  2019-09-30 14:59 [LTP] [RFC PATCH v4 0/5] shell: Introduce TST_TIMEOUT variable Petr Vorel
@ 2019-09-30 14:59 ` Petr Vorel
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 2/5] shell: Introduce TST_TIMEOUT variable, add checks Petr Vorel
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 11+ messages in thread
From: Petr Vorel @ 2019-09-30 14:59 UTC (permalink / raw)
  To: ltp

Using grep -E, which more portable than using awk or anything else.

Reviewed-by: Li Wang <liwang@redhat.com>
Reviewed-by: Clemens Famulla-Conrad <cfamullaconrad@suse.de>
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 doc/test-writing-guidelines.txt | 6 ++++++
 testcases/lib/tst_test.sh       | 7 ++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/doc/test-writing-guidelines.txt b/doc/test-writing-guidelines.txt
index cd0d28b8e..6643fc7c1 100644
--- a/doc/test-writing-guidelines.txt
+++ b/doc/test-writing-guidelines.txt
@@ -2338,6 +2338,12 @@ Checking for integers
 tst_is_int "$FOO"
 -------------------------------------------------------------------------------
 
+Checking for integers and floating point numbers
+++++++++++++++++++++++++++++++++++++++++++++++++
+# returns zero if passed an integer or floating point number parameter, non-zero otherwise
+tst_is_num "$FOO"
+-------------------------------------------------------------------------------
+
 Obtaining random numbers
 ++++++++++++++++++++++++
 
diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh
index e0b24c6b9..ca63745fd 100644
--- a/testcases/lib/tst_test.sh
+++ b/testcases/lib/tst_test.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (c) Linux Test Project, 2014-2018
+# Copyright (c) Linux Test Project, 2014-2019
 # Author: Cyril Hrubis <chrubis@suse.cz>
 #
 # LTP test library for shell.
@@ -344,6 +344,11 @@ tst_is_int()
 	return $?
 }
 
+tst_is_num()
+{
+	echo "$1" | grep -Eq '^[-+]?[0-9]+\.?[0-9]*$'
+}
+
 tst_usage()
 {
 	if [ -n "$TST_USAGE" ]; then
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [LTP] [RFC PATCH v4 2/5] shell: Introduce TST_TIMEOUT variable, add checks
  2019-09-30 14:59 [LTP] [RFC PATCH v4 0/5] shell: Introduce TST_TIMEOUT variable Petr Vorel
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 1/5] shell: Add tst_is_num() Petr Vorel
@ 2019-09-30 14:59 ` Petr Vorel
  2019-10-09 14:34   ` Cyril Hrubis
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 3/5] shell: Add timeout shell API tests Petr Vorel
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Petr Vorel @ 2019-09-30 14:59 UTC (permalink / raw)
  To: ltp

to unify shell API with C API.

TST_TIMEOUT should be set in tests only, it's equivalent
of tst_test->timeout in C API.

Add checks requiring both TST_TIMEOUT and LTP_TIMEOUT_MUL >= 1,
that allow to set TST_TIMEOUT lower than the default 300 sec
(might be useful for some case).

LTP_TIMEOUT_MUL can be float, but will be ceiled to int.
Using float would require awk/bc, which is unnecessary dependency
and code complication (we do not care that much if it's multiplied
precisely as far as the resulting timeout is never smaller than
the precise calculation).

Also added cut dependency to _tst_setup_timer(), but that's not
a problem as it was already required for shell API in tst_run().

Suggested-by: Clemens Famulla-Conrad <cfamullaconrad@suse.de>
Reviewed-by: Li Wang <liwang@redhat.com>
Reviewed-by: Clemens Famulla-Conrad <cfamullaconrad@suse.de>
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 doc/test-writing-guidelines.txt |  8 ++++++--
 testcases/lib/tst_test.sh       | 32 ++++++++++++++++++++++++++++++--
 2 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/doc/test-writing-guidelines.txt b/doc/test-writing-guidelines.txt
index 6643fc7c1..69da6c495 100644
--- a/doc/test-writing-guidelines.txt
+++ b/doc/test-writing-guidelines.txt
@@ -2109,8 +2109,8 @@ tst_run
 '$TST_TEST_DATA' can be used with '$TST_CNT'. If '$TST_TEST_DATA_IFS' not specified,
 space as default value is used. Of course, it's possible to use separate functions.
 
-2.3.2 Library variables
-^^^^^^^^^^^^^^^^^^^^^^^
+2.3.2 Library environment variables for shell
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Similarily to the C library various checks and preparations can be requested
 simply by setting right '$TST_NEEDS_FOO'.
@@ -2126,6 +2126,10 @@ simply by setting right '$TST_NEEDS_FOO'.
                        the test (see below).
 | 'TST_NEEDS_MODULE' | Test module name needed for the test (see below).
 | 'TST_NEEDS_DRIVERS'| Checks kernel drivers support for the test.
+| 'TST_TIMEOUT'      | Maximum timeout set for the test in sec. Must be int >= 1,
+                       or -1 (special value to disable timeout), default is 300.
+                       Variable is meant be set in tests, not by user.
+                       It's equivalent of `tst_test.timeout` in C.
 |=============================================================================
 
 NOTE: Network tests (see testcases/network/README.md) use additional variables
diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh
index ca63745fd..977ffd97e 100644
--- a/testcases/lib/tst_test.sh
+++ b/testcases/lib/tst_test.sh
@@ -379,9 +379,37 @@ _tst_rescmp()
 
 _tst_setup_timer()
 {
+	TST_TIMEOUT=${TST_TIMEOUT:-300}
 	LTP_TIMEOUT_MUL=${LTP_TIMEOUT_MUL:-1}
 
-	local sec=$((300 * LTP_TIMEOUT_MUL))
+	if [ "$TST_TIMEOUT" = -1 ]; then
+		tst_res TINFO "Timeout per run is disabled"
+		return
+	fi
+
+	local err="LTP_TIMEOUT_MUL must be number >= 1!"
+
+	tst_is_num "$LTP_TIMEOUT_MUL" || tst_brk TCONF "$err ($LTP_TIMEOUT_MUL)"
+
+	if ! tst_is_int "$LTP_TIMEOUT_MUL"; then
+		tst_test_cmds cut
+		LTP_TIMEOUT_MUL=$(echo "$LTP_TIMEOUT_MUL" | cut -d. -f1)
+		LTP_TIMEOUT_MUL=$((LTP_TIMEOUT_MUL+1))
+		tst_res TINFO "ceiling LTP_TIMEOUT_MUL to $LTP_TIMEOUT_MUL"
+	fi
+	[ "$LTP_TIMEOUT_MUL" -ge 1 ] || tst_brk TCONF "$err ($LTP_TIMEOUT_MUL)"
+
+	if ! tst_is_int "$TST_TIMEOUT" || [ "$TST_TIMEOUT" -lt 1 ]; then
+		tst_brk TBROK "TST_TIMEOUT must be int >= 1! ($TST_TIMEOUT)"
+	fi
+
+	local sec
+	if [ "$is_float" ]; then
+		sec=`echo | awk '{printf("%d\n", '$TST_TIMEOUT' * '$LTP_TIMEOUT_MUL'+ 0.5)}'`
+	else
+		sec=$((TST_TIMEOUT * LTP_TIMEOUT_MUL))
+	fi
+
 	local h=$((sec / 3600))
 	local m=$((sec / 60 % 60))
 	local s=$((sec % 60))
@@ -418,7 +446,7 @@ tst_run()
 			NEEDS_CMDS|NEEDS_MODULE|MODPATH|DATAROOT);;
 			NEEDS_DRIVERS|FS_TYPE|MNTPOINT|MNT_PARAMS);;
 			IPV6|IPVER|TEST_DATA|TEST_DATA_IFS);;
-			RETRY_FUNC|RETRY_FN_EXP_BACKOFF);;
+			RETRY_FUNC|RETRY_FN_EXP_BACKOFF|TIMEOUT);;
 			NET_MAX_PKT);;
 			*) tst_res TWARN "Reserved variable TST_$_tst_i used!";;
 			esac
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [LTP] [RFC PATCH v4 3/5] shell: Add timeout shell API tests
  2019-09-30 14:59 [LTP] [RFC PATCH v4 0/5] shell: Introduce TST_TIMEOUT variable Petr Vorel
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 1/5] shell: Add tst_is_num() Petr Vorel
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 2/5] shell: Introduce TST_TIMEOUT variable, add checks Petr Vorel
@ 2019-09-30 14:59 ` Petr Vorel
  2019-10-02 10:46   ` Petr Vorel
  2019-10-09 14:36   ` Cyril Hrubis
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 4/5] memcg_stress_test.sh: use TST_TIMEOUT (replace LTP_TIMEOUT_MUL) Petr Vorel
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 5/5] net/if-mtu-change.sh: set TST_TIMEOUT Petr Vorel
  4 siblings, 2 replies; 11+ messages in thread
From: Petr Vorel @ 2019-09-30 14:59 UTC (permalink / raw)
  To: ltp

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 lib/newlib_tests/shell/test_timeout.sh | 38 ++++++++++++++++++++++++++
 lib/newlib_tests/shell/timeout01.sh    | 13 +++++++++
 lib/newlib_tests/shell/timeout02.sh    | 13 +++++++++
 3 files changed, 64 insertions(+)
 create mode 100755 lib/newlib_tests/shell/test_timeout.sh
 create mode 100755 lib/newlib_tests/shell/timeout01.sh
 create mode 100755 lib/newlib_tests/shell/timeout02.sh

diff --git a/lib/newlib_tests/shell/test_timeout.sh b/lib/newlib_tests/shell/test_timeout.sh
new file mode 100755
index 000000000..7e296f9e9
--- /dev/null
+++ b/lib/newlib_tests/shell/test_timeout.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+PATH="$(dirname $0)/../../../testcases/lib/:$PATH"
+
+DATA="
+timeout01.sh||0
+timeout02.sh||0
+timeout02.sh|foo|32
+timeout02.sh|2|0
+timeout02.sh|1.1|0
+timeout02.sh|-10|32
+"
+
+echo "Testing timeout in shell API"
+echo
+
+failed=0
+IFS="
+"
+for i in $DATA; do
+	file=$(echo $i | cut -d'|' -f1)
+	timeout=$(echo $i | cut -d'|' -f2)
+	exp_exit=$(echo $i | cut -d'|' -f3)
+
+	echo "=== $test (LTP_TIMEOUT_MUL='$timeout') ==="
+	LTP_TIMEOUT_MUL=$timeout ./$file
+	ret=$?
+	if [ $ret -ne $exp_exit ]; then
+		echo "FAILED (exit code: $ret, expected $exp_exit)"
+		failed=$((failed+1))
+	else
+		echo "PASSED"
+	fi
+	echo
+done
+
+echo "Failed tests: $failed"
+exit $failed
diff --git a/lib/newlib_tests/shell/timeout01.sh b/lib/newlib_tests/shell/timeout01.sh
new file mode 100755
index 000000000..ab7428a2d
--- /dev/null
+++ b/lib/newlib_tests/shell/timeout01.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+TST_TESTFUNC=do_test
+
+TST_TIMEOUT=-1
+. tst_test.sh
+
+do_test()
+{
+	tst_res TPASS "timeout $TST_TIMEOUT set"
+}
+
+tst_run
diff --git a/lib/newlib_tests/shell/timeout02.sh b/lib/newlib_tests/shell/timeout02.sh
new file mode 100755
index 000000000..73af09125
--- /dev/null
+++ b/lib/newlib_tests/shell/timeout02.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+TST_TESTFUNC=do_test
+
+TST_TIMEOUT=2
+. tst_test.sh
+
+do_test()
+{
+	tst_res TPASS "timeout $TST_TIMEOUT set (LTP_TIMEOUT_MUL='$LTP_TIMEOUT_MUL')"
+}
+
+tst_run
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [LTP] [RFC PATCH v4 4/5] memcg_stress_test.sh: use TST_TIMEOUT (replace LTP_TIMEOUT_MUL)
  2019-09-30 14:59 [LTP] [RFC PATCH v4 0/5] shell: Introduce TST_TIMEOUT variable Petr Vorel
                   ` (2 preceding siblings ...)
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 3/5] shell: Add timeout shell API tests Petr Vorel
@ 2019-09-30 14:59 ` Petr Vorel
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 5/5] net/if-mtu-change.sh: set TST_TIMEOUT Petr Vorel
  4 siblings, 0 replies; 11+ messages in thread
From: Petr Vorel @ 2019-09-30 14:59 UTC (permalink / raw)
  To: ltp

keeping the same timeout

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh b/testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh
index 5b19cc292..ad8605e16 100755
--- a/testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh
+++ b/testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh
@@ -17,7 +17,7 @@ TST_NEEDS_CMDS="mount umount cat kill mkdir rmdir grep awk cut"
 
 # Each test case runs for 900 secs when everything fine
 # therefore the default 5 mins timeout is not enough.
-LTP_TIMEOUT_MUL=7
+TST_TIMEOUT=2100
 
 . cgroup_lib.sh
 
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [LTP] [RFC PATCH v4 5/5] net/if-mtu-change.sh: set TST_TIMEOUT
  2019-09-30 14:59 [LTP] [RFC PATCH v4 0/5] shell: Introduce TST_TIMEOUT variable Petr Vorel
                   ` (3 preceding siblings ...)
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 4/5] memcg_stress_test.sh: use TST_TIMEOUT (replace LTP_TIMEOUT_MUL) Petr Vorel
@ 2019-09-30 14:59 ` Petr Vorel
  4 siblings, 0 replies; 11+ messages in thread
From: Petr Vorel @ 2019-09-30 14:59 UTC (permalink / raw)
  To: ltp

The default setup (100 * 5 seconds just for sleep) is longer than default timeout.
30 sec for each iteration should be more than enough as a default.

Fixes: fbea02ab5 ("lib/tst_test.sh: setup timeout per test run for the shell tests")

Reviewed-by: Li Wang <liwang@redhat.com>
Reviewed-by: Clemens Famulla-Conrad <cfamullaconrad@suse.de>
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 testcases/network/stress/interface/if-mtu-change.sh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/testcases/network/stress/interface/if-mtu-change.sh b/testcases/network/stress/interface/if-mtu-change.sh
index 30c013214..b945fb6ce 100755
--- a/testcases/network/stress/interface/if-mtu-change.sh
+++ b/testcases/network/stress/interface/if-mtu-change.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (c) 2017-2018 Petr Vorel <pvorel@suse.cz>
+# Copyright (c) 2017-2019 Petr Vorel <pvorel@suse.cz>
 # Copyright (c) 2015-2017 Oracle and/or its affiliates. All Rights Reserved.
 # Copyright (c) International Business Machines  Corp., 2005
 # Author: Mitsuru Chinen <mitch@jp.ibm.com>
@@ -13,6 +13,8 @@ TST_CLEANUP="do_cleanup"
 # The interval of the mtu change [second]
 CHANGE_INTERVAL=${CHANGE_INTERVAL:-5}
 
+TST_TIMEOUT=$(((CHANGE_INTERVAL + 30) * MTU_CHANGE_TIMES))
+
 # The array of the value which MTU is changed into sequentially
 # 552 - net.ipv4.route.min_pmtu
 CHANGE_VALUES="784 1142 552 1500 552 1500 552 748 552 1142 1500"
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [LTP] [RFC PATCH v4 3/5] shell: Add timeout shell API tests
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 3/5] shell: Add timeout shell API tests Petr Vorel
@ 2019-10-02 10:46   ` Petr Vorel
  2019-10-09 14:36   ` Cyril Hrubis
  1 sibling, 0 replies; 11+ messages in thread
From: Petr Vorel @ 2019-10-02 10:46 UTC (permalink / raw)
  To: ltp

Hi,

> Signed-off-by: Petr Vorel <pvorel@suse.cz>
> ---
>  lib/newlib_tests/shell/test_timeout.sh | 38 ++++++++++++++++++++++++++
>  lib/newlib_tests/shell/timeout01.sh    | 13 +++++++++
>  lib/newlib_tests/shell/timeout02.sh    | 13 +++++++++
>  3 files changed, 64 insertions(+)
>  create mode 100755 lib/newlib_tests/shell/test_timeout.sh
>  create mode 100755 lib/newlib_tests/shell/timeout01.sh
>  create mode 100755 lib/newlib_tests/shell/timeout02.sh

> diff --git a/lib/newlib_tests/shell/test_timeout.sh b/lib/newlib_tests/shell/test_timeout.sh
> new file mode 100755
> index 000000000..7e296f9e9
> --- /dev/null
> +++ b/lib/newlib_tests/shell/test_timeout.sh
> @@ -0,0 +1,38 @@
> +#!/bin/sh
> +
> +PATH="$(dirname $0)/../../../testcases/lib/:$PATH"
I put PATH here, as it's the only runner and not prolong this fix.
If we want more sophisticated functionality from these test of the library
itself runners, we could create some common.sh library here, which would set
PATH and do other things (counting failures and report them etc).

> +
> +DATA="
> +timeout01.sh||0
> +timeout02.sh||0
> +timeout02.sh|foo|32
> +timeout02.sh|2|0
> +timeout02.sh|1.1|0
> +timeout02.sh|-10|32
> +"
> +
> +echo "Testing timeout in shell API"
> +echo
> +
> +failed=0
> +IFS="
> +"
> +for i in $DATA; do
> +	file=$(echo $i | cut -d'|' -f1)
> +	timeout=$(echo $i | cut -d'|' -f2)
> +	exp_exit=$(echo $i | cut -d'|' -f3)
> +
> +	echo "=== $test (LTP_TIMEOUT_MUL='$timeout') ==="
> +	LTP_TIMEOUT_MUL=$timeout ./$file
> +	ret=$?
> +	if [ $ret -ne $exp_exit ]; then
> +		echo "FAILED (exit code: $ret, expected $exp_exit)"
> +		failed=$((failed+1))
> +	else
> +		echo "PASSED"
> +	fi
> +	echo
> +done
> +
> +echo "Failed tests: $failed"
> +exit $failed

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [LTP] [RFC PATCH v4 2/5] shell: Introduce TST_TIMEOUT variable, add checks
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 2/5] shell: Introduce TST_TIMEOUT variable, add checks Petr Vorel
@ 2019-10-09 14:34   ` Cyril Hrubis
  2019-10-11  8:12     ` Petr Vorel
  0 siblings, 1 reply; 11+ messages in thread
From: Cyril Hrubis @ 2019-10-09 14:34 UTC (permalink / raw)
  To: ltp

Hi!
>  _tst_setup_timer()
>  {
> +	TST_TIMEOUT=${TST_TIMEOUT:-300}
>  	LTP_TIMEOUT_MUL=${LTP_TIMEOUT_MUL:-1}
>  
> -	local sec=$((300 * LTP_TIMEOUT_MUL))
> +	if [ "$TST_TIMEOUT" = -1 ]; then
> +		tst_res TINFO "Timeout per run is disabled"
> +		return
> +	fi
> +
> +	local err="LTP_TIMEOUT_MUL must be number >= 1!"
> +
> +	tst_is_num "$LTP_TIMEOUT_MUL" || tst_brk TCONF "$err ($LTP_TIMEOUT_MUL)"
> +
> +	if ! tst_is_int "$LTP_TIMEOUT_MUL"; then
> +		tst_test_cmds cut

I do not think that it's necessary to check for the presense of the cut
command.

> +		LTP_TIMEOUT_MUL=$(echo "$LTP_TIMEOUT_MUL" | cut -d. -f1)
> +		LTP_TIMEOUT_MUL=$((LTP_TIMEOUT_MUL+1))
> +		tst_res TINFO "ceiling LTP_TIMEOUT_MUL to $LTP_TIMEOUT_MUL"
> +	fi
> +	[ "$LTP_TIMEOUT_MUL" -ge 1 ] || tst_brk TCONF "$err ($LTP_TIMEOUT_MUL)"
> +
> +	if ! tst_is_int "$TST_TIMEOUT" || [ "$TST_TIMEOUT" -lt 1 ]; then
> +		tst_brk TBROK "TST_TIMEOUT must be int >= 1! ($TST_TIMEOUT)"
> +	fi
> +
> +	local sec
> +	if [ "$is_float" ]; then
> +		sec=`echo | awk '{printf("%d\n", '$TST_TIMEOUT' * '$LTP_TIMEOUT_MUL'+ 0.5)}'`
> +	else
> +		sec=$((TST_TIMEOUT * LTP_TIMEOUT_MUL))
> +	fi

Is this a leftover? Now that LTP_TIMEOUT_MUL has been converted to int
we can simply do what is done in the else branch.

>  	local h=$((sec / 3600))
>  	local m=$((sec / 60 % 60))
>  	local s=$((sec % 60))
> @@ -418,7 +446,7 @@ tst_run()
>  			NEEDS_CMDS|NEEDS_MODULE|MODPATH|DATAROOT);;
>  			NEEDS_DRIVERS|FS_TYPE|MNTPOINT|MNT_PARAMS);;
>  			IPV6|IPVER|TEST_DATA|TEST_DATA_IFS);;
> -			RETRY_FUNC|RETRY_FN_EXP_BACKOFF);;
> +			RETRY_FUNC|RETRY_FN_EXP_BACKOFF|TIMEOUT);;
>  			NET_MAX_PKT);;
>  			*) tst_res TWARN "Reserved variable TST_$_tst_i used!";;
>  			esac
> -- 
> 2.23.0
> 

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [LTP] [RFC PATCH v4 3/5] shell: Add timeout shell API tests
  2019-09-30 14:59 ` [LTP] [RFC PATCH v4 3/5] shell: Add timeout shell API tests Petr Vorel
  2019-10-02 10:46   ` Petr Vorel
@ 2019-10-09 14:36   ` Cyril Hrubis
  2019-10-11  8:17     ` Petr Vorel
  1 sibling, 1 reply; 11+ messages in thread
From: Cyril Hrubis @ 2019-10-09 14:36 UTC (permalink / raw)
  To: ltp

Hi!
> +DATA="
> +timeout01.sh||0
> +timeout02.sh||0
> +timeout02.sh|foo|32
> +timeout02.sh|2|0
> +timeout02.sh|1.1|0
> +timeout02.sh|-10|32
> +"
> +
> +echo "Testing timeout in shell API"
> +echo
> +
> +failed=0
> +IFS="
> +"

Do we have to change IFS here? It should be set to space, tab, and
newline by default, so the loop over $DATA should work correctly
anyways.

> +for i in $DATA; do
> +	file=$(echo $i | cut -d'|' -f1)
> +	timeout=$(echo $i | cut -d'|' -f2)
> +	exp_exit=$(echo $i | cut -d'|' -f3)
> +
> +	echo "=== $test (LTP_TIMEOUT_MUL='$timeout') ==="
> +	LTP_TIMEOUT_MUL=$timeout ./$file
> +	ret=$?
> +	if [ $ret -ne $exp_exit ]; then
> +		echo "FAILED (exit code: $ret, expected $exp_exit)"
> +		failed=$((failed+1))
> +	else
> +		echo "PASSED"
> +	fi
> +	echo
> +done
> +
> +echo "Failed tests: $failed"
> +exit $failed
> diff --git a/lib/newlib_tests/shell/timeout01.sh b/lib/newlib_tests/shell/timeout01.sh
> new file mode 100755
> index 000000000..ab7428a2d
> --- /dev/null
> +++ b/lib/newlib_tests/shell/timeout01.sh
> @@ -0,0 +1,13 @@
> +#!/bin/sh
> +
> +TST_TESTFUNC=do_test
> +
> +TST_TIMEOUT=-1
> +. tst_test.sh
> +
> +do_test()
> +{
> +	tst_res TPASS "timeout $TST_TIMEOUT set"
> +}
> +
> +tst_run
> diff --git a/lib/newlib_tests/shell/timeout02.sh b/lib/newlib_tests/shell/timeout02.sh
> new file mode 100755
> index 000000000..73af09125
> --- /dev/null
> +++ b/lib/newlib_tests/shell/timeout02.sh
> @@ -0,0 +1,13 @@
> +#!/bin/sh
> +
> +TST_TESTFUNC=do_test
> +
> +TST_TIMEOUT=2
> +. tst_test.sh
> +
> +do_test()
> +{
> +	tst_res TPASS "timeout $TST_TIMEOUT set (LTP_TIMEOUT_MUL='$LTP_TIMEOUT_MUL')"
> +}
> +
> +tst_run
> -- 
> 2.23.0
> 

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [LTP] [RFC PATCH v4 2/5] shell: Introduce TST_TIMEOUT variable, add checks
  2019-10-09 14:34   ` Cyril Hrubis
@ 2019-10-11  8:12     ` Petr Vorel
  0 siblings, 0 replies; 11+ messages in thread
From: Petr Vorel @ 2019-10-11  8:12 UTC (permalink / raw)
  To: ltp

Hi Cyril,

...
> > +	if ! tst_is_int "$LTP_TIMEOUT_MUL"; then
> > +		tst_test_cmds cut

> I do not think that it's necessary to check for the presense of the cut
> command.
I wouldn't check for cut in tests, but in library I tend to be careful.
But sure, I'll delete it.

BTW we already check for basic commands in tst_run():
tst_test_cmds cut tr wc
_tst_setup_timer() is called later.
Do you want to drop some of these checks?

> > +		LTP_TIMEOUT_MUL=$(echo "$LTP_TIMEOUT_MUL" | cut -d. -f1)
> > +		LTP_TIMEOUT_MUL=$((LTP_TIMEOUT_MUL+1))
> > +		tst_res TINFO "ceiling LTP_TIMEOUT_MUL to $LTP_TIMEOUT_MUL"
> > +	fi
> > +	[ "$LTP_TIMEOUT_MUL" -ge 1 ] || tst_brk TCONF "$err ($LTP_TIMEOUT_MUL)"
> > +
> > +	if ! tst_is_int "$TST_TIMEOUT" || [ "$TST_TIMEOUT" -lt 1 ]; then
> > +		tst_brk TBROK "TST_TIMEOUT must be int >= 1! ($TST_TIMEOUT)"
> > +	fi
> > +
> > +	local sec
> > +	if [ "$is_float" ]; then
> > +		sec=`echo | awk '{printf("%d\n", '$TST_TIMEOUT' * '$LTP_TIMEOUT_MUL'+ 0.5)}'`
> > +	else
> > +		sec=$((TST_TIMEOUT * LTP_TIMEOUT_MUL))
> > +	fi

> Is this a leftover? Now that LTP_TIMEOUT_MUL has been converted to int
> we can simply do what is done in the else branch.
Yes, thanks for catching this.

Kind regards,
Petr

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [LTP] [RFC PATCH v4 3/5] shell: Add timeout shell API tests
  2019-10-09 14:36   ` Cyril Hrubis
@ 2019-10-11  8:17     ` Petr Vorel
  0 siblings, 0 replies; 11+ messages in thread
From: Petr Vorel @ 2019-10-11  8:17 UTC (permalink / raw)
  To: ltp

Hi Cyril,

> > +DATA="
> > +timeout01.sh||0
> > +timeout02.sh||0
> > +timeout02.sh|foo|32
> > +timeout02.sh|2|0
> > +timeout02.sh|1.1|0
> > +timeout02.sh|-10|32
> > +"
> > +
> > +echo "Testing timeout in shell API"
> > +echo
> > +
> > +failed=0
> > +IFS="
> > +"

> Do we have to change IFS here? It should be set to space, tab, and
> newline by default, so the loop over $DATA should work correctly
> anyways.
Again, thanks for catching this.
It's a left over from prototyping, where I had spaces in some data rows,
therefore it was needed.

> > +for i in $DATA; do
> > +	file=$(echo $i | cut -d'|' -f1)
> > +	timeout=$(echo $i | cut -d'|' -f2)
> > +	exp_exit=$(echo $i | cut -d'|' -f3)

Unless you want me to do else with tst_test_cmds in tst_test.sh,
I'll merge with changes you found.

Kind regards,
Petr

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2019-10-11  8:17 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-09-30 14:59 [LTP] [RFC PATCH v4 0/5] shell: Introduce TST_TIMEOUT variable Petr Vorel
2019-09-30 14:59 ` [LTP] [RFC PATCH v4 1/5] shell: Add tst_is_num() Petr Vorel
2019-09-30 14:59 ` [LTP] [RFC PATCH v4 2/5] shell: Introduce TST_TIMEOUT variable, add checks Petr Vorel
2019-10-09 14:34   ` Cyril Hrubis
2019-10-11  8:12     ` Petr Vorel
2019-09-30 14:59 ` [LTP] [RFC PATCH v4 3/5] shell: Add timeout shell API tests Petr Vorel
2019-10-02 10:46   ` Petr Vorel
2019-10-09 14:36   ` Cyril Hrubis
2019-10-11  8:17     ` Petr Vorel
2019-09-30 14:59 ` [LTP] [RFC PATCH v4 4/5] memcg_stress_test.sh: use TST_TIMEOUT (replace LTP_TIMEOUT_MUL) Petr Vorel
2019-09-30 14:59 ` [LTP] [RFC PATCH v4 5/5] net/if-mtu-change.sh: set TST_TIMEOUT Petr Vorel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox