Message ID | 20190318134438.11649-1-mac@mcrowe.com |
---|---|
State | New |
Headers | show |
Series | nptl: Convert tst-sem5 & tst-sem13 to use libsupport | expand |
On 18/03/2019 10:44, Mike Crowe wrote: > From: Mike Crowe <mcrowe@brightsign.biz> > > * nptl/tst-sem5.c: Remove unused headers. Add <support/check.h>. (do_test) > Use libsupport test macros rather than hand-coded conditionals and error > messages. Ensure that sem_init returns zero rather than not -1. Use > <support/test-driver.c> rather than test-skeleton.c. > > * nptl/tst-sem13.c: Add <support/check.h>. (do_test) Use libsupport test > macros rather than hand-coded conditionals and error messages. Use > <support/test-driver.c> rather than test-skeleton.c. LGTM, thanks. > --- > ChangeLog | 12 ++++++++++++ > nptl/tst-sem13.c | 47 ++++++++++------------------------------------- > nptl/tst-sem5.c | 52 ++++++++++------------------------------------------ > 3 files changed, 32 insertions(+), 79 deletions(-) > > Adhemerval Zanella suggested[1] that I should migrate these tests to > use libsupport before adding the sem_clockwait function. This is my > attempt to do so. > > [1] https://sourceware.org/ml/libc-alpha/2019-03/msg00076.html > > diff --git a/ChangeLog b/ChangeLog > index b51532c803..1f882de288 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,15 @@ > +2019-03-17 Mike Crowe <mac@mcrowe.com> > + > + * nptl/tst-sem5.c: Remove unused headers. Add <support/check.h>. > + (do_test) Use libsupport test macros rather than hand-coded > + conditionals and error messages. Ensure that sem_init returns zero > + rather than not -1. Use <support/test-driver.c> rather than > + test-skeleton.c. > + > + * nptl/tst-sem13.c: Add <support/check.h>. (do_test) Use libsupport > + test macros rather than hand-coded conditionals and error messages. > + Use <support/test-driver.c> rather than test-skeleton.c. > + > 2019-03-08 Mike FABIAN <mfabian@redhat.com> > > [BZ #24307] > diff --git a/nptl/tst-sem13.c b/nptl/tst-sem13.c > index 1560e91443..28d37ed0cb 100644 > --- a/nptl/tst-sem13.c > +++ b/nptl/tst-sem13.c > @@ -4,6 +4,7 @@ > #include <unistd.h> > #include <pthread.h> > #include <internaltypes.h> > +#include <support/check.h> > > > static int > @@ -15,61 +16,33 @@ do_test (void) > struct new_sem ns; > } u; > > - if (sem_init (&u.s, 0, 0) != 0) > - { > - puts ("sem_init failed"); > - return 1; > - } > + TEST_COMPARE (sem_init (&u.s, 0, 0), 0); > > struct timespec ts = { 0, 1000000001 }; /* Invalid. */ > errno = 0; > - if (sem_timedwait (&u.s, &ts) >= 0) > - { > - puts ("sem_timedwait did not fail"); > - return 1; > - } > - if (errno != EINVAL) > - { > - perror ("sem_timedwait did not fail with EINVAL"); > - return 1; > - } > + TEST_VERIFY_EXIT (sem_timedwait (&u.s, &ts) < 0); > + TEST_COMPARE (errno, EINVAL); > + > #if __HAVE_64B_ATOMICS > unsigned int nwaiters = (u.ns.data >> SEM_NWAITERS_SHIFT); > #else > unsigned int nwaiters = u.ns.nwaiters; > #endif > - if (nwaiters != 0) > - { > - printf ("sem_timedwait modified nwaiters: %d\n", nwaiters); > - return 1; > - } > + TEST_COMPARE (nwaiters, 0); > > ts.tv_sec = /* Invalid. */ -2; > ts.tv_nsec = 0; > errno = 0; > - if (sem_timedwait (&u.s, &ts) >= 0) > - { > - puts ("2nd sem_timedwait did not fail"); > - return 1; > - } > - if (errno != ETIMEDOUT) > - { > - perror ("2nd sem_timedwait did not fail with ETIMEDOUT"); > - return 1; > - } > + TEST_VERIFY_EXIT (sem_timedwait (&u.s, &ts) < 0); > + TEST_COMPARE (errno, ETIMEDOUT); > #if __HAVE_64B_ATOMICS > nwaiters = (u.ns.data >> SEM_NWAITERS_SHIFT); > #else > nwaiters = u.ns.nwaiters; > #endif > - if (nwaiters != 0) > - { > - printf ("2nd sem_timedwait modified nwaiters: %d\n", nwaiters); > - return 1; > - } > + TEST_COMPARE (nwaiters, 0); > > return 0; > } > > -#define TEST_FUNCTION do_test () > -#include "../test-skeleton.c" > +#include <support/test-driver.c> > diff --git a/nptl/tst-sem5.c b/nptl/tst-sem5.c > index 2149adeb12..50ab6f932c 100644 > --- a/nptl/tst-sem5.c > +++ b/nptl/tst-sem5.c > @@ -18,10 +18,10 @@ > > #include <errno.h> > #include <semaphore.h> > -#include <stdio.h> > #include <time.h> > #include <unistd.h> > #include <sys/time.h> > +#include <support/check.h> > > > static int > @@ -31,23 +31,9 @@ do_test (void) > struct timespec ts; > struct timeval tv; > > - if (sem_init (&s, 0, 1) == -1) > - { > - puts ("sem_init failed"); > - return 1; > - } > - > - if (TEMP_FAILURE_RETRY (sem_wait (&s)) == -1) > - { > - puts ("sem_wait failed"); > - return 1; > - } > - > - if (gettimeofday (&tv, NULL) != 0) > - { > - puts ("gettimeofday failed"); > - return 1; > - } > + TEST_COMPARE (sem_init (&s, 0, 1), 0); > + TEST_COMPARE (TEMP_FAILURE_RETRY (sem_wait (&s)), 0); > + TEST_COMPARE (gettimeofday (&tv, NULL), 0); > > TIMEVAL_TO_TIMESPEC (&tv, &ts); > > @@ -60,34 +46,16 @@ do_test (void) > } > > errno = 0; > - if (TEMP_FAILURE_RETRY (sem_timedwait (&s, &ts)) != -1) > - { > - puts ("sem_timedwait succeeded"); > - return 1; > - } > - if (errno != ETIMEDOUT) > - { > - printf ("sem_timedwait return errno = %d instead of ETIMEDOUT\n", > - errno); > - return 1; > - } > + TEST_COMPARE (TEMP_FAILURE_RETRY (sem_timedwait (&s, &ts)), -1); > + TEST_COMPARE (errno, ETIMEDOUT); > > struct timespec ts2; > - if (clock_gettime (CLOCK_REALTIME, &ts2) != 0) > - { > - puts ("clock_gettime failed"); > - return 1; > - } > + TEST_COMPARE (clock_gettime (CLOCK_REALTIME, &ts2), 0); > > - if (ts2.tv_sec < ts.tv_sec > - || (ts2.tv_sec == ts.tv_sec && ts2.tv_nsec < ts.tv_nsec)) > - { > - puts ("timeout too short"); > - return 1; > - } > + TEST_VERIFY (ts2.tv_sec > ts.tv_sec > + || (ts2.tv_sec == ts.tv_sec && ts2.tv_nsec > ts.tv_nsec)); > > return 0; > } > > -#define TEST_FUNCTION do_test () > -#include "../test-skeleton.c" > +#include <support/test-driver.c> >
diff --git a/ChangeLog b/ChangeLog index b51532c803..1f882de288 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2019-03-17 Mike Crowe <mac@mcrowe.com> + + * nptl/tst-sem5.c: Remove unused headers. Add <support/check.h>. + (do_test) Use libsupport test macros rather than hand-coded + conditionals and error messages. Ensure that sem_init returns zero + rather than not -1. Use <support/test-driver.c> rather than + test-skeleton.c. + + * nptl/tst-sem13.c: Add <support/check.h>. (do_test) Use libsupport + test macros rather than hand-coded conditionals and error messages. + Use <support/test-driver.c> rather than test-skeleton.c. + 2019-03-08 Mike FABIAN <mfabian@redhat.com> [BZ #24307] diff --git a/nptl/tst-sem13.c b/nptl/tst-sem13.c index 1560e91443..28d37ed0cb 100644 --- a/nptl/tst-sem13.c +++ b/nptl/tst-sem13.c @@ -4,6 +4,7 @@ #include <unistd.h> #include <pthread.h> #include <internaltypes.h> +#include <support/check.h> static int @@ -15,61 +16,33 @@ do_test (void) struct new_sem ns; } u; - if (sem_init (&u.s, 0, 0) != 0) - { - puts ("sem_init failed"); - return 1; - } + TEST_COMPARE (sem_init (&u.s, 0, 0), 0); struct timespec ts = { 0, 1000000001 }; /* Invalid. */ errno = 0; - if (sem_timedwait (&u.s, &ts) >= 0) - { - puts ("sem_timedwait did not fail"); - return 1; - } - if (errno != EINVAL) - { - perror ("sem_timedwait did not fail with EINVAL"); - return 1; - } + TEST_VERIFY_EXIT (sem_timedwait (&u.s, &ts) < 0); + TEST_COMPARE (errno, EINVAL); + #if __HAVE_64B_ATOMICS unsigned int nwaiters = (u.ns.data >> SEM_NWAITERS_SHIFT); #else unsigned int nwaiters = u.ns.nwaiters; #endif - if (nwaiters != 0) - { - printf ("sem_timedwait modified nwaiters: %d\n", nwaiters); - return 1; - } + TEST_COMPARE (nwaiters, 0); ts.tv_sec = /* Invalid. */ -2; ts.tv_nsec = 0; errno = 0; - if (sem_timedwait (&u.s, &ts) >= 0) - { - puts ("2nd sem_timedwait did not fail"); - return 1; - } - if (errno != ETIMEDOUT) - { - perror ("2nd sem_timedwait did not fail with ETIMEDOUT"); - return 1; - } + TEST_VERIFY_EXIT (sem_timedwait (&u.s, &ts) < 0); + TEST_COMPARE (errno, ETIMEDOUT); #if __HAVE_64B_ATOMICS nwaiters = (u.ns.data >> SEM_NWAITERS_SHIFT); #else nwaiters = u.ns.nwaiters; #endif - if (nwaiters != 0) - { - printf ("2nd sem_timedwait modified nwaiters: %d\n", nwaiters); - return 1; - } + TEST_COMPARE (nwaiters, 0); return 0; } -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" +#include <support/test-driver.c> diff --git a/nptl/tst-sem5.c b/nptl/tst-sem5.c index 2149adeb12..50ab6f932c 100644 --- a/nptl/tst-sem5.c +++ b/nptl/tst-sem5.c @@ -18,10 +18,10 @@ #include <errno.h> #include <semaphore.h> -#include <stdio.h> #include <time.h> #include <unistd.h> #include <sys/time.h> +#include <support/check.h> static int @@ -31,23 +31,9 @@ do_test (void) struct timespec ts; struct timeval tv; - if (sem_init (&s, 0, 1) == -1) - { - puts ("sem_init failed"); - return 1; - } - - if (TEMP_FAILURE_RETRY (sem_wait (&s)) == -1) - { - puts ("sem_wait failed"); - return 1; - } - - if (gettimeofday (&tv, NULL) != 0) - { - puts ("gettimeofday failed"); - return 1; - } + TEST_COMPARE (sem_init (&s, 0, 1), 0); + TEST_COMPARE (TEMP_FAILURE_RETRY (sem_wait (&s)), 0); + TEST_COMPARE (gettimeofday (&tv, NULL), 0); TIMEVAL_TO_TIMESPEC (&tv, &ts); @@ -60,34 +46,16 @@ do_test (void) } errno = 0; - if (TEMP_FAILURE_RETRY (sem_timedwait (&s, &ts)) != -1) - { - puts ("sem_timedwait succeeded"); - return 1; - } - if (errno != ETIMEDOUT) - { - printf ("sem_timedwait return errno = %d instead of ETIMEDOUT\n", - errno); - return 1; - } + TEST_COMPARE (TEMP_FAILURE_RETRY (sem_timedwait (&s, &ts)), -1); + TEST_COMPARE (errno, ETIMEDOUT); struct timespec ts2; - if (clock_gettime (CLOCK_REALTIME, &ts2) != 0) - { - puts ("clock_gettime failed"); - return 1; - } + TEST_COMPARE (clock_gettime (CLOCK_REALTIME, &ts2), 0); - if (ts2.tv_sec < ts.tv_sec - || (ts2.tv_sec == ts.tv_sec && ts2.tv_nsec < ts.tv_nsec)) - { - puts ("timeout too short"); - return 1; - } + TEST_VERIFY (ts2.tv_sec > ts.tv_sec + || (ts2.tv_sec == ts.tv_sec && ts2.tv_nsec > ts.tv_nsec)); return 0; } -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" +#include <support/test-driver.c>
From: Mike Crowe <mcrowe@brightsign.biz> * nptl/tst-sem5.c: Remove unused headers. Add <support/check.h>. (do_test) Use libsupport test macros rather than hand-coded conditionals and error messages. Ensure that sem_init returns zero rather than not -1. Use <support/test-driver.c> rather than test-skeleton.c. * nptl/tst-sem13.c: Add <support/check.h>. (do_test) Use libsupport test macros rather than hand-coded conditionals and error messages. Use <support/test-driver.c> rather than test-skeleton.c. --- ChangeLog | 12 ++++++++++++ nptl/tst-sem13.c | 47 ++++++++++------------------------------------- nptl/tst-sem5.c | 52 ++++++++++------------------------------------------ 3 files changed, 32 insertions(+), 79 deletions(-) Adhemerval Zanella suggested[1] that I should migrate these tests to use libsupport before adding the sem_clockwait function. This is my attempt to do so. [1] https://sourceware.org/ml/libc-alpha/2019-03/msg00076.html