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.
This commit is contained in:
Joel Sherrill
2009-07-28 13:46:03 +00:00
parent 42d57c7ac6
commit 5d8b8eb1f5
3 changed files with 124 additions and 15 deletions

View File

@@ -1,3 +1,9 @@
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.
2009-07-28 Santosh G Vattam <vattam.santosh@gmail.com>
* psx05/init.c, psx05/psx05.scn: Add test for pthread_mutex_timedlock

View File

@@ -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 );

View File

@@ -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 ***