On 29/08/2019 20:11, Lou Woods wrote:
From: Lou Woods <lou.wo...@oarcorp.com>
This test exercises the unblocking order of a POSIX
message queue
-Added psxmsgq05 test to the make structure.
-Added tests, doc, and scn output.
updates #3791.
---
testsuites/psxtests/Makefile.am | 10 +
testsuites/psxtests/configure.ac | 1 +
testsuites/psxtests/psxmsgq05/init.c | 440 ++++++++++++++++++++++++++++
testsuites/psxtests/psxmsgq05/psxmsgq05.doc | 42 +++
testsuites/psxtests/psxmsgq05/psxmsgq05.scn | 4 +
testsuites/psxtests/psxmsgq05/system.h | 56 ++++
6 files changed, 553 insertions(+)
mode change 100755 => 100644 testsuites/psxtests/Makefile.am
create mode 100644 testsuites/psxtests/psxmsgq05/init.c
create mode 100644 testsuites/psxtests/psxmsgq05/psxmsgq05.doc
create mode 100644 testsuites/psxtests/psxmsgq05/psxmsgq05.scn
create mode 100644 testsuites/psxtests/psxmsgq05/system.h
diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am
old mode 100755
new mode 100644
index c12b036..52c9644
--- a/testsuites/psxtests/Makefile.am
+++ b/testsuites/psxtests/Makefile.am
@@ -685,6 +685,16 @@ psxmsgq04_CPPFLAGS = $(AM_CPPFLAGS)
$(TEST_FLAGS_psxmsgq04) \
$(support_includes) -I$(top_srcdir)/include
endif
+if TEST_psxmsgq05
+psx_tests += psxmsgq05
+psx_screens += psxmsgq05/psxmsgq05.scn
+psx_docs += psxmsgq05/psxmsgq05.doc
+psxmsgq05_SOURCES = psxmsgq05/init.c psxmsgq05/system.h \
+ include/pmacros.h ../support/src/test_support.c
+psxmsgq05_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_psxmsgq05) \
+ $(support_includes) -I$(top_srcdir)/include
+endif
+
if TEST_psxmutexattr01
psx_tests += psxmutexattr01
psx_screens += psxmutexattr01/psxmutexattr01.scn
diff --git a/testsuites/psxtests/configure.ac b/testsuites/psxtests/configure.ac
index bb44bb8..32d143a 100644
--- a/testsuites/psxtests/configure.ac
+++ b/testsuites/psxtests/configure.ac
@@ -112,6 +112,7 @@ RTEMS_TEST_CHECK([psxmsgq01])
RTEMS_TEST_CHECK([psxmsgq02])
RTEMS_TEST_CHECK([psxmsgq03])
RTEMS_TEST_CHECK([psxmsgq04])
+RTEMS_TEST_CHECK([psxmsgq05])
RTEMS_TEST_CHECK([psxmutexattr01])
RTEMS_TEST_CHECK([psxndbm01])
RTEMS_TEST_CHECK([psxobj01])
diff --git a/testsuites/psxtests/psxmsgq05/init.c
b/testsuites/psxtests/psxmsgq05/init.c
new file mode 100644
index 0000000..ab06156
--- /dev/null
+++ b/testsuites/psxtests/psxmsgq05/init.c
@@ -0,0 +1,440 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (C) 2019 On-Line Applications Research. All rights reserved.
In the licence template:
https://git.rtems.org/rtems/tree/LICENSE.BSD-2-Clause
there is no "All rights reserved.".
[...]
+/* forward declarations to avoid warnings */
Static functions don't need forward declarations to avoid warnings.
+static int test_msgQ_unblock_order(
+ bool receive_test, /* true to test receive order, false for
+ send order */
+ bool *task1_released, /* set by function to indicate task1 was
+ released */
+ bool *task2_released /* set by function to indicate task2 was
+ released */
+);
+static void *taskEntry( void *arg );
+
+/* The taskEntry function calls send or receive on the provided message queue
+ * and will block waiting to receive or send a message depending on the
+ * receive_test flag. Once the tasked is unblocked it will post the provided
+ * semaphore.
+ */
+static void *taskEntry( void *arg )
+{
+ char buffer[ DEFAULT_BUFFER_SIZE ];
+ struct timespec timeout;
+ int retval;
+ struct task_args *args = arg;
+
+ if ( args == NULL ) {
+ fprintf( stderr, "NULL argument passed to task, exiting\n" );
+
+ return NULL;
+ }
+
+#if 0
+ fprintf( stderr,
+ "task id %x with sem %x about to block\n",
+ pthread_self(),
+ (unsigned int) ( args->p_task_sem ) );
+#endif
#if 0 code should be removed.
+
+ if ( args->receive_test == true ) {
+ if ( args->wait_timeout != 0 ) {
+ retval = clock_gettime( CLOCK_REALTIME, &timeout );
+
+ if ( retval == ( -1 ) ) {
+ perror( "clock gettime failed" );
+
+ return NULL;
+ }
+
+ timeout.tv_sec += args->wait_timeout;
+ retval = mq_timedreceive( *( args->p_main_msgQ ),
+ buffer,
+ DEFAULT_BUFFER_SIZE,
+ NULL,
+ &timeout );
+
+ if ( retval == ( -1 ) ) {
+ perror( "time mq_receive returned unexpectedly." );
+
+ return NULL;
+ }
Test cases should use assertions to check test conditions. The new test
framework helps you to do this:
https://docs.rtems.org/branches/master/eng/test-framework.html#posix-error-numbers
https://docs.rtems.org/branches/master/eng/test-framework.html#posix-status-codes
You should also test for success and not some failure.
[...]
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel