On Fri, Apr 17, 2020 at 8:31 AM Eshan dhawan <eshandhawa...@gmail.com> wrote: > > --- > testsuites/psxtests/Makefile.am | 10 ++ > testsuites/psxtests/configure.ac | 1 + > testsuites/psxtests/psxgetcpuclockid01/init.c | 149 ++++++++++++++++++ > .../psxgetcpuclockid01/psxgetcpuclockid01.doc | 23 +++ > .../psxgetcpuclockid01/psxgetcpuclockid01.scn | 4 + > 5 files changed, 187 insertions(+) > create mode 100644 testsuites/psxtests/psxgetcpuclockid01/init.c > create mode 100644 > testsuites/psxtests/psxgetcpuclockid01/psxgetcpuclockid01.doc > create mode 100644 > testsuites/psxtests/psxgetcpuclockid01/psxgetcpuclockid01.scn > > diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am > index 1f9e4233ec..ffadff16e7 100755 > --- a/testsuites/psxtests/Makefile.am > +++ b/testsuites/psxtests/Makefile.am > @@ -462,6 +462,16 @@ psxgetattrnp01_CPPFLAGS = $(AM_CPPFLAGS) > $(TEST_FLAGS_psxgetattrnp01) \ > $(support_includes) -I$(top_srcdir)/include > endif > > +if TEST_psxgetcpuclockid01 > +psx_tests += psxgetcpuclockid01 > +psx_screens += psxgetcpuclockid01/psxgetcpuclockid01.scn > +psx_docs += psxgetcpuclockid01/psxgetcpuclockid01.doc > +psxgetcpuclockid01_SOURCES = psxgetcpuclockid01/init.c > +psxgetcpuclockid01_CPPFLAGS = $(AM_CPPFLAGS) > $(TEST_FLAGS_psxgetcpuclockid01) \ > + $(support_includes) > +endif > + > + extra blank
> if TEST_psxgetrusage01 > psx_tests += psxgetrusage01 > psx_screens += psxgetrusage01/psxgetrusage01.scn > diff --git a/testsuites/psxtests/configure.ac > b/testsuites/psxtests/configure.ac > index 139787cccb..c509086abc 100644 > --- a/testsuites/psxtests/configure.ac > +++ b/testsuites/psxtests/configure.ac > @@ -91,6 +91,7 @@ RTEMS_TEST_CHECK([psxfile01]) > RTEMS_TEST_CHECK([psxfile02]) > RTEMS_TEST_CHECK([psxfilelock01]) > RTEMS_TEST_CHECK([psxgetattrnp01]) > +RTEMS_TEST_CHECK([psxgetcpuclockid01]) > RTEMS_TEST_CHECK([psxgetrusage01]) > RTEMS_TEST_CHECK([psxglobalcon01]) > RTEMS_TEST_CHECK([psxglobalcon02]) > diff --git a/testsuites/psxtests/psxgetcpuclockid01/init.c > b/testsuites/psxtests/psxgetcpuclockid01/init.c > new file mode 100644 > index 0000000000..a2a6476d96 > --- /dev/null > +++ b/testsuites/psxtests/psxgetcpuclockid01/init.c > @@ -0,0 +1,149 @@ > +/* > + * @file > + * @brief Test suite for getcpuclockid methods > + */ > + > +/* > + * SPDX-License-Identifier: BSD-2-Clause > + * > + * Copyright (C) 2020 Eshan Dhawan, Vaibhav Gupta > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS > IS" > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > + * POSSIBILITY OF SUCH DAMAGE. > + */ > + > + extra blank > +#ifdef HAVE_CONFIG_H > +#include "config.h" > +#endif > + > +#include <errno.h> > +#include <pthread.h> > +#include <stdint.h> > +#include <stdio.h> > +#include <rtems/test.h> > +#include <time.h> > +#include <unistd.h> > + > +#include "tmacros.h" > +#include "test_support.h" > + > +const char rtems_test_name[] = "PSXGETCPUCLOCKID 1"; > + > +/* Forward declaration to avoid warnings */ > +void *POSIX_Init (void * argument); > +void *test_pthread(void *); > +/*structure timespec */ > + > +/* test_pthread function begins */ > +void *test_pthread(void *arg) The fn name should reflect the job it does. This isn't testing pthread. test_pthread_getcpuclockid()? > +{ > + int r; > + clockid_t cid; > + struct timespec start_cpu, start_wall, finish; > + long time_passed_wall, time_passed_cpu ; > + > + r = pthread_getcpuclockid( pthread_self(), &cid ); > + if ( r ) { > + printf( "pthread_getcpuclockid : %d", r ); > + } > + rtems_test_assert( r == 0 ); > + > + r = clock_gettime( cid, &start_cpu ); > + if ( r ) { > + printf( "clock_gettime : %d \n", r ); Maybe use %s and strerror(r)? There are other examples in the psxtests of this. > + if ( r == EINVAL || r == ESRCH ) { > + printf( "the clockid returned is invalid" ); > + } I don't think this is necessary especially if you print the strerror() version > + } > + rtems_test_assert( r == 0 ); > + > + r = clock_gettime( CLOCK_REALTIME, &start_wall ); > + if ( r ) { > + printf( "clock_gettime : %d \n", r ); > + if ( r == EINVAL || r == ESRCH ) { > + printf( "the clockid returned is invalid" ); > + } ditto > + } > + rtems_test_assert( r == 0 ); > + while (1) { > + clock_gettime( CLOCK_REALTIME, &finish ); > + time_passed_wall = finish.tv_nsec - start_wall.tv_nsec ; > + if(time_passed >= 500000000){ > + break; Why break a while(1) loop on a condition? What is this testing? We would like tests to finish quickly whenever possible. How long would this test expect to take, and is that necessary? > + } > + } > + printf( "wall_time = %li\n", time_passed_wall ); > + clock_gettime( cid, &finish ); > + time_passed_cpu = finish.tv_nsec - start_cpu.tv_nsec ; > + printf( "CPU_time = %li\n", time_passed ); > + pthread_exit(0); > + return NULL; dead code and not strictly correct. > +} > + > +/* init test function begins */ > +void *POSIX_Init (void * argument) > +{ > + TEST_BEGIN(); > + > + int r; > + clockid_t cid; > + pthread_t thread_id; > + > + r= pthread_create( &thread_id, NULL, test_pthread, NULL ); Why using another pthread? > + if( r ) > + { > + printf( "pthread_create : %d", r ); > + } > + rtems_test_assert( r == 0 ); > + /* > + r = pthread_join( thread_id, NULL ); > + if( r ) > + { > + printf( "pthread_join : %d", r ); > + } > + rtems_test_assert( r == 0 ); > + > + r = pthread_getcpuclockid( thread_id, &cid ); > + if( r != ESRCH ) > + { > + printf( "pthread_getcpuclockid : %d", r ); > + } > + rtems_test_assert( r == ESRCH ); > +*/ > + TEST_END(); > + rtems_test_exit(0); > +} > + > +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER > +#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER > + > +#define CONFIGURE_MAXIMUM_POSIX_THREADS 2 > +#define CONFIGURE_MAXIMUM_TASKS 1 > + > +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION > + > +#define CONFIGURE_POSIX_INIT_THREAD_TABLE > + > +#define CONFIGURE_INIT > + > +#include <rtems/confdefs.h> > + > diff --git a/testsuites/psxtests/psxgetcpuclockid01/psxgetcpuclockid01.doc > b/testsuites/psxtests/psxgetcpuclockid01/psxgetcpuclockid01.doc > new file mode 100644 > index 0000000000..ef148182d5 > --- /dev/null > +++ b/testsuites/psxtests/psxgetcpuclockid01/psxgetcpuclockid01.doc > @@ -0,0 +1,23 @@ > +# COPYRIGHT (c) 2020 > +# On-Line Applications Research Corporation (OAR). > +# > +# SPDX-License-Identifier: BSD-2-Clause > +# > + > +This file describes the directives and concepts tested by this test set. > + > +test set name: psxgetcpuclockid 1 > + > +Directives: > + Pthread_getcpuclockid() > + > +Concepts: > + > ++ This test exercises the getcpuclockid methods. > + > ++ For pthread_getcpuclockid it created a pthread using pthread_create and > + then finds the clockid_t of that thread then used gettime() add a pause of > .5 seconds > + and then ends the thread. > + After the thread is ended it again tried to find the clockid_t of the > thread to > + check for ESRCH exception. > + > diff --git a/testsuites/psxtests/psxgetcpuclockid01/psxgetcpuclockid01.scn > b/testsuites/psxtests/psxgetcpuclockid01/psxgetcpuclockid01.scn > new file mode 100644 > index 0000000000..937a908fd5 > --- /dev/null > +++ b/testsuites/psxtests/psxgetcpuclockid01/psxgetcpuclockid01.scn > @@ -0,0 +1,4 @@ > +*** BEGIN OF TEST PSXGETCLOCKID 1 *** > + > +*** END OF TEST PSXGETCPUCLOCKID 1 *** > + > -- > 2.17.1 > _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel