[1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered

Message ID 20210118160336.2553-1-lukma@denx.de
State Superseded
Headers
Series [1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered |

Commit Message

Lukasz Majewski Jan. 18, 2021, 4:03 p.m. UTC
  This code adds new flag - '--allow-time-setting' to cross-test-ssh.sh
script to indicate if it is allowed to alter the date on the system
on which tests are executed. This change is supposed to be used with
test systems, which use virtual machines for testing.

The GLIBC_TEST_ALLOW_TIME_SETTING env variable is exported to the
remote environment on which the eligible test is run and brings no
functional change when it is not.
---
 scripts/cross-test-ssh.sh | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
  

Comments

Lukasz Majewski Jan. 25, 2021, 9:16 a.m. UTC | #1
Dear Community,

> This code adds new flag - '--allow-time-setting' to cross-test-ssh.sh
> script to indicate if it is allowed to alter the date on the system
> on which tests are executed. This change is supposed to be used with
> test systems, which use virtual machines for testing.
> 
> The GLIBC_TEST_ALLOW_TIME_SETTING env variable is exported to the
> remote environment on which the eligible test is run and brings no
> functional change when it is not.

Do you have any more comments regarding this patch? It is crucial one
as it allows setting time on ARM VM, which facilitates the Y2038
validation process.

> ---
>  scripts/cross-test-ssh.sh | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/cross-test-ssh.sh b/scripts/cross-test-ssh.sh
> index 6d8fbcdfd2..1d49978197 100755
> --- a/scripts/cross-test-ssh.sh
> +++ b/scripts/cross-test-ssh.sh
> @@ -22,7 +22,7 @@
>  
>  progname="$(basename $0)"
>  
> -usage="usage: ${progname} [--ssh SSH] HOST COMMAND ..."
> +usage="usage: ${progname} [--ssh SSH][--allow-time-setting] HOST
> COMMAND ..." help="Run a glibc test COMMAND on the remote machine
> HOST, via ssh, preserving the current working directory, and
> respecting quoting. 
> @@ -32,6 +32,11 @@ instead of ordinary 'ssh'.
>  If the '--timeoutfactor FACTOR' flag is present, set TIMEOUTFACTOR on
>  the remote machine to the specified FACTOR.
>  
> +If the '--allow-time-setting' flag is present, set
> +GLIBC_TEST_ALLOW_TIME_SETTING on the remote machine to inform that
> +time can be safely adjusted when e.g. tests are run in a virtual
> +machine.
> +
>  To use this to run glibc tests, invoke the tests as follows:
>  
>    $ make test-wrapper='ABSPATH/cross-test-ssh.sh HOST' tests
> @@ -81,6 +86,10 @@ while [ $# -gt 0 ]; do
>        timeoutfactor="$1"
>        ;;
>  
> +    "--allow-time-setting")
> +      settimeallowed="1"
> +      ;;
> +
>      "--help")
>        echo "$usage"
>        echo "$help"
> @@ -127,6 +136,12 @@ if [ "$timeoutfactor" ]; then
>  ${command}"
>  fi
>  
> +# Add command to set the info that time on target can be adjusted,
> +# if required.
> +if [ "$settimeallowed" ]; then
> +  command="export GLIBC_TEST_ALLOW_TIME_SETTING=1 ${command}"
> +fi
> +
>  # HOST's sshd simply concatenates its arguments with spaces and
>  # passes them to some shell.  We want to force the use of /bin/sh,
>  # so we need to re-quote the whole command to ensure it appears as




Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
  
Lukasz Majewski Feb. 3, 2021, 2:17 p.m. UTC | #2
Dear Community,

> This code adds new flag - '--allow-time-setting' to cross-test-ssh.sh
> script to indicate if it is allowed to alter the date on the system
> on which tests are executed. This change is supposed to be used with
> test systems, which use virtual machines for testing.
> 
> The GLIBC_TEST_ALLOW_TIME_SETTING env variable is exported to the
> remote environment on which the eligible test is run and brings no
> functional change when it is not.

Gentle ping on this patch. It provides support for setting time in the
VM target on which glibc tests are executed (for example armv7a).

> ---
>  scripts/cross-test-ssh.sh | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/cross-test-ssh.sh b/scripts/cross-test-ssh.sh
> index 6d8fbcdfd2..1d49978197 100755
> --- a/scripts/cross-test-ssh.sh
> +++ b/scripts/cross-test-ssh.sh
> @@ -22,7 +22,7 @@
>  
>  progname="$(basename $0)"
>  
> -usage="usage: ${progname} [--ssh SSH] HOST COMMAND ..."
> +usage="usage: ${progname} [--ssh SSH][--allow-time-setting] HOST
> COMMAND ..." help="Run a glibc test COMMAND on the remote machine
> HOST, via ssh, preserving the current working directory, and
> respecting quoting. 
> @@ -32,6 +32,11 @@ instead of ordinary 'ssh'.
>  If the '--timeoutfactor FACTOR' flag is present, set TIMEOUTFACTOR on
>  the remote machine to the specified FACTOR.
>  
> +If the '--allow-time-setting' flag is present, set
> +GLIBC_TEST_ALLOW_TIME_SETTING on the remote machine to inform that
> +time can be safely adjusted when e.g. tests are run in a virtual
> +machine.
> +
>  To use this to run glibc tests, invoke the tests as follows:
>  
>    $ make test-wrapper='ABSPATH/cross-test-ssh.sh HOST' tests
> @@ -81,6 +86,10 @@ while [ $# -gt 0 ]; do
>        timeoutfactor="$1"
>        ;;
>  
> +    "--allow-time-setting")
> +      settimeallowed="1"
> +      ;;
> +
>      "--help")
>        echo "$usage"
>        echo "$help"
> @@ -127,6 +136,12 @@ if [ "$timeoutfactor" ]; then
>  ${command}"
>  fi
>  
> +# Add command to set the info that time on target can be adjusted,
> +# if required.
> +if [ "$settimeallowed" ]; then
> +  command="export GLIBC_TEST_ALLOW_TIME_SETTING=1 ${command}"
> +fi
> +
>  # HOST's sshd simply concatenates its arguments with spaces and
>  # passes them to some shell.  We want to force the use of /bin/sh,
>  # so we need to re-quote the whole command to ensure it appears as




Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
  
Joseph Myers Feb. 3, 2021, 7:32 p.m. UTC | #3
Should there be some way to serialize all tests that might change the 
target date, so that no such test runs in parallel with any other test, to 
avoid such a test causing another time-related test to fail if they run in 
parallel?  Or is the intent that such tests only be run in serial testing?

I think this sort of thing, regarding how to run the tests involving 
changing the target date, should be documented in install.texi.
  
Lukasz Majewski Feb. 4, 2021, 1:16 p.m. UTC | #4
Hi Joseph,

> Should there be some way to serialize all tests that might change the 
> target date, so that no such test runs in parallel with any other
> test, to avoid such a test causing another time-related test to fail
> if they run in parallel?  Or is the intent that such tests only be
> run in serial testing?
> 

It would be best to have those tests serialized. In that way the date
would be changed properly.

This feature is only provided to work with cross-test-ssh.sh script, so
it seems like the serialization is done by this script execution.

The idea is to set time (and restore it) only in do_test() function.

> I think this sort of thing, regarding how to run the tests involving 
> changing the target date, should be documented in install.texi.
> 

Ok, I will add proper entry into install.texi.



Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
  
Joseph Myers Feb. 4, 2021, 8:40 p.m. UTC | #5
On Thu, 4 Feb 2021, Lukasz Majewski wrote:

> This feature is only provided to work with cross-test-ssh.sh script, so
> it seems like the serialization is done by this script execution.

The script does not serialize execution.  It works fine to do parallel 
testing with cross-test-ssh.sh, if the system the tests are run on can 
handle the load of parallel test execution.  (It might be harder to make 
test compilation run in parallel but test execution in series, although 
that makes sense even without cross testing in the case of the nptl/ 
directory.)
  
Lukasz Majewski Feb. 4, 2021, 11:02 p.m. UTC | #6
Hi Joseph,

> On Thu, 4 Feb 2021, Lukasz Majewski wrote:
> 
> > This feature is only provided to work with cross-test-ssh.sh
> > script, so it seems like the serialization is done by this script
> > execution.  
> 
> The script does not serialize execution.  It works fine to do
> parallel testing with cross-test-ssh.sh, if the system the tests are
> run on can handle the load of parallel test execution.  (It might be
> harder to make test compilation run in parallel but test execution in
> series, although that makes sense even without cross testing in the
> case of the nptl/ directory.)
> 

Ok, I will investigate this and try to provide serialization.


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
  

Patch

diff --git a/scripts/cross-test-ssh.sh b/scripts/cross-test-ssh.sh
index 6d8fbcdfd2..1d49978197 100755
--- a/scripts/cross-test-ssh.sh
+++ b/scripts/cross-test-ssh.sh
@@ -22,7 +22,7 @@ 
 
 progname="$(basename $0)"
 
-usage="usage: ${progname} [--ssh SSH] HOST COMMAND ..."
+usage="usage: ${progname} [--ssh SSH][--allow-time-setting] HOST COMMAND ..."
 help="Run a glibc test COMMAND on the remote machine HOST, via ssh,
 preserving the current working directory, and respecting quoting.
 
@@ -32,6 +32,11 @@  instead of ordinary 'ssh'.
 If the '--timeoutfactor FACTOR' flag is present, set TIMEOUTFACTOR on
 the remote machine to the specified FACTOR.
 
+If the '--allow-time-setting' flag is present, set
+GLIBC_TEST_ALLOW_TIME_SETTING on the remote machine to inform that
+time can be safely adjusted when e.g. tests are run in a virtual
+machine.
+
 To use this to run glibc tests, invoke the tests as follows:
 
   $ make test-wrapper='ABSPATH/cross-test-ssh.sh HOST' tests
@@ -81,6 +86,10 @@  while [ $# -gt 0 ]; do
       timeoutfactor="$1"
       ;;
 
+    "--allow-time-setting")
+      settimeallowed="1"
+      ;;
+
     "--help")
       echo "$usage"
       echo "$help"
@@ -127,6 +136,12 @@  if [ "$timeoutfactor" ]; then
 ${command}"
 fi
 
+# Add command to set the info that time on target can be adjusted,
+# if required.
+if [ "$settimeallowed" ]; then
+  command="export GLIBC_TEST_ALLOW_TIME_SETTING=1 ${command}"
+fi
+
 # HOST's sshd simply concatenates its arguments with spaces and
 # passes them to some shell.  We want to force the use of /bin/sh,
 # so we need to re-quote the whole command to ensure it appears as