2010-07-29 Bharath Suri <bharath.s.jois@gmail.com>

PR 1633/testing
	* psximfs01/init.c, psximfs01/psximfs01.scn,
	psximfs01/psximfs01.doc: New cases to exercise
	IMFS_memfile_remove.
This commit is contained in:
Joel Sherrill
2010-07-29 22:35:36 +00:00
parent 85433b5ad0
commit bed8f3ea29
4 changed files with 93 additions and 1 deletions

View File

@@ -1,3 +1,10 @@
2010-07-29 Bharath Suri <bharath.s.jois@gmail.com>
PR 1633/testing
* psximfs01/init.c, psximfs01/psximfs01.scn,
psximfs01/psximfs01.doc: New cases to exercise
IMFS_memfile_remove.
2010-07-27 Joel Sherrill <joel.sherrill@oarcorp.com>
* psxobj01/Makefile.am, psxobj01/init.c, psxobj01/psxobj01.scn: Add

View File

@@ -138,6 +138,57 @@ void truncate_helper(void)
} while (new > 0);
}
void extend_helper(void)
{
off_t position;
off_t new;
off_t sc;
int rc;
position = lseek( TestFd, 0, SEEK_END );
printf( "Seek to end .. returned %d\n", (int) position );
rtems_test_assert( position == 1 );
/*
* test case to ftruncate a file to a length > its size
*/
rc = ftruncate( TestFd, 2 );
rtems_test_assert( rc == 0 );
puts( "lseek/ftruncate loop.." );
new = position;
do {
sc = lseek( TestFd, new, SEEK_SET );
if( sc == -1 ) {
if( errno == ENOSPC ) {
break;
}
else {
rtems_test_assert( 0 );
}
}
rc = ftruncate( TestFd, new );
if ( rc != 0 ) {
if( errno != ENOSPC ) {
fprintf(
stderr,
"ERROR - at offset %d - returned %d and error=%s\n",
(int) new,
rc,
strerror( errno )
);
}
else {
break;
}
}
rtems_test_assert( rc == 0 );
++new;
} while ( 1 );
}
void close_it(void)
{
int rc;
@@ -147,11 +198,25 @@ void close_it(void)
rtems_test_assert( rc == 0 );
}
void unlink_it(void)
{
int rc;
puts( "unlink(" FILE_NAME ") - OK" );
rc = unlink( FILE_NAME );
rtems_test_assert( rc == 0 );
}
extern Heap_Control *RTEMS_Malloc_Heap;
rtems_task Init(
rtems_task_argument argument
)
{
int i;
void *alloc_ptr = (void *)0;
Heap_Information_block Info;
puts( "\n\n*** TEST IMFS 01 ***" );
for (i=0 ; i<sizeof(Buffer) ; i++ )
@@ -169,8 +234,22 @@ rtems_task Init(
open_it(false, false);
truncate_helper();
/*
* Allocate the heap, so that extend cannot be successful
*/
_Heap_Get_information( RTEMS_Malloc_Heap, &Info );
alloc_ptr = malloc( Info.Free.largest-4 );
extend_helper();
/*
* free the allocated heap memory
*/
free(alloc_ptr);
close_it();
unlink_it();
puts( "*** END OF TEST IMFS 01 ***" );

View File

@@ -21,6 +21,7 @@ directives:
+ write
+ lseek
+ ftruncate
+ unlink
concepts:
@@ -33,3 +34,5 @@ ensures the maximum file size is relatively small.
+ This should exercise much of the singly, doubly and triply indirect
block management code in the IMFS.
+ Exercise unlink, and hence IMFS_memfile_remove

View File

@@ -12,5 +12,8 @@ close(biggie) - OK
open(biggie) - OK
Seek to end .. returned 1280
lseek/ftruncate loop..
Seek to end .. returned 1
lseek/ftruncate loop..
close(biggie) - OK
unlink(biggie) - OK
*** END OF TEST IMFS 01 ***