summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-09 13:36:26 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-09 13:36:26 +0000
commit27eb3ecf3c9f58a7459086a4a055a2f2fca4a33b (patch)
tree7edf892eb150cca4735dfe41aceeaadc69e36c69 /testsuites
parentAdded more status information. (diff)
downloadrtems-27eb3ecf3c9f58a7459086a4a055a2f2fca4a33b.tar.bz2
New files.
Diffstat (limited to 'testsuites')
-rw-r--r--testsuites/psxtests/psxsem01/init.c139
-rw-r--r--testsuites/psxtests/psxsem01/psxsem01.scn25
-rw-r--r--testsuites/psxtests/psxsem01/system.h58
3 files changed, 222 insertions, 0 deletions
diff --git a/testsuites/psxtests/psxsem01/init.c b/testsuites/psxtests/psxsem01/init.c
new file mode 100644
index 0000000000..26e6607661
--- /dev/null
+++ b/testsuites/psxtests/psxsem01/init.c
@@ -0,0 +1,139 @@
+#define CONFIGURE_INIT
+#include "system.h"
+#include <sched.h>
+#include <fcntl.h>
+#include <time.h>
+
+void *POSIX_Init(
+ void *argument
+)
+{
+ int status;
+ int value;
+ int i;
+ sem_t sems[CONFIGURE_MAXIMUM_POSIX_SEMAPHORES];
+ sem_t sem2;
+ sem_t *n_sem1;
+ sem_t *n_sem2;
+ sem_t testsem;
+ struct timespec waittime;
+
+ puts( "\n\n*** POSIX SEMAPHORE MANAGER TEST 1 ***" );
+
+ puts( "Init: sem_init - SUCCESSFUL" );
+ for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_SEMAPHORES; i++) {
+ status = sem_init(&sems[i], 0, i);
+ assert( status == 0 );
+ }
+ puts( "Init: sem_init - UNSUCCESSFUL (ENOSPC)" );
+ status = sem_init(&sem2, 0, 1);
+ assert( (status == -1) && (errno == ENOSPC) );
+
+ puts( "Init: sem_init - UNSUCCESSFUL (ENOSYS -- pshared not supported)" );
+ status = sem_init(&sem2, 1, 1);
+ assert( (status == -1) && (errno == ENOSYS) );
+
+ puts( "Init: sem_getvalue - SUCCESSFUL ");
+ for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_SEMAPHORES; i++) {
+ status = sem_getvalue(&sems[i], &value);
+ assert( (status == 0) && (value == i) );
+ }
+ puts( "Init: sem_getvalue - UNSUCCESSFUL ");
+ status = sem_getvalue(&sem2, &value);
+ assert( (status == -1) && (errno == EINVAL) );
+
+ puts( "Init: sem_destroy - SUCCESSFUL" );
+ status = sem_destroy(&sems[0]);
+ assert( status == 0 );
+
+ puts( "Init: sem_destroy - UNSUCCESSFUL (EINVAL)" );
+ status = sem_destroy(&sem2);
+ assert( (status == -1) && (errno == EINVAL) );
+
+ puts( "Init: sem_wait - SUCCESSFUL" );
+ status = sem_wait(&sems[1]);
+ assert( status == 0);
+
+ puts( "Init: sem_wait - UNSUCCESSFUL (EINVAL)" );
+ status = sem_wait(&sem2);
+ assert( (status == -1) && (errno == EINVAL) );
+
+ puts( "Init: sem_post - SUCCESSFUL" );
+ status = sem_post(&sems[1]);
+ assert( status == 0 );
+
+ puts( "Init: sem_wait - SUCCESSFUL (after a sem_post)" );
+ status = sem_wait(&sems[1]);
+ assert( status == 0 );
+
+ puts( "Init: sem_trywait - SUCCESSFUL" );
+ status = sem_trywait(&sems[2]);
+ assert( status == 0 );
+
+ puts( "Init: sem_trywait - UNSUCCESSFUL (EAGAIN)" );
+ status = sem_trywait(&sems[1]);
+ assert( (status == -1) && (errno == EAGAIN) );
+
+ puts( "Init: sem_trywait - UNSUCCESSFUL (EINVAL)" );
+ status = sem_trywait(&sem2);
+ assert( (status == -1) && (errno == EINVAL) );
+
+ puts( "Init: sem_timedwait - SUCCESSFUL" );
+ waittime.tv_sec = 0;
+ waittime.tv_nsec = 100;
+ status = sem_timedwait(&sems[2], &waittime);
+ assert( status == 0 );
+
+ puts( "Init: sem_timedwait - UNSUCCESSFUL (ETIMEDOUT)" );
+ status = sem_timedwait(&sems[1], &waittime);
+ assert( (status == -1) && (errno == ETIMEDOUT) );
+
+ puts( "Init: sem_timedwait - UNSUCCESSFUL (EINVAL)" );
+ status = sem_timedwait(&sem2, &waittime);
+ assert( (status == -1) && (errno == EINVAL) );
+
+ puts( "Init: sem_post - UNSUCCESSFUL (EINVAL)" );
+ status = sem_post(&sem2);
+ assert( (status == -1) && (errno == EINVAL) );
+
+ puts( "Init: sem_destroy - SUCCESSFUL" );
+ for (i = 1; i < CONFIGURE_MAXIMUM_POSIX_SEMAPHORES; i++) {
+ status = sem_destroy(&sems[i]);
+ assert( status == 0);
+ }
+
+ /* Modes are currently unsupported */
+
+ puts( "Init: sem_open - SUCCESSFUL" );
+ n_sem1 = sem_open("sem1", O_CREAT, 00777, 1);
+ assert( n_sem1 != SEM_FAILED );
+
+ puts( "Init: sem_open - UNSUCCESSFUL (EEXIST)" );
+ n_sem2 = sem_open("sem1", O_CREAT | O_EXCL, 00777, 1);
+ assert( (n_sem2 == SEM_FAILED) && (errno == EEXIST) );
+
+ puts( "Init: sem_close - SUCCESSFUL" );
+ status = sem_close(n_sem1);
+ assert( status == 0);
+
+ /*
+ puts( "Init: sem_close - UNSUCCESSFUL (EINVAL)" );
+ status = sem_close(n_sem2);
+ assert( (status == -1) && (errno == EINVAL) );
+
+ puts( "Init: sem_unlink - SUCCESSFUL" );
+ status = sem_unlink("sem1");
+ assert( status == 0 );
+
+ puts( "Init: sem_unlink - UNSUCCESSFUL (ENOENT)" );
+ status = sem_unlink("sem2");
+ assert( (status == -1) && (errno == ENOENT) );
+ */
+
+ /* Try adding in unlinking before closing... (can we still open?) */
+
+ puts( "*** POSIX SEMAPHORE MANAGER TEST 1 COMPLETED ***" );
+ exit(0);
+
+ return NULL; /* just so the compiler thinks we returned something */
+}
diff --git a/testsuites/psxtests/psxsem01/psxsem01.scn b/testsuites/psxtests/psxsem01/psxsem01.scn
new file mode 100644
index 0000000000..d2045fd0b0
--- /dev/null
+++ b/testsuites/psxtests/psxsem01/psxsem01.scn
@@ -0,0 +1,25 @@
+*** POSIX SEMAPHORE MANAGER TEST 1 ***
+Init: sem_init - SUCCESSFUL
+Init: sem_init - UNSUCCESSFUL (ENOSPC)
+Init: sem_init - UNSUCCESSFUL (ENOSYS -- pshared not supported)
+Init: sem_getvalue - SUCCESSFUL
+Init: sem_getvalue - UNSUCCESSFUL
+Init: sem_destroy - SUCCESSFUL
+Init: sem_destroy - UNSUCCESSFUL (EINVAL)
+Init: sem_wait - SUCCESSFUL
+Init: sem_wait - UNSUCCESSFUL (EINVAL)
+Init: sem_post - SUCCESSFUL
+Init: sem_wait - SUCCESSFUL (after a sem_post)
+Init: sem_trywait - SUCCESSFUL
+Init: sem_trywait - UNSUCCESSFUL (EAGAIN)
+Init: sem_trywait - UNSUCCESSFUL (EINVAL)
+Init: sem_timedwait - SUCCESSFUL
+Init: sem_timedwait - UNSUCCESSFUL (ETIMEDOUT)
+Init: sem_timedwait - UNSUCCESSFUL (EINVAL)
+Init: sem_post - UNSUCCESSFUL (EINVAL)
+Init: sem_destroy - SUCCESSFUL
+Init: sem_open - SUCCESSFUL
+Init: sem_open - UNSUCCESSFUL (EEXIST)
+Init: sem_close - SUCCESSFUL
+*** POSIX SEMAPHORE MANAGER TEST 1 COMPLETED ***
+
diff --git a/testsuites/psxtests/psxsem01/system.h b/testsuites/psxtests/psxsem01/system.h
new file mode 100644
index 0000000000..ca25a0cd1f
--- /dev/null
+++ b/testsuites/psxtests/psxsem01/system.h
@@ -0,0 +1,58 @@
+/* system.h
+ *
+ * This include file contains information that is included in every
+ * function in the test set.
+ *
+ * COPYRIGHT (c) 1989-1998.
+ * On-Line Applications Research Corporation (OAR).
+ * Copyright assigned to U.S. Government, 1994.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+/* functions */
+
+#include <pmacros.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sched.h>
+#include <semaphore.h>
+
+void *POSIX_Init(
+ void *argument
+);
+
+void *Task_1_through_3(
+ void *argument
+);
+
+/* configuration information */
+
+#define CONFIGURE_SPTEST
+
+#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_TEST_NEEDS_CLOCK_DRIVER
+
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS 2
+#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 10
+
+#include <confdefs.h>
+
+/* global variables */
+
+#ifdef CONFIGURE_INIT
+#define TEST_EXTERN
+#else
+#define TEST_EXTERN extern
+#endif
+
+TEST_EXTERN pthread_t Init_id;
+TEST_EXTERN pthread_t Task_id;
+
+/* end of include file */