From 2ccd150d28043d140fb79eb883f5ac2ec6279dc9 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 2 Jun 2015 21:41:26 +0200 Subject: sptests/sptimecounter03: New test --- testsuites/sptests/Makefile.am | 1 + testsuites/sptests/configure.ac | 1 + testsuites/sptests/sptimecounter03/Makefile.am | 19 ++++ testsuites/sptests/sptimecounter03/init.c | 110 +++++++++++++++++++++ .../sptests/sptimecounter03/sptimecounter03.doc | 11 +++ .../sptests/sptimecounter03/sptimecounter03.scn | 2 + 6 files changed, 144 insertions(+) create mode 100644 testsuites/sptests/sptimecounter03/Makefile.am create mode 100644 testsuites/sptests/sptimecounter03/init.c create mode 100644 testsuites/sptests/sptimecounter03/sptimecounter03.doc create mode 100644 testsuites/sptests/sptimecounter03/sptimecounter03.scn diff --git a/testsuites/sptests/Makefile.am b/testsuites/sptests/Makefile.am index c3fc443da0..948a8f0c45 100644 --- a/testsuites/sptests/Makefile.am +++ b/testsuites/sptests/Makefile.am @@ -40,6 +40,7 @@ endif _SUBDIRS += spintrcritical23 _SUBDIRS += sptimecounter01 _SUBDIRS += sptimecounter02 +_SUBDIRS += sptimecounter03 _SUBDIRS += spatomic01 _SUBDIRS += spintrcritical22 _SUBDIRS += spsem03 diff --git a/testsuites/sptests/configure.ac b/testsuites/sptests/configure.ac index b8287a4ea7..a16ab3e247 100644 --- a/testsuites/sptests/configure.ac +++ b/testsuites/sptests/configure.ac @@ -43,6 +43,7 @@ AC_CONFIG_FILES([Makefile spintrcritical23/Makefile sptimecounter01/Makefile sptimecounter02/Makefile +sptimecounter03/Makefile spatomic01/Makefile spglobalcon01/Makefile spintrcritical22/Makefile diff --git a/testsuites/sptests/sptimecounter03/Makefile.am b/testsuites/sptests/sptimecounter03/Makefile.am new file mode 100644 index 0000000000..28209faace --- /dev/null +++ b/testsuites/sptests/sptimecounter03/Makefile.am @@ -0,0 +1,19 @@ +rtems_tests_PROGRAMS = sptimecounter03 +sptimecounter03_SOURCES = init.c + +dist_rtems_tests_DATA = sptimecounter03.scn sptimecounter03.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(sptimecounter03_OBJECTS) +LINK_LIBS = $(sptimecounter03_LDLIBS) + +sptimecounter03$(EXEEXT): $(sptimecounter03_OBJECTS) $(sptimecounter03_DEPENDENCIES) + @rm -f sptimecounter03$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/sptests/sptimecounter03/init.c b/testsuites/sptests/sptimecounter03/init.c new file mode 100644 index 0000000000..2595c7d3d8 --- /dev/null +++ b/testsuites/sptests/sptimecounter03/init.c @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2015 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include + +#include + +#include + +#include "tmacros.h" + +const char rtems_test_name[] = "SPTIMECOUNTER 3"; + +#define CPU_COUNT 32 + +static rtems_test_parallel_context ctx;; + +static rtems_interval test_binuptime_init( + rtems_test_parallel_context *ctx, + void *arg, + size_t active_workers +) +{ + return 10 * rtems_clock_get_ticks_per_second(); +} + +static void test_binuptime_body( + rtems_test_parallel_context *ctx, + void *arg, + size_t active_workers, + size_t worker_index +) +{ + struct bintime start; + struct bintime end; + + rtems_bsd_binuptime(&start); + + do { + rtems_bsd_binuptime(&end); + rtems_test_assert( + end.sec > start.sec + || (end.sec == start.sec && end.frac >= start.frac) + ); + start = end; + } while (!rtems_test_parallel_stop_job(ctx)); +} + +static void test_binuptime_fini( + rtems_test_parallel_context *ctx, + void *arg, + size_t active_workers +) +{ + /* Nothing to do */ +} + +static const rtems_test_parallel_job jobs[] = { + { + .init = test_binuptime_init, + .body = test_binuptime_body, + .fini = test_binuptime_fini, + .cascade = false + } +}; + +static void Init(rtems_task_argument arg) +{ + TEST_BEGIN(); + + rtems_test_parallel(&ctx, NULL, &jobs[0], RTEMS_ARRAY_SIZE(jobs)); + + TEST_END(); + rtems_test_exit(0); +} + +#define CONFIGURE_MICROSECONDS_PER_TICK 1000 + +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER + +#define CONFIGURE_MAXIMUM_TASKS CPU_COUNT +#define CONFIGURE_MAXIMUM_TIMERS 1 + +#define CONFIGURE_SMP_APPLICATION + +#define CONFIGURE_SMP_MAXIMUM_PROCESSORS CPU_COUNT + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE + +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION + +#define CONFIGURE_INIT + +#include diff --git a/testsuites/sptests/sptimecounter03/sptimecounter03.doc b/testsuites/sptests/sptimecounter03/sptimecounter03.doc new file mode 100644 index 0000000000..f978e56ff2 --- /dev/null +++ b/testsuites/sptests/sptimecounter03/sptimecounter03.doc @@ -0,0 +1,11 @@ +This file describes the directives and concepts tested by this test set. + +test set name: sptimecounter03 + +directives: + + - rtems_bsd_binuptime + +concepts: + + - Ensure that the binuptime is monotonic within a certain time frame. diff --git a/testsuites/sptests/sptimecounter03/sptimecounter03.scn b/testsuites/sptests/sptimecounter03/sptimecounter03.scn new file mode 100644 index 0000000000..fb249e584a --- /dev/null +++ b/testsuites/sptests/sptimecounter03/sptimecounter03.scn @@ -0,0 +1,2 @@ +*** BEGIN OF TEST SPTIMECOUNTER 3 *** +*** END OF TEST SPTIMECOUNTER 3 *** -- cgit v1.2.3