summaryrefslogtreecommitdiffstats
path: root/testsuites/psxtests/psxmsgq01
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-07-28 13:46:03 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-07-28 13:46:03 +0000
commit5d8b8eb1f53bc813a5cc631538c4968798cb2004 (patch)
tree24833e4d4de990163f6c238a729e78bb40101010 /testsuites/psxtests/psxmsgq01
parent2009-07-28 Santosh G Vattam <vattam.santosh@gmail.com> (diff)
downloadrtems-5d8b8eb1f53bc813a5cc631538c4968798cb2004.tar.bz2
2009-07-28 Santosh G Vattam <vattam.santosh@gmail.com>
* psxmsgq01/init.c, psxmsgq01/psxmsgq01.scn: Add tests for various mq_timedreceive and mq_timedsend conditions. In particular test timeout in the past.
Diffstat (limited to 'testsuites/psxtests/psxmsgq01')
-rw-r--r--testsuites/psxtests/psxmsgq01/init.c99
-rw-r--r--testsuites/psxtests/psxmsgq01/psxmsgq01.scn34
2 files changed, 118 insertions, 15 deletions
diff --git a/testsuites/psxtests/psxmsgq01/init.c b/testsuites/psxtests/psxmsgq01/init.c
index ad132a0e43..8297bf46fb 100644
--- a/testsuites/psxtests/psxmsgq01/init.c
+++ b/testsuites/psxtests/psxmsgq01/init.c
@@ -1132,6 +1132,101 @@ void validate_mq_setattr()
}
}
+void verify_timedout_mq_timedreceive(
+ char *task_name,
+ int que,
+ int is_blocking
+)
+{
+ char message[ 100 ];
+ unsigned int priority;
+ struct timespec tm;
+ struct timeval tv1, tv2, tv3;
+ struct timezone tz1, tz2;
+ int status;
+
+ printf(
+ "Init: %s verify_timedout_mq_timedreceive - on queue %s ",
+ task_name,
+ Test_q[que].name
+ );
+
+ gettimeofday( &tv1, &tz1 );
+ tm.tv_sec = tv1.tv_sec - 1;
+ tm.tv_nsec = tv1.tv_usec * 1000;
+
+ status = mq_timedreceive( Test_q[ que ].mq, message, 100, &priority, &tm );
+
+ gettimeofday( &tv2, &tz2 );
+ tv3.tv_sec = tv2.tv_sec - tv1.tv_sec;
+ tv3.tv_usec = tv2.tv_usec - tv1.tv_usec;
+
+ fatal_int_service_status( status, -1, "mq_timedreceive status");
+
+ printf( "Init: %ld sec %ld us\n", (long)tv3.tv_sec, (long)tv3.tv_usec );
+
+}
+
+void verify_mq_receive()
+{
+ int que;
+
+ Start_Test( "mq_timedout_receive" );
+
+ for( que = RW_QUEUE; que < CLOSED; que++ ) {
+ if (( que == BLOCKING ) || ( que == DEFAULT_RW ))
+ break;
+ else
+ verify_timedout_mq_timedreceive( "Init:", que, 0 );
+ }
+}
+
+void verify_timedout_mq_timedsend(
+ int que,
+ int is_blocking
+)
+{
+ struct timespec timeout;
+ struct timeval tv1, tv2, tv3;
+ struct timezone tz1, tz2;
+ int len;
+ int status;
+ char *msg;
+
+ printf( "Init: verify_timedout_mq_timedsend - on queue %s ", Test_q[que].name);
+ len = Predefined_Msgs[MAXMSG].size;
+ msg = Predefined_Msgs[MAXMSG].msg;
+
+ gettimeofday( &tv1, &tz1 );
+ timeout.tv_sec = tv1.tv_sec - 1;
+ timeout.tv_nsec = tv1.tv_usec * 1000;
+
+ status = mq_timedsend( Test_q[que].mq, msg, len , 0, &timeout );
+
+ gettimeofday( &tv2, &tz2 );
+ tv3.tv_sec = tv2.tv_sec - tv1.tv_sec;
+ tv3.tv_usec = tv2.tv_usec - tv1.tv_usec;
+
+ printf( "Init: %ld sec %ld us\n", (long)tv3.tv_sec, (long)tv3.tv_usec );
+
+ if ( que == DEFAULT_RW )
+ Test_q[que].count++;
+}
+
+void verify_mq_send()
+{
+ int que;
+
+ Start_Test( "verify_timedout_mq_timedsend" );
+
+ for( que = RW_QUEUE; que < CLOSED; que++ ) {
+ if ( que == BLOCKING )
+ verify_timedout_mq_timedsend( que, 1 );
+ else
+ verify_timedout_mq_timedsend( que, 0 );
+ }
+}
+
void *POSIX_Init(
void *argument
)
@@ -1152,7 +1247,9 @@ void *POSIX_Init(
verify_open_functionality();
verify_notify();
verify_with_threads();
-
+ verify_mq_receive();
+ verify_mq_send();
+
puts( "*** END OF POSIX MESSAGE QUEUE TEST ***" );
rtems_test_exit( 0 );
diff --git a/testsuites/psxtests/psxmsgq01/psxmsgq01.scn b/testsuites/psxtests/psxmsgq01/psxmsgq01.scn
index 9f0372b435..3eb29efb43 100644
--- a/testsuites/psxtests/psxmsgq01/psxmsgq01.scn
+++ b/testsuites/psxtests/psxmsgq01/psxmsgq01.scn
@@ -21,9 +21,9 @@ Init: Unlink and Open without closing SUCCESSFUL
Task1:mq_setattr - unopened queue (EBADF)
Task1:mq_setattr - NULL attributes (EINVAL)
Init: set_attr all queues to blocking
-Init: Init: mq_timedreceive - on queue Qnoblock Init: 1 sec 0 us
-Init: Init: mq_timedreceive - on queue Qblock Init: 1 sec 0 us
-Init: Init: mq_timedreceive - on queue Qdefault Init: 1 sec 0 us
+Init: Init: mq_timedreceive - on queue Qnoblock Init: 1 sec -12131 us
+Init: Init: mq_timedreceive - on queue Qblock Init: 1 sec -11843 us
+Init: Init: mq_timedreceive - on queue Qdefault Init: 0 sec 988133 us
_______________mq_send errors
Init: mq_send - Closed message queue (EBADF)
Init: mq_send - Read only message queue (EBADF)
@@ -37,9 +37,9 @@ _______________mq_getattr errors
Init: mq_getattr - unopened queue (EBADF)
Init: mq_getattr - NULL attributes (EINVAL)
_______________mq_timedsend
-Init: mq_timedsend - on queue Qnoblock Init: 0 sec 0 us
-Init: mq_timedsend - on queue Qblock Init: 1 sec 0 us
-Init: mq_timedsend - on queue Qdefault Init: 0 sec 0 us
+Init: mq_timedsend - on queue Qnoblock Init: 0 sec 77 us
+Init: mq_timedsend - on queue Qblock Init: 0 sec 988482 us
+Init: mq_timedsend - on queue Qdefault Init: 0 sec 101 us
_______________mq_receive errors
Init: mq_receive - Unopened message queue (EBADF)
Init: mq_receive - Write only queue (EBADF)
@@ -48,9 +48,9 @@ Init: Verify Queues are full
Init: Empty all Queues
Init: mq_receive - Queue is empty (EAGAIN)
_______________mq_timedreceive
-Init: Init: mq_timedreceive - on queue Qnoblock Init: 0 sec 0 us
-Init: Init: mq_timedreceive - on queue Qblock Init: 1 sec 0 us
-Init: Init: mq_timedreceive - on queue Qdefault Init: 1 sec 0 us
+Init: Init: mq_timedreceive - on queue Qnoblock Init: 0 sec 83 us
+Init: Init: mq_timedreceive - on queue Qblock Init: 0 sec 986568 us
+Init: Init: mq_timedreceive - on queue Qdefault Init: 1 sec -11823 us
_______________mq_open functionality
_______________mq_notify
Init: mq_notify - Unopened message queue (EBADF)
@@ -70,19 +70,19 @@ Init: Verify No Signal when send
Init: mq_send - to Qnoblock msg: 12345678 priority 31
waiting on any signal for 3 seconds.
_______________multi-thread Task 1 Test
-Task_1: Fri Jan 1 00:00:20 1988
+Task_1: Fri Jan 1 00:00:17 1988
Task_1: mq_send - to Qblock msg: 12345678 priority 31
Task_1: pthread_exit
-Init: Fri Jan 1 00:00:20 1988
+Init: Fri Jan 1 00:00:17 1988
_______________multi-thread Task 2 Test
Init: Verify Queues are empty
Init: Fill Queues with messages
Init: Verify Queues are full
Init: mq_send - to Qblock msg: Last priority 32
-Task_2: Fri Jan 1 00:00:21 1988
+Task_2: Fri Jan 1 00:00:17 1988
Task_2: Verify Queues are full
Task_2: pthread_exit
-Init: Fri Jan 1 00:00:21 1988
+Init: Fri Jan 1 00:00:17 1988
Init: Verify Queues are full
Init: Empty all Queues
_______________multi-thread Task 3 Test
@@ -90,8 +90,14 @@ Init: Verify Queues are empty
Init: Fill Queues with messages
Init: Verify Queues are full
Init: mq_send - Block while thread deletes queue (EBADF)
-Task_3: Fri Jan 1 00:00:21 1988
+Task_3: Fri Jan 1 00:00:18 1988
_______________Unlink and Close All Files
Task_3: pthread_exit
+_______________mq_timedout_receive
+Init: Init: verify_timedout_mq_timedreceive - on queue Qnoblock Init: 0 sec 54 us
+_______________verify_timedout_mq_timedsend
+Init: verify_timedout_mq_timedsend - on queue Qnoblock Init: 0 sec 54 us
+Init: verify_timedout_mq_timedsend - on queue Qblock Init: 0 sec 55 us
+Init: verify_timedout_mq_timedsend - on queue Qdefault Init: 0 sec 78 us
*** END OF POSIX MESSAGE QUEUE TEST ***