--- testsuites/sptests/Makefile.am | 9 ++ testsuites/sptests/configure.ac | 1 + testsuites/sptests/spconfig02/init.c | 227 +++++++++++++++++++++++++++ testsuites/sptests/spconfig02/spconfig02.doc | 23 +++ testsuites/sptests/spconfig02/spconfig02.scn | 7 + 5 files changed, 267 insertions(+) create mode 100644 testsuites/sptests/spconfig02/init.c create mode 100644 testsuites/sptests/spconfig02/spconfig02.doc create mode 100644 testsuites/sptests/spconfig02/spconfig02.scn
diff --git a/testsuites/sptests/Makefile.am b/testsuites/sptests/Makefile.am index 7a182430b0..80680dfe83 100644 --- a/testsuites/sptests/Makefile.am +++ b/testsuites/sptests/Makefile.am @@ -717,6 +717,15 @@ spconfig01_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spconfig01) \ $(support_includes) endif +if TEST_spconfig02 +sp_tests += spconfig02 +sp_screens += spconfig02/spconfig02.scn +sp_docs += spconfig02/spconfig02.doc +spconfig02_SOURCES = spconfig02/init.c +spconfig02_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spconfig02) \ + $(support_includes) +endif + if TEST_spconsole01 sp_tests += spconsole01 sp_screens += spconsole01/spconsole01.scn diff --git a/testsuites/sptests/configure.ac b/testsuites/sptests/configure.ac index 36b3a17ecd..e725b39067 100644 --- a/testsuites/sptests/configure.ac +++ b/testsuites/sptests/configure.ac @@ -118,6 +118,7 @@ RTEMS_TEST_CHECK([spchain]) RTEMS_TEST_CHECK([spclock_err01]) RTEMS_TEST_CHECK([spclock_err02]) RTEMS_TEST_CHECK([spconfig01]) +RTEMS_TEST_CHECK([spconfig02]) RTEMS_TEST_CHECK([spconsole01]) RTEMS_TEST_CHECK([spcontext01]) RTEMS_TEST_CHECK([spcoverage]) diff --git a/testsuites/sptests/spconfig02/init.c b/testsuites/sptests/spconfig02/init.c new file mode 100644 index 0000000000..1bde941c74 --- /dev/null +++ b/testsuites/sptests/spconfig02/init.c @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2018 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rt...@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#define _GNU_SOURCE + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <rtems.h> + +#include <tmacros.h> + +const char rtems_test_name[] = "SPCONFIG 2"; + +static const rtems_name name = rtems_build_name('N', 'A', 'M', 'E'); + +static void test_barrier(void) +{ + rtems_status_code sc; + rtems_id id; + + sc = rtems_barrier_create(name, RTEMS_DEFAULT_ATTRIBUTES, 1, &id); + rtems_test_assert(sc == RTEMS_TOO_MANY); +} + +static void test_message_queue(void) +{ + rtems_status_code sc; + rtems_id id; + + sc = rtems_message_queue_create( + name, + 1, + 1, + RTEMS_DEFAULT_ATTRIBUTES, + &id + ); + rtems_test_assert(sc == RTEMS_TOO_MANY); +} + +static void test_partition(void) +{ + rtems_status_code sc; + rtems_id id; + long buf[32]; + + sc = rtems_partition_create( + name, + buf, + sizeof(buf), + sizeof(buf), + RTEMS_DEFAULT_ATTRIBUTES, + &id + ); + rtems_test_assert(sc == RTEMS_TOO_MANY); +} + +static void test_rate_monotonic(void) +{ + rtems_status_code sc; + rtems_id id; + + sc = rtems_rate_monotonic_create(name, &id); + rtems_test_assert(sc == RTEMS_TOO_MANY); +} + +static void test_region(void) +{ + rtems_status_code sc; + rtems_id id; + long buf[32]; + + sc = rtems_region_create( + name, + buf, + sizeof(buf), + 1, + RTEMS_DEFAULT_ATTRIBUTES, + &id + ); + rtems_test_assert(sc == RTEMS_TOO_MANY); +} + +static void test_semaphore(void) +{ + rtems_status_code sc; + rtems_id id; + + sc = rtems_semaphore_create( + name, + 0, + RTEMS_DEFAULT_ATTRIBUTES, + 0, + &id + ); + rtems_test_assert(sc == RTEMS_TOO_MANY); +} + +static void test_task(void) +{ + rtems_status_code sc; + rtems_id id; + + sc = rtems_task_create( + name, + 1, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &id + ); + rtems_test_assert(sc == RTEMS_TOO_MANY); +} + +static void test_timer(void) +{ + rtems_status_code sc; + rtems_id id; + + sc = rtems_timer_create(name, &id); + rtems_test_assert(sc == RTEMS_TOO_MANY); +} + +static void test_user_extensions(void) +{ + rtems_status_code sc; + rtems_id id; + rtems_extensions_table table; + + memset(&table, 0, sizeof(table)); + sc = rtems_extension_create(name, &table, &id); + rtems_test_assert(sc == RTEMS_TOO_MANY); +} + +static void test_id_to_name(rtems_id api, rtems_id cls, rtems_id idx, bool *found) +{ + rtems_status_code sc; + rtems_id id; + rtems_name name_of_id; + + id = rtems_build_id(api, cls, 1, idx); + sc = rtems_object_get_classic_name(id, &name_of_id); + + if (sc == RTEMS_SUCCESSFUL) { + if (name_of_id == rtems_build_name('U', 'I', '1', ' ')) { + rtems_test_assert(id == rtems_task_self()); + rtems_test_assert(!found[0]); + found[0] = true; + } else { + rtems_test_assert(name_of_id == rtems_build_name('I', 'D', 'L', 'E')); + rtems_test_assert(!found[1]); + found[1] = true; + } + } else { + rtems_test_assert(sc == RTEMS_INVALID_ID); + } +} + +static void test_some_id_to_name(void) +{ + rtems_id api; + bool found[2]; + + found[0] = false; + found[1] = false; + + for (api = 0; api < 8; ++api) { + rtems_id cls; + + for (cls = 0; cls < 32; ++cls) { + test_id_to_name(api, cls, 0, found); + test_id_to_name(api, cls, 1, found); + test_id_to_name(api, cls, 2, found); + test_id_to_name(api, cls, 65535, found); + test_id_to_name(api, cls, 65536, found); + } + } + + rtems_test_assert(found[0]); + rtems_test_assert(found[1]); +} + +static void Init(rtems_task_argument arg) +{ + rtems_print_printer_printk(&rtems_test_printer); + TEST_BEGIN(); + test_barrier(); + test_message_queue(); + test_partition(); + test_rate_monotonic(); + test_region(); + test_semaphore(); + test_task(); + test_timer(); + test_user_extensions(); + test_some_id_to_name(); + TEST_END(); + rtems_test_exit(0); +} + +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER + +#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM + +#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY + +#define CONFIGURE_MAXIMUM_TASKS 1 + +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> diff --git a/testsuites/sptests/spconfig02/spconfig02.doc b/testsuites/sptests/spconfig02/spconfig02.doc new file mode 100644 index 0000000000..0bad04f758 --- /dev/null +++ b/testsuites/sptests/spconfig02/spconfig02.doc @@ -0,0 +1,23 @@ +This file describes the directives and concepts tested by this test set. + +test set name: spconfig02 + +directives: + + - rtems_barrier_create() + - rtems_extension_create() + - rtems_message_queue_create() + - rtems_object_get_classic_name() + - rtems_partition_create() + - rtems_rate_monotonic_create() + - rtems_region_create() + - rtems_semaphore_create() + - rtems_task_create() + - rtems_timer_create() + +concepts: + + - Ensure that the creation of Classic API objects failes with the expected + status code in the default configuration. + - Ensure that only the expected objects are present in the default + configuration via rtems_object_get_classic_name(). diff --git a/testsuites/sptests/spconfig02/spconfig02.scn b/testsuites/sptests/spconfig02/spconfig02.scn new file mode 100644 index 0000000000..39628a8de2 --- /dev/null +++ b/testsuites/sptests/spconfig02/spconfig02.scn @@ -0,0 +1,7 @@ +*** BEGIN OF TEST SPCONFIG 2 *** +*** TEST VERSION: 5.0.0.5f0d0d2d272bebb13f63efe70cb186bbf7715a89 +*** TEST STATE: EXPECTED-PASS +*** TEST BUILD: +*** TEST TOOLS: 7.3.0 20180125 (RTEMS 5, RSB 279e47eab88299b0123be5a1e4446fe4a9329a54, Newlib 08eab6396f678cf5e5968acaed0bae9fd129983b) + +*** END OF TEST SPCONFIG 2 *** -- 2.16.4 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel