summaryrefslogtreecommitdiffstats
path: root/testsuites/psxtests/psxmsgq04
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-08-06 19:24:38 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-08-06 19:24:38 +0000
commitc005d41297b51c2a3155145269a548ab8a1801fb (patch)
tree41840706f8b75e7ed892aa048b6fcebe7a2f77f8 /testsuites/psxtests/psxmsgq04
parent2009-08-06 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-c005d41297b51c2a3155145269a548ab8a1801fb.tar.bz2
2009-08-06 Joel Sherrill <joel.sherrill@OARcorp.com>
* psxmsgq04/init.c, psxmsgq04/psxmsgq04.scn: Tinker with test to ensure that it hits both failing to allocate memory for the message queue name and message buffers.
Diffstat (limited to 'testsuites/psxtests/psxmsgq04')
-rw-r--r--testsuites/psxtests/psxmsgq04/init.c59
-rw-r--r--testsuites/psxtests/psxmsgq04/psxmsgq04.scn6
2 files changed, 50 insertions, 15 deletions
diff --git a/testsuites/psxtests/psxmsgq04/init.c b/testsuites/psxtests/psxmsgq04/init.c
index 06ffef7da7..81c2421cf9 100644
--- a/testsuites/psxtests/psxmsgq04/init.c
+++ b/testsuites/psxtests/psxmsgq04/init.c
@@ -27,8 +27,12 @@ void *POSIX_Init(
struct mq_attr attr;
mqd_t Queue, second_Queue;
int sc;
+ Heap_Information_block start;
Heap_Information_block info;
+ size_t to_alloc;
+ void *alloced;
bool sb;
+ const char *name;
puts( "\n\n*** POSIX MESSAGE QUEUE TEST 4 ***" );
@@ -60,36 +64,64 @@ void *POSIX_Init(
perror( "mq_close failed" );
assert( sc == 0 );
+ sb = rtems_workspace_get_information( &start );
+ assert( start.Free.number == 1 );
+ to_alloc = start.Free.largest;
+
+ /* find the largest we can actually allocate */
+ while ( 1 ) {
+ sb = rtems_workspace_allocate( to_alloc, &alloced );
+ if ( sb )
+ break;
+ to_alloc -= 4;
+ }
+
+ rtems_workspace_free( alloced );
+
+ /*
+ * Now do the test
+ */
puts( "Init - Memory allocation error test" );
sb = rtems_workspace_get_information( &info );
- attr.mq_msgsize = info.Free.largest;
+ attr.mq_maxmsg = 1;
+ attr.mq_msgsize = 200;
+ name = Get_Longest_Name();
while ( attr.mq_msgsize > 0 ) {
- second_Queue = mq_open("second_queue",O_CREAT | O_RDWR, 0x777, &attr );
- if ( second_Queue!=(-1) )
+ sb = rtems_workspace_allocate( to_alloc, &alloced );
+ assert( sb );
+
+ second_Queue = mq_open(name,O_CREAT | O_RDWR, 0x777, &attr );
+
+ /* free the memory we snagged, then check the status */
+ rtems_workspace_free( alloced );
+
+ if ( second_Queue != (-1) )
break;
- attr.mq_msgsize -= 48;
- }
- if ( second_Queue == (-1) ) {
- perror( "mq_open failed" );
- assert( second_Queue != (-1) );
+ /* attr.mq_msgsize -= 48; */
+ to_alloc -= 4;
}
+ if ( second_Queue == -1 )
+ rtems_test_exit(0);
+
puts( "Init - Message Queue created" );
+
puts( "Init - Unlink message queue" );
- sc = mq_unlink( "second_queue" );
+ sc = mq_unlink( name );
if ( sc != 0 )
perror( "mq_unlink failed" );
- assert( sc==0 );
+ assert( sc == 0 );
puts( "Init - Close message queue" );
sc = mq_close( second_Queue );
- if ( sc !=0 )
+ if ( sc != 0 )
perror( "mq_close failed" );
assert( sc == 0 );
+
puts( "*** END OF POSIX MESSAGE QUEUE TEST 4 ***" );
rtems_test_exit( 0 );
@@ -103,6 +135,10 @@ void *POSIX_Init(
#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+/* account for message buffers and string names */
+#define CONFIGURE_MESSAGE_BUFFER_MEMORY \
+ CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(1, sizeof(int))
+
#define CONFIGURE_MAXIMUM_POSIX_THREADS 1
#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 1
#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS 2
@@ -111,4 +147,3 @@ void *POSIX_Init(
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
-/* end of include file */
diff --git a/testsuites/psxtests/psxmsgq04/psxmsgq04.scn b/testsuites/psxtests/psxmsgq04/psxmsgq04.scn
index 17310552af..fa70314d32 100644
--- a/testsuites/psxtests/psxmsgq04/psxmsgq04.scn
+++ b/testsuites/psxtests/psxmsgq04/psxmsgq04.scn
@@ -1,8 +1,8 @@
*** POSIX MESSAGE QUEUE TEST 4 ***
-Init - Open message queue
+Init - Open message queue instance 1
Init - Open message queue instance 2 - FAIL - ENFILE
-Init - Unlink message queue
-Init - Close message queue
+Init - Unlink message queue instance 1
+Init - Close message queue instance 1
Init - Memory allocation error test
Init - Message Queue created
Init - Unlink message queue