From 5d8b8eb1f53bc813a5cc631538c4968798cb2004 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 28 Jul 2009 13:46:03 +0000 Subject: 2009-07-28 Santosh G Vattam * psxmsgq01/init.c, psxmsgq01/psxmsgq01.scn: Add tests for various mq_timedreceive and mq_timedsend conditions. In particular test timeout in the past. --- testsuites/psxtests/psxmsgq01/init.c | 99 ++++++++++++++++++++++++++++- testsuites/psxtests/psxmsgq01/psxmsgq01.scn | 34 ++++++---- 2 files changed, 118 insertions(+), 15 deletions(-) (limited to 'testsuites/psxtests/psxmsgq01') 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 *** -- cgit v1.2.3