From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk1-x72e.google.com (mail-qk1-x72e.google.com [IPv6:2607:f8b0:4864:20::72e]) by sourceware.org (Postfix) with ESMTPS id 429BF3854802 for ; Thu, 4 Mar 2021 18:46:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 429BF3854802 Received: by mail-qk1-x72e.google.com with SMTP id l132so27685657qke.7 for ; Thu, 04 Mar 2021 10:46:54 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=KwMXW9EiPaewv7OO4gD7BjMVuhTg+Fjuygy3TuZJMqM=; b=f7I1Wk3Y2rTNpp7bLIxVZyo0rUhCeHBFBIqNTiEul/qbus3Ecjs4XU/9sqtKWXoUTk qsn8gi6h3bUdYmV4a/Z7LIstxIQTqTkga/m2LMxQq2SgAvqwzc54+MUTwk+w1WAGFVjp jNWz80RMXbQ37I8qeTjBBYdKZrjt1bv2sf8VSUxUCQH8Ft7vAQ3EO2QYo1u3tP1rmnzj scR6zEr2UDHlu4DBusjj8KHFsX4VEyUhLZpWKdaVK9zZZUI/6DMtvhTVmCem3BlblX+x 1zmGy8juAHCCREECRhzUxrz0bBXbI1zU5bHglRobNzUmLuwPkziupjY3xI7EUdkuzf/P 0hAQ== X-Gm-Message-State: AOAM532GmB3VMnX5t25EArmQfVRneSq6sCBetqcNHWsygJorqDnmLFY8 LDYZdIcDHBV6mhHu7V9oaXw3cauBicJslA== X-Google-Smtp-Source: ABdhPJzPWU4oV9eFoCcaJTcQtkQo+hk3pdbwy4rfRIl3KniMp8XyEiGyFshTOSR+7nHrf3wTgf72kg== X-Received: by 2002:a05:620a:450f:: with SMTP id t15mr5211634qkp.323.1614883613530; Thu, 04 Mar 2021 10:46:53 -0800 (PST) Received: from [192.168.1.4] ([177.194.48.209]) by smtp.googlemail.com with ESMTPSA id c27sm55851qko.71.2021.03.04.10.46.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Mar 2021 10:46:53 -0800 (PST) Subject: Re: [PATCH v6] tst: Extend cross-test-ssh.sh to specify if target date can be altered To: Lukasz Majewski , Joseph Myers Cc: GNU C Library References: <20210303214640.12821-1-lukma@denx.de> From: Adhemerval Zanella Message-ID: <8ed9c793-1f76-04ae-7f6b-faab901e9d3a@linaro.org> Date: Thu, 4 Mar 2021 15:46:50 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <20210303214640.12821-1-lukma@denx.de> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-13.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Mar 2021 18:46:56 -0000 On 03/03/2021 18:46, 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 As Joseph has noted, you need to regenerate the INSTALL and send it along with the patch itself (as other patches to INSTALL). The glibc regeneration wiki shows how to do it [1] INSTALL is generated by makeinfo; run rm $srcdir/INSTALL; make INSTALL to regenerate it (from the object directory). Currently we use texinfo version 6.5. Please send a v7 with the INSTALL change as well. [1] https://sourceware.org/glibc/wiki/Regeneration > --- > manual/install.texi | 20 ++++++++++++++++++++ > scripts/cross-test-ssh.sh | 25 ++++++++++++++++++++++++- > 2 files changed, 44 insertions(+), 1 deletion(-) > > 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 > +@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 > +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 > +@code{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. > + > +@item > +The @code{cross-test-ssh.sh} script is used and one passes the > +@option{--allow-time-setting} flag. In this case both setting > +@code{GLIBC_TEST_ALLOW_TIME_SETTING} and serialization of tests > +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 >