diff mbox series

clocks/invaliddates.c: relax acceptable delta

Message ID 53a3e9975f00c50c78528994472ec7e9f8adeb90.1592475774.git.jstancek@redhat.com
State Accepted, archived
Headers show
Series clocks/invaliddates.c: relax acceptable delta | expand

Commit Message

Jan Stancek June 18, 2020, 10:24 a.m. UTC
Test allows just 5ms delta for PASS, and test randomly fails in
environments with shared resources and increased steal time.

Relax the condition and also print deltas if test fails.
Remove DEBUG ifdefs and main parameters to avoid unused variable
warning.

Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
 .../functional/timers/clocks/invaliddates.c   | 25 +++++++------------
 1 file changed, 9 insertions(+), 16 deletions(-)

Comments

Petr Vorel June 18, 2020, 8:37 p.m. UTC | #1
Hi Jan,

> Test allows just 5ms delta for PASS, and test randomly fails in
> environments with shared resources and increased steal time.
Good.

> Relax the condition and also print deltas if test fails.
> Remove DEBUG ifdefs and main parameters to avoid unused variable
> warning.
Also thanks for cleanup.

Reviewed-by: Petr Vorel <pvorel@suse.cz>

Kind regards,
Petr
Li Wang June 19, 2020, 1:31 a.m. UTC | #2
On Thu, Jun 18, 2020 at 6:24 PM Jan Stancek <jstancek@redhat.com> wrote:

> Test allows just 5ms delta for PASS, and test randomly fails in
> environments with shared resources and increased steal time.
>
> Relax the condition and also print deltas if test fails.
> Remove DEBUG ifdefs and main parameters to avoid unused variable
> warning.
>
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> ---
>  .../functional/timers/clocks/invaliddates.c   | 25 +++++++------------
>  1 file changed, 9 insertions(+), 16 deletions(-)
>
> diff --git
> a/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
> b/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
> index face334fd250..d4116b1e9bc0 100644
> ---
> a/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
> +++
> b/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
> @@ -18,8 +18,7 @@
>
>  #define NUMTESTS 5
>
> -#define ACCEPTABLESECDELTA 0
> -#define ACCEPTABLENSECDELTA 5000000
> +#define ACCEPTABLESECDELTA 2
>

It's hard to say what size of the second-delta is a proper value, but to
increase it can obviously decrease the failure probability. If there is no
better way I'd go with this patch.

Reviewed-by: Li Wang <liwang@redhat.com>



>
>  static int testtimes[NUMTESTS][2] = {
>         {INT32_MAX, 999999999}, // large number
> @@ -29,7 +28,7 @@ static int testtimes[NUMTESTS][2] = {
>         {1049623200, 999999999},        // daylight savings 2003
>  };
>
> -int main(int argc, char *argv[])
> +int main(void)
>  {
>         struct timespec tpset, tpget, tsreset;
>         int secdelta, nsecdelta;
> @@ -44,9 +43,6 @@ int main(int argc, char *argv[])
>         for (i = 0; i < NUMTESTS; i++) {
>                 tpset.tv_sec = testtimes[i][0];
>                 tpset.tv_nsec = testtimes[i][1];
> -#ifdef DEBUG
> -               printf("Test: %ds %dns\n", testtimes[i][0],
> testtimes[i][1]);
> -#endif
>                 if (clock_settime(CLOCK_REALTIME, &tpset) == 0) {
>                         if (clock_gettime(CLOCK_REALTIME, &tpget) == -1) {
>                                 printf("Error in clock_gettime()\n");
> @@ -58,16 +54,13 @@ int main(int argc, char *argv[])
>                                 nsecdelta = nsecdelta + 1000000000;
>                                 secdelta = secdelta - 1;
>                         }
> -#ifdef DEBUG
> -                       printf("Delta:  %ds %dns\n", secdelta, nsecdelta);
> -#endif
> -                       if ((secdelta > ACCEPTABLESECDELTA) || (secdelta <
> 0)) {
> -                               printf("clock does not appear to be
> set\n");
> -                               failure = 1;
> -                       }
> -                       if ((nsecdelta > ACCEPTABLENSECDELTA) ||
> -                           (nsecdelta < 0)) {
> -                               printf("clock does not appear to be
> set\n");
> +
> +                       if ((secdelta > ACCEPTABLESECDELTA)
> +                               || (secdelta < 0)) {
> +                               printf("FAIL: test(%d,%d), secdelta: %d,"
> +                                       " nsecdelta: %d\n",
> +                                       testtimes[i][0], testtimes[i][1],
> +                                       secdelta, nsecdelta);
>                                 failure = 1;
>                         }
>                 } else {
> --
> 2.18.1
>
>
Li Wang June 19, 2020, 1:54 a.m. UTC | #3
Li Wang <liwang@redhat.com> wrote:


> On Thu, Jun 18, 2020 at 6:24 PM Jan Stancek <jstancek@redhat.com> wrote:
>
>> Test allows just 5ms delta for PASS, and test randomly fails in
>> environments with shared resources and increased steal time.
>>
>> Relax the condition and also print deltas if test fails.
>> Remove DEBUG ifdefs and main parameters to avoid unused variable
>> warning.
>>
>> Signed-off-by: Jan Stancek <jstancek@redhat.com>
>> ---
>>  .../functional/timers/clocks/invaliddates.c   | 25 +++++++------------
>>  1 file changed, 9 insertions(+), 16 deletions(-)
>>
>> diff --git
>> a/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
>> b/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
>> index face334fd250..d4116b1e9bc0 100644
>> ---
>> a/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
>> +++
>> b/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
>> @@ -18,8 +18,7 @@
>>
>>  #define NUMTESTS 5...
>>
>> -#define ACCEPTABLESECDELTA 0
>> -#define ACCEPTABLENSECDELTA 5000000
>> +#define ACCEPTABLESECDELTA 2
>>
>
> It's hard to say what size of the second-delta is a proper value, but to
> increase it can obviously decrease the failure probability. If there is no
> better way I'd go with this patch.
>

But in another word, this test is just focused on invalid dates[1], so
the deviation(caused by sharing resource) in seconds(even 10 seconds) bound
is acceptable I think.

If someone insists to make thing more precise, we can make use of
function tst_is_virt() to apply this method only for virtual machines. But
anyway that's not very important:).

[1].
static int testtimes[NUMTESTS][2] = {
    {INT32_MAX, 999999999}, // large number
    {946713600, 999999999}, // Y2K - Jan 1, 2000
    {951811200, 999999999}, // Y2K - Feb 29, 2000
    {1078041600, 999999999}, // Y2K - Feb 29, 2004
    {1049623200, 999999999}, // daylight savings 2003
};
Yang Xu June 19, 2020, 2:25 a.m. UTC | #4
Hi Jan
 Acked-by.

ps: I like leaving a comment in delta, just my personal habit.

Best Regards
Yang Xu
Jan Stancek June 19, 2020, 6:37 a.m. UTC | #5
Pushed.
diff mbox series

Patch

diff --git a/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c b/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
index face334fd250..d4116b1e9bc0 100644
--- a/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
+++ b/testcases/open_posix_testsuite/functional/timers/clocks/invaliddates.c
@@ -18,8 +18,7 @@ 
 
 #define NUMTESTS 5
 
-#define ACCEPTABLESECDELTA 0
-#define ACCEPTABLENSECDELTA 5000000
+#define ACCEPTABLESECDELTA 2
 
 static int testtimes[NUMTESTS][2] = {
 	{INT32_MAX, 999999999},	// large number
@@ -29,7 +28,7 @@  static int testtimes[NUMTESTS][2] = {
 	{1049623200, 999999999},	// daylight savings 2003
 };
 
-int main(int argc, char *argv[])
+int main(void)
 {
 	struct timespec tpset, tpget, tsreset;
 	int secdelta, nsecdelta;
@@ -44,9 +43,6 @@  int main(int argc, char *argv[])
 	for (i = 0; i < NUMTESTS; i++) {
 		tpset.tv_sec = testtimes[i][0];
 		tpset.tv_nsec = testtimes[i][1];
-#ifdef DEBUG
-		printf("Test: %ds %dns\n", testtimes[i][0], testtimes[i][1]);
-#endif
 		if (clock_settime(CLOCK_REALTIME, &tpset) == 0) {
 			if (clock_gettime(CLOCK_REALTIME, &tpget) == -1) {
 				printf("Error in clock_gettime()\n");
@@ -58,16 +54,13 @@  int main(int argc, char *argv[])
 				nsecdelta = nsecdelta + 1000000000;
 				secdelta = secdelta - 1;
 			}
-#ifdef DEBUG
-			printf("Delta:  %ds %dns\n", secdelta, nsecdelta);
-#endif
-			if ((secdelta > ACCEPTABLESECDELTA) || (secdelta < 0)) {
-				printf("clock does not appear to be set\n");
-				failure = 1;
-			}
-			if ((nsecdelta > ACCEPTABLENSECDELTA) ||
-			    (nsecdelta < 0)) {
-				printf("clock does not appear to be set\n");
+
+			if ((secdelta > ACCEPTABLESECDELTA)
+				|| (secdelta < 0)) {
+				printf("FAIL: test(%d,%d), secdelta: %d,"
+					" nsecdelta: %d\n",
+					testtimes[i][0], testtimes[i][1],
+					secdelta, nsecdelta);
 				failure = 1;
 			}
 		} else {