mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-25 22:07:15 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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 );
|
||||
|
||||
|
||||
@@ -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 ***
|
||||
|
||||
|
||||
Reference in New Issue
Block a user