public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: Lukasz Majewski <lukma@denx.de>,
	GNU C Library <libc-alpha@sourceware.org>
Subject: Re: [PATCH v7] tst: Extend cross-test-ssh.sh to specify if target date can be altered
Date: Mon, 8 Mar 2021 14:10:36 -0300	[thread overview]
Message-ID: <a098ce40-1355-8245-ff70-a958c17df756@linaro.org> (raw)
In-Reply-To: <20210307120219.20908-1-lukma@denx.de>



On 07/03/2021 09:02, Lukasz Majewski wrote:
> 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.
> 
> Changes for v2:
> - Utilize flock to provide serialization of cross-test-ssh.sh script
>   execution.
> - Add entry to manual/install.texi about --allow-time-setting flag
>   usage.
> 
> Changes for v3:
> - The install.texi manual has been augmented to explain two distinct
>   use cases for setting the time on target system.
> 
> Changes for v4:
> - Add -w switch to flock (specify timeout)
> - Check return value of flock - exit ssh shell script
> - Allow user override of FLOCK_* variables
> - Rewrite the script's information/help text
> - Rewrite the install.texi manual entry for this
>   script usage
> 
> Changes for v5:
> - Add two spaces after '.'
> - Add information to INSTALL file that 'flock' from util-linux is
>   required to provide serialization
> - Add information to INSTALL about flock need for test wrapper
> 
> Changes for v6:
> - Move the information about 'flock' requirement from INSTALL to
>   install.texi
> 
> Changes for v7:
> - Update INSTALL after regenerating it

Ok with above wording changes.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  INSTALL                   | 15 +++++++++++++++
>  manual/install.texi       | 20 ++++++++++++++++++++
>  scripts/cross-test-ssh.sh | 25 ++++++++++++++++++++++++-
>  3 files changed, 59 insertions(+), 1 deletion(-)
> 
> diff --git a/INSTALL b/INSTALL
> index 9a50e3ee06..c74ddd1d9f 100644
> --- a/INSTALL
> +++ b/INSTALL
> @@ -347,6 +347,21 @@ is the absolute directory name for the main source directory and
>  HOSTNAME is the host name of a system that can run the newly built
>  binaries of the GNU C Library.  The source and build directories must be
>  visible at the same locations on both the build system and HOSTNAME.
> +The 'cross-test-ssh.sh' script requres 'flock' from 'util-linux' to work
> +when GLIBC_TEST_ALLOW_TIME_SETTING environment variable is set.
> +
> +   It is also possible to execute tests, which require setting date on
> +the target machine.  Following use cases are supported:
> +   * 'GLIBC_TEST_ALLOW_TIME_SETTING' is set in the environment in which
> +     eligible tests are executed and have privilege to run
> +     'clock_settime'.  In this case nothing prevents those tests from
> +     running in parallel, so the caller shall assure that those tests
> +     are serialized or provide a proper wrapper script for it.
> +
> +   * The 'cross-test-ssh.sh' script is used and one passes the
> +     '--allow-time-setting' flag.  In this case both setting
> +     'GLIBC_TEST_ALLOW_TIME_SETTING' and serialization of tests
> +     execution are assured automatically.
>  
>     In general, when testing the GNU C Library, 'test-wrapper' may be set
>  to the name and arguments of any program to run newly built binaries.
> diff --git a/manual/install.texi b/manual/install.texi
> index 419576f49c..828c78ee1f 100644
> --- a/manual/install.texi
> +++ b/manual/install.texi
> @@ -379,6 +379,26 @@ directory and @var{hostname} is the host name of a system that can run
>  the newly built binaries of @theglibc{}.  The source and build
>  directories must be visible at the same locations on both the build
>  system and @var{hostname}.
> +The @samp{cross-test-ssh.sh} script requres @samp{flock} from

s/requres/requires

> +@samp{util-linux} to work when @var{glibc_test_allow_time_setting}
> +environment variable is set.
> +
> +It is also possible to execute tests, which require setting date on

I think it misses a determiner: 'require setting *the* date'.

> +the target machine.  Following use cases are supported:
> +@itemize @bullet
> +@item
> +@code{GLIBC_TEST_ALLOW_TIME_SETTING} is set in the environment in
> +which eligible tests are executed and have privilege to run

Similar as before, I think misses an article: "and have the privilege'

> +@code{clock_settime}.  In this case nothing prevents those tests from

I think it misses an comma here: "In this case, nothing"

> +running in parallel, so the caller shall assure that those tests
> +are serialized or provide a proper wrapper script for it.

s/it/them (the tests).

> +
> +@item
> +The @code{cross-test-ssh.sh} script is used and one passes the
> +@option{--allow-time-setting} flag.  In this case both setting

Missing comma here as well: "In this case, ..." and it should be
'both sets'.

> +@code{GLIBC_TEST_ALLOW_TIME_SETTING} and serialization of tests

s/tests/test

> +execution are assured automatically.
> +@end itemize
>  
>  In general, when testing @theglibc{}, @samp{test-wrapper} may be set
>  to the name and arguments of any program to run newly built binaries.
> diff --git a/scripts/cross-test-ssh.sh b/scripts/cross-test-ssh.sh
> index 6d8fbcdfd2..a839e22dd0 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,10 @@ 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 indicate that
> +time can be safely adjusted (e.g. on 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 +85,10 @@ while [ $# -gt 0 ]; do
>        timeoutfactor="$1"
>        ;;
>  
> +    "--allow-time-setting")
> +      settimeallowed="1"
> +      ;;
> +
>      "--help")
>        echo "$usage"
>        echo "$help"
> @@ -127,6 +135,21 @@ if [ "$timeoutfactor" ]; then
>  ${command}"
>  fi
>  
> +# Add command to set the info that time on target can be adjusted,
> +# if required.
> +# Serialize execution of this script on target to prevent from unintended
> +# change of target time.
> +FLOCK_PATH="${FLOCK_PATH:-/var/lock/clock_settime}"
> +FLOCK_TIMEOUT="${FLOCK_TIMEOUT:-20}"
> +FLOCK_FD="${FLOCK_FD:-99}"
> +if [ "$settimeallowed" ]; then
> +  command="exec ${FLOCK_FD}<>${FLOCK_PATH}
> +flock -w ${FLOCK_TIMEOUT} ${FLOCK_FD}
> +if [ $? -ne 0 ]; then exit 1; fi
> +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
> 

      reply	other threads:[~2021-03-08 17:10 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-07 12:02 Lukasz Majewski
2021-03-08 17:10 ` Adhemerval Zanella [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a098ce40-1355-8245-ff70-a958c17df756@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=libc-alpha@sourceware.org \
    --cc=lukma@denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).