public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered
@ 2021-01-18 16:03 Lukasz Majewski
  2021-01-18 16:03 ` [PATCH 2/3] support: Provide xclock_settime test helper function Lukasz Majewski
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Lukasz Majewski @ 2021-01-18 16:03 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella, Florian Weimer
  Cc: Paul Eggert, Alistair Francis, Arnd Bergmann, Alistair Francis,
	GNU C Library, Carlos O'Donell, Florian Weimer,
	Zack Weinberg, Lukasz Majewski

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(-)

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
-- 
2.20.1


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

* [PATCH 2/3] support: Provide xclock_settime test helper function
  2021-01-18 16:03 [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered Lukasz Majewski
@ 2021-01-18 16:03 ` Lukasz Majewski
  2021-02-03 14:18   ` Lukasz Majewski
  2021-01-18 16:03 ` [PATCH 3/3] tst: Add test for clock_settime Lukasz Majewski
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ messages in thread
From: Lukasz Majewski @ 2021-01-18 16:03 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella, Florian Weimer
  Cc: Paul Eggert, Alistair Francis, Arnd Bergmann, Alistair Francis,
	GNU C Library, Carlos O'Donell, Florian Weimer,
	Zack Weinberg, Lukasz Majewski

The xclock_settime is a wrapper function on the clock_settime syscall
to be used in the test code.

It checks if the GLIBC_TEST_ALLOW_TIME_SETTING env variable is defined
in the environment in which test is executed. If it is not - the test
ends as unsupported. Otherwise, the clock-settime is executed and return
value is assessed.
---
 support/Makefile         |  1 +
 support/xclock_settime.c | 35 +++++++++++++++++++++++++++++++++++
 support/xtime.h          |  5 +++++
 3 files changed, 41 insertions(+)
 create mode 100644 support/xclock_settime.c

diff --git a/support/Makefile b/support/Makefile
index bb9889efb4..8d63fbd5da 100644
--- a/support/Makefile
+++ b/support/Makefile
@@ -90,6 +90,7 @@ libsupport-routines = \
   xchdir \
   xchroot \
   xclock_gettime \
+  xclock_settime \
   xclose \
   xchmod \
   xconnect \
diff --git a/support/xclock_settime.c b/support/xclock_settime.c
new file mode 100644
index 0000000000..12a83b9d79
--- /dev/null
+++ b/support/xclock_settime.c
@@ -0,0 +1,35 @@
+/* clock_settime with error checking.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <stdlib.h>
+#include <support/check.h>
+#include <support/xtime.h>
+#include <support/xthread.h>
+
+void
+xclock_settime (clockid_t clockid,
+                const struct timespec *ts)
+{
+  if (getenv (SETTIME_ENV_NAME) == NULL)
+    FAIL_UNSUPPORTED ("clock_settime is executed only when "\
+                      SETTIME_ENV_NAME" is set\n");
+
+  const int ret = clock_settime (clockid, ts);
+  if (ret < 0)
+    FAIL_EXIT1 ("clock_settime (%d): %m", clockid);
+}
diff --git a/support/xtime.h b/support/xtime.h
index 2482837dee..b4ac3b59e2 100644
--- a/support/xtime.h
+++ b/support/xtime.h
@@ -23,10 +23,15 @@
 
 __BEGIN_DECLS
 
+/* Name of the env variable, which indicates if it is possible to
+   adjust time on target machine.  */
+#define SETTIME_ENV_NAME "GLIBC_TEST_ALLOW_TIME_SETTING"
+
 /* The following functions call the corresponding libc functions and
    terminate the process on error.  */
 
 void xclock_gettime (clockid_t clock, struct timespec *ts);
+void xclock_settime (clockid_t clock, const struct timespec *ts);
 
 /* This helper can often simplify tests by avoiding an explicit
    variable declaration or allowing that declaration to be const. */
-- 
2.20.1


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

* [PATCH 3/3] tst: Add test for clock_settime
  2021-01-18 16:03 [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered Lukasz Majewski
  2021-01-18 16:03 ` [PATCH 2/3] support: Provide xclock_settime test helper function Lukasz Majewski
@ 2021-01-18 16:03 ` Lukasz Majewski
  2021-02-03 14:19   ` Lukasz Majewski
  2021-01-25  9:16 ` [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered Lukasz Majewski
  2021-02-03 14:17 ` Lukasz Majewski
  3 siblings, 1 reply; 11+ messages in thread
From: Lukasz Majewski @ 2021-01-18 16:03 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella, Florian Weimer
  Cc: Paul Eggert, Alistair Francis, Arnd Bergmann, Alistair Francis,
	GNU C Library, Carlos O'Donell, Florian Weimer,
	Zack Weinberg, Lukasz Majewski

This code brings test to check if time on target machine is properly set.
To avoid any issues with altering the time:

- The time, which was set before the test was executed is restored.

- The time is altered only when cross-test-ssh.sh is executed with
  --allow-time-setting flag
---
 time/Makefile            |  2 +-
 time/tst-clock_settime.c | 45 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletion(-)
 create mode 100644 time/tst-clock_settime.c

diff --git a/time/Makefile b/time/Makefile
index e6f448d938..e469cacb4a 100644
--- a/time/Makefile
+++ b/time/Makefile
@@ -50,7 +50,7 @@ tests	:= test_time clocktest tst-posixtz tst-strptime tst_wcsftime \
 	   tst-tzname tst-y2039 bug-mktime4 tst-strftime2 tst-strftime3 \
 	   tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 \
 	   tst-adjtime tst-clock-y2038 tst-clock2-y2038 \
-	   tst-cpuclock1-y2038 tst-clock_nanosleep-y2038
+	   tst-cpuclock1-y2038 tst-clock_nanosleep-y2038 tst-clock_settime
 
 include ../Rules
 
diff --git a/time/tst-clock_settime.c b/time/tst-clock_settime.c
new file mode 100644
index 0000000000..2abf6b8eb8
--- /dev/null
+++ b/time/tst-clock_settime.c
@@ -0,0 +1,45 @@
+/* Test for clock_settime (in VM)
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <time.h>
+#include <support/check.h>
+#include <support/xtime.h>
+
+#define TIMESPEC_SEC_Y2038_OV 0x7FFFFFFF
+#define FUTURE_TIME (TIMESPEC_SEC_Y2038_OV - 10)
+
+static int
+do_test (void)
+{
+  const struct timespec tv = { FUTURE_TIME, 0};
+  struct timespec tv_future, tv_now;
+
+  tv_now = xclock_now(CLOCK_REALTIME);
+  xclock_settime(CLOCK_REALTIME, &tv);
+  tv_future = xclock_now(CLOCK_REALTIME);
+
+  /* Restore old time value on target machine.  */
+  xclock_settime(CLOCK_REALTIME, (const struct timespec*) &tv_now);
+
+  if (tv_future.tv_sec < tv.tv_sec)
+    FAIL_EXIT1 ("clock_settime set wrong time!\n");
+
+  return 0;
+}
+
+#include <support/test-driver.c>
-- 
2.20.1


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

* Re: [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered
  2021-01-18 16:03 [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered Lukasz Majewski
  2021-01-18 16:03 ` [PATCH 2/3] support: Provide xclock_settime test helper function Lukasz Majewski
  2021-01-18 16:03 ` [PATCH 3/3] tst: Add test for clock_settime Lukasz Majewski
@ 2021-01-25  9:16 ` Lukasz Majewski
  2021-02-03 14:17 ` Lukasz Majewski
  3 siblings, 0 replies; 11+ messages in thread
From: Lukasz Majewski @ 2021-01-25  9:16 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella, Florian Weimer
  Cc: Paul Eggert, Alistair Francis, Arnd Bergmann, Alistair Francis,
	GNU C Library, Carlos O'Donell, Florian Weimer,
	Zack Weinberg

[-- Attachment #1: Type: text/plain, Size: 2797 bytes --]

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

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered
  2021-01-18 16:03 [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered Lukasz Majewski
                   ` (2 preceding siblings ...)
  2021-01-25  9:16 ` [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered Lukasz Majewski
@ 2021-02-03 14:17 ` Lukasz Majewski
  2021-02-03 19:32   ` Joseph Myers
  3 siblings, 1 reply; 11+ messages in thread
From: Lukasz Majewski @ 2021-02-03 14:17 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella, Florian Weimer
  Cc: Paul Eggert, Alistair Francis, Arnd Bergmann, Alistair Francis,
	GNU C Library, Carlos O'Donell, Florian Weimer,
	Zack Weinberg

[-- Attachment #1: Type: text/plain, Size: 2778 bytes --]

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

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH 2/3] support: Provide xclock_settime test helper function
  2021-01-18 16:03 ` [PATCH 2/3] support: Provide xclock_settime test helper function Lukasz Majewski
@ 2021-02-03 14:18   ` Lukasz Majewski
  0 siblings, 0 replies; 11+ messages in thread
From: Lukasz Majewski @ 2021-02-03 14:18 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella, Florian Weimer
  Cc: Paul Eggert, Alistair Francis, Arnd Bergmann, Alistair Francis,
	GNU C Library, Carlos O'Donell, Florian Weimer,
	Zack Weinberg

[-- Attachment #1: Type: text/plain, Size: 3674 bytes --]

Dear Community,

> The xclock_settime is a wrapper function on the clock_settime syscall
> to be used in the test code.
> 
> It checks if the GLIBC_TEST_ALLOW_TIME_SETTING env variable is defined
> in the environment in which test is executed. If it is not - the test
> ends as unsupported. Otherwise, the clock-settime is executed and
> return value is assessed.

Gentle ping on this patch. It will facilitate testing time adjusted on
target VMs.

> ---
>  support/Makefile         |  1 +
>  support/xclock_settime.c | 35 +++++++++++++++++++++++++++++++++++
>  support/xtime.h          |  5 +++++
>  3 files changed, 41 insertions(+)
>  create mode 100644 support/xclock_settime.c
> 
> diff --git a/support/Makefile b/support/Makefile
> index bb9889efb4..8d63fbd5da 100644
> --- a/support/Makefile
> +++ b/support/Makefile
> @@ -90,6 +90,7 @@ libsupport-routines = \
>    xchdir \
>    xchroot \
>    xclock_gettime \
> +  xclock_settime \
>    xclose \
>    xchmod \
>    xconnect \
> diff --git a/support/xclock_settime.c b/support/xclock_settime.c
> new file mode 100644
> index 0000000000..12a83b9d79
> --- /dev/null
> +++ b/support/xclock_settime.c
> @@ -0,0 +1,35 @@
> +/* clock_settime with error checking.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be
> useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <stdlib.h>
> +#include <support/check.h>
> +#include <support/xtime.h>
> +#include <support/xthread.h>
> +
> +void
> +xclock_settime (clockid_t clockid,
> +                const struct timespec *ts)
> +{
> +  if (getenv (SETTIME_ENV_NAME) == NULL)
> +    FAIL_UNSUPPORTED ("clock_settime is executed only when "\
> +                      SETTIME_ENV_NAME" is set\n");
> +
> +  const int ret = clock_settime (clockid, ts);
> +  if (ret < 0)
> +    FAIL_EXIT1 ("clock_settime (%d): %m", clockid);
> +}
> diff --git a/support/xtime.h b/support/xtime.h
> index 2482837dee..b4ac3b59e2 100644
> --- a/support/xtime.h
> +++ b/support/xtime.h
> @@ -23,10 +23,15 @@
>  
>  __BEGIN_DECLS
>  
> +/* Name of the env variable, which indicates if it is possible to
> +   adjust time on target machine.  */
> +#define SETTIME_ENV_NAME "GLIBC_TEST_ALLOW_TIME_SETTING"
> +
>  /* The following functions call the corresponding libc functions and
>     terminate the process on error.  */
>  
>  void xclock_gettime (clockid_t clock, struct timespec *ts);
> +void xclock_settime (clockid_t clock, const struct timespec *ts);
>  
>  /* This helper can often simplify tests by avoiding an explicit
>     variable declaration or allowing that declaration to be const. */




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

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH 3/3] tst: Add test for clock_settime
  2021-01-18 16:03 ` [PATCH 3/3] tst: Add test for clock_settime Lukasz Majewski
@ 2021-02-03 14:19   ` Lukasz Majewski
  0 siblings, 0 replies; 11+ messages in thread
From: Lukasz Majewski @ 2021-02-03 14:19 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella, Florian Weimer
  Cc: Paul Eggert, Alistair Francis, Arnd Bergmann, Alistair Francis,
	GNU C Library, Carlos O'Donell, Florian Weimer,
	Zack Weinberg

[-- Attachment #1: Type: text/plain, Size: 3255 bytes --]

Dear Community,

> This code brings test to check if time on target machine is properly
> set. To avoid any issues with altering the time:
> 
> - The time, which was set before the test was executed is restored.
> 
> - The time is altered only when cross-test-ssh.sh is executed with
>   --allow-time-setting flag

Gentle ping on this patch.

> ---
>  time/Makefile            |  2 +-
>  time/tst-clock_settime.c | 45
> ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46
> insertions(+), 1 deletion(-) create mode 100644
> time/tst-clock_settime.c
> 
> diff --git a/time/Makefile b/time/Makefile
> index e6f448d938..e469cacb4a 100644
> --- a/time/Makefile
> +++ b/time/Makefile
> @@ -50,7 +50,7 @@ tests	:= test_time clocktest tst-posixtz
> tst-strptime tst_wcsftime \ tst-tzname tst-y2039 bug-mktime4
> tst-strftime2 tst-strftime3 \ tst-clock tst-clock2
> tst-clock_nanosleep tst-cpuclock1 \ tst-adjtime tst-clock-y2038
> tst-clock2-y2038 \
> -	   tst-cpuclock1-y2038 tst-clock_nanosleep-y2038
> +	   tst-cpuclock1-y2038 tst-clock_nanosleep-y2038
> tst-clock_settime 
>  include ../Rules
>  
> diff --git a/time/tst-clock_settime.c b/time/tst-clock_settime.c
> new file mode 100644
> index 0000000000..2abf6b8eb8
> --- /dev/null
> +++ b/time/tst-clock_settime.c
> @@ -0,0 +1,45 @@
> +/* Test for clock_settime (in VM)
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be
> useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <time.h>
> +#include <support/check.h>
> +#include <support/xtime.h>
> +
> +#define TIMESPEC_SEC_Y2038_OV 0x7FFFFFFF
> +#define FUTURE_TIME (TIMESPEC_SEC_Y2038_OV - 10)
> +
> +static int
> +do_test (void)
> +{
> +  const struct timespec tv = { FUTURE_TIME, 0};
> +  struct timespec tv_future, tv_now;
> +
> +  tv_now = xclock_now(CLOCK_REALTIME);
> +  xclock_settime(CLOCK_REALTIME, &tv);
> +  tv_future = xclock_now(CLOCK_REALTIME);
> +
> +  /* Restore old time value on target machine.  */
> +  xclock_settime(CLOCK_REALTIME, (const struct timespec*) &tv_now);
> +
> +  if (tv_future.tv_sec < tv.tv_sec)
> +    FAIL_EXIT1 ("clock_settime set wrong time!\n");
> +
> +  return 0;
> +}
> +
> +#include <support/test-driver.c>




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

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered
  2021-02-03 14:17 ` Lukasz Majewski
@ 2021-02-03 19:32   ` Joseph Myers
  2021-02-04 13:16     ` Lukasz Majewski
  0 siblings, 1 reply; 11+ messages in thread
From: Joseph Myers @ 2021-02-03 19:32 UTC (permalink / raw)
  To: Lukasz Majewski
  Cc: Adhemerval Zanella, Florian Weimer, GNU C Library,
	Florian Weimer, Alistair Francis

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.

-- 
Joseph S. Myers
joseph@codesourcery.com

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

* Re: [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered
  2021-02-03 19:32   ` Joseph Myers
@ 2021-02-04 13:16     ` Lukasz Majewski
  2021-02-04 20:40       ` Joseph Myers
  0 siblings, 1 reply; 11+ messages in thread
From: Lukasz Majewski @ 2021-02-04 13:16 UTC (permalink / raw)
  To: Joseph Myers
  Cc: Adhemerval Zanella, Florian Weimer, GNU C Library,
	Florian Weimer, Alistair Francis

[-- Attachment #1: Type: text/plain, Size: 1104 bytes --]

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

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered
  2021-02-04 13:16     ` Lukasz Majewski
@ 2021-02-04 20:40       ` Joseph Myers
  2021-02-04 23:02         ` Lukasz Majewski
  0 siblings, 1 reply; 11+ messages in thread
From: Joseph Myers @ 2021-02-04 20:40 UTC (permalink / raw)
  To: Lukasz Majewski
  Cc: Florian Weimer, Alistair Francis, Florian Weimer, GNU C Library

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.)

-- 
Joseph S. Myers
joseph@codesourcery.com

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

* Re: [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered
  2021-02-04 20:40       ` Joseph Myers
@ 2021-02-04 23:02         ` Lukasz Majewski
  0 siblings, 0 replies; 11+ messages in thread
From: Lukasz Majewski @ 2021-02-04 23:02 UTC (permalink / raw)
  To: Joseph Myers
  Cc: Florian Weimer, Alistair Francis, Florian Weimer, GNU C Library

[-- Attachment #1: Type: text/plain, Size: 940 bytes --]

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

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

end of thread, other threads:[~2021-02-04 23:02 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-18 16:03 [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered Lukasz Majewski
2021-01-18 16:03 ` [PATCH 2/3] support: Provide xclock_settime test helper function Lukasz Majewski
2021-02-03 14:18   ` Lukasz Majewski
2021-01-18 16:03 ` [PATCH 3/3] tst: Add test for clock_settime Lukasz Majewski
2021-02-03 14:19   ` Lukasz Majewski
2021-01-25  9:16 ` [PATCH 1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered Lukasz Majewski
2021-02-03 14:17 ` Lukasz Majewski
2021-02-03 19:32   ` Joseph Myers
2021-02-04 13:16     ` Lukasz Majewski
2021-02-04 20:40       ` Joseph Myers
2021-02-04 23:02         ` Lukasz Majewski

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).