[PATCH 1/3] spconfig02: New test program

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Nov 6 12:37:11 UTC 2018


---
 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
+ *  <rtems at 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



More information about the devel mailing list