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

Reply via email to