On Wed, Apr 15, 2020 at 10:26 AM Sebastian Huber < sebastian.hu...@embedded-brains.de> wrote:
> Hello Utkarsh Rai, > > do we really need a new test program for this test case? I would prefer > add it to an existing test program or add a generic POSIX test program > using the RTEMS Test Framework. > Would it be alright to add the test cases for clock nanosleep in psxtests/psxclock? I had two test cases in mind- To check for a simple desired delay and to check that clock_nanosleep produces the required delay with CLOCK_MONOTONIC even when CLOCK_REALTIME is modified. On 14/04/2020 19:17, Utkarsh Rai wrote: > > This test checks for a simple 1 ns delay with clock_nanosleep with > > CLOCK_MONOTONIC. > > --- > > testsuites/psxtests/Makefile.am | 9 +++ > > testsuites/psxtests/configure.ac | 1 + > > .../psxtests/psxclocknanosleep01/init.c | 81 +++++++++++++++++++ > > .../psxclocknanosleep01.doc | 10 +++ > > .../psxclocknanosleep01.scn | 3 + > > 5 files changed, 104 insertions(+) > > create mode 100644 testsuites/psxtests/psxclocknanosleep01/init.c > > create mode 100644 > testsuites/psxtests/psxclocknanosleep01/psxclocknanosleep01.doc > > create mode 100644 > testsuites/psxtests/psxclocknanosleep01/psxclocknanosleep01.scn > > > > diff --git a/testsuites/psxtests/Makefile.am > b/testsuites/psxtests/Makefile.am > > index 1f9e4233ec..e3918ae7a5 100755 > > --- a/testsuites/psxtests/Makefile.am > > +++ b/testsuites/psxtests/Makefile.am > > @@ -321,6 +321,15 @@ psxclockrealtime01_CPPFLAGS = $(AM_CPPFLAGS) \ > > $(TEST_FLAGS_psxclockrealtime01) $(support_includes) > > endif > > > > +if TEST_psxclocknanosleep01 > > +psx_tests += psxclocknanosleep01 > > +psx_screens += psxclocknanosleep01/psxclocknanosleep01.scn > > +psx_docs += psxclocknanosleep01/psxclocknanosleep01.doc > > +psxclocknanosleep01_SOURCES = psxclocknanosleep01/init.c > > +psxclocknanosleep01_CPPFLAGS = $(AM_CPPFLAGS) \ > > + $(TEST_FLAGS_psxclocknanosleep01) $(support_includes) > > +endif > > + > > if TEST_psxconcurrency01 > > psx_tests += psxconcurrency01 > > psx_screens += psxconcurrency01/psxconcurrency01.scn > > diff --git a/testsuites/psxtests/configure.ac b/testsuites/psxtests/ > configure.ac > > index 139787cccb..9bfe8e2c0b 100644 > > --- a/testsuites/psxtests/configure.ac > > +++ b/testsuites/psxtests/configure.ac > > @@ -75,6 +75,7 @@ RTEMS_TEST_CHECK([psxcleanup01]) > > RTEMS_TEST_CHECK([psxcleanup02]) > > RTEMS_TEST_CHECK([psxclock]) > > RTEMS_TEST_CHECK([psxclock01]) > > +RTEMS_TEST_CHECK([psxclocknanosleep01]) > > RTEMS_TEST_CHECK([psxclockrealtime01]) > > RTEMS_TEST_CHECK([psxconcurrency01]) > > RTEMS_TEST_CHECK([psxcond01]) > > diff --git a/testsuites/psxtests/psxclocknanosleep01/init.c > b/testsuites/psxtests/psxclocknanosleep01/init.c > > new file mode 100644 > > index 0000000000..21b738627d > > --- /dev/null > > +++ b/testsuites/psxtests/psxclocknanosleep01/init.c > > @@ -0,0 +1,81 @@ > > +/* > > + * SPDX-License-Identifier: BSD-2-Clause > > + * > > + * Copyright (C) 2020 Utkarsh Rai > > + * > > + * 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. > > + */ > > + > > +#include <rtems.h> > > +#include <rtems/test.h> > > +#include <time.h> > > +#include <tmacros.h> > > + > > +/*Forward declaration to avoid compiler warning*/ > > +void clock_sleep(void); > Please use a static function instead. Most of these forward declarations > are just lazy warning fixes and bad examples. > > + > > +rtems_task Init(rtems_task_argument ignored); > > + > > +const char rtems_test_name[] = "PSXCLOCKNANOSLEEP 01"; > > + > > +void clock_sleep(void) > > +{ > > + struct timespec delay_time; > > + int status; > > + > > + delay_time.tv_sec = 0; > > + delay_time.tv_nsec = 1; > > + > > + status=clock_nanosleep( CLOCK_MONOTONIC, 0, &delay_time, (struct > timespec* )NULL ); > In C code this cast is superfluous, in C++ code using NULL is out dated. > > + rtems_test_assert( status == 0 ); > > +} > > + > > +rtems_task Init(rtems_task_argument ignored) > > +{ > > + > > + struct timespec init_time; > > + struct timespec end_time; > > + int status; > > + > > + TEST_BEGIN(); > > + > > + status = clock_gettime( CLOCK_MONOTONIC, &init_time ); > > + rtems_test_assert( status == 0 ); > > + > > + clock_sleep(); > > + > > + status = clock_gettime( CLOCK_MONOTONIC, &end_time ); > > + rtems_test_assert( status == 0 ); > > + > > + rtems_test_assert( (end_time.tv_sec-init_time.tv_sec) == 0 ); > > Is end_time.tv_sec - init_time.tv_sec == 0 under all circumstances? > My idea was to check for a 1ns delay with a reasonable amount of overhead, hence I checked for end_time.tv_sec - init_time.tv_sec == 0. > The test case code should be separated from the test suite boilerplate > code. > > > + rtems_test_assert( (end_time.tv_nsec-init_time.tv_nsec) >=1 ); > We really should think about using a C code formatter. I think that I > waste my time telling someone to put spaces between operators. > Sorry, I missed this one, will not happen again.
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel