From 1e566bbb1c772a006a8f6b44f91c520f9c7cfdd2 Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Fri, 17 Nov 2000 19:06:40 +0000 Subject: 2000-11-17 Jennifer Averret * psxmount/test.c, psxmount/psxmount.scn: Improve output to report expected error condition in one case. * psxreaddir/test.c, psxreaddir.scn: Added test cases to exercise readdir() of root of mounted filesystem. Also corrected the screen file for some mistakes noticed in this effort. --- c/src/tests/psxtests/psxmount/psxmount.scn | 2 +- c/src/tests/psxtests/psxmount/test.c | 2 +- c/src/tests/psxtests/psxreaddir/psxreaddir.scn | 167 +++++++++++++------------ c/src/tests/psxtests/psxreaddir/test.c | 53 +++++++- 4 files changed, 143 insertions(+), 81 deletions(-) (limited to 'c/src/tests') diff --git a/c/src/tests/psxtests/psxmount/psxmount.scn b/c/src/tests/psxtests/psxmount/psxmount.scn index 4ffae19bc1..b2f47b6db3 100644 --- a/c/src/tests/psxtests/psxmount/psxmount.scn +++ b/c/src/tests/psxtests/psxmount/psxmount.scn @@ -73,7 +73,7 @@ mkdir /c/y/my_mount_point/my_dir Open /c/y/my_mount_point/my_dir Unmount /c/y/my_mount_point should fail with EBUSY Close /c/y/my_mount_point/my_dir -Unmount /c/y/my_mount_point/my_dir +Unmount /c/y/my_mount_point/my_dir should fail with EACCES Mount a file system at /c/y/my_mount_point/my_dir unmount /c/y/my_mount_point should fail with EBUSY Verify a hard link across filesystems fails with EXDEV diff --git a/c/src/tests/psxtests/psxmount/test.c b/c/src/tests/psxtests/psxmount/test.c index 36b0417121..fb420391e0 100644 --- a/c/src/tests/psxtests/psxmount/test.c +++ b/c/src/tests/psxtests/psxmount/test.c @@ -378,7 +378,7 @@ int main( * Attempt to unmount a directory that is not a mount point. */ - printf("Unmount /c/y/my_mount_point/my_dir\n"); + printf("Unmount /c/y/my_mount_point/my_dir should fail with EACCES\n"); status = unmount( "/c/y/my_mount_point/my_dir" ); assert( status == -1 ); assert( errno == EACCES ); diff --git a/c/src/tests/psxtests/psxreaddir/psxreaddir.scn b/c/src/tests/psxtests/psxreaddir/psxreaddir.scn index ca1eef4900..5259773924 100644 --- a/c/src/tests/psxtests/psxreaddir/psxreaddir.scn +++ b/c/src/tests/psxtests/psxreaddir/psxreaddir.scn @@ -60,50 +60,50 @@ Create aq Create ar Open /many and print the directory name inode offset reclen type -a 1 0 268 0x010c -b 1 268 268 0x010c -c 1 536 268 0x010c -d 1 804 268 0x010c -e 1 1072 268 0x010c -f 1 1340 268 0x010c -g 1 1608 268 0x010c -h 1 1876 268 0x010c -i 1 2144 268 0x010c -j 1 2412 268 0x010c -k 1 2680 268 0x010c -l 1 2948 268 0x010c -m 1 3216 268 0x010c -n 1 3484 268 0x010c -o 1 3752 268 0x010c -p 1 4020 268 0x010c -q 1 4288 268 0x010c -r 1 4556 268 0x010c -s 1 4824 268 0x010c -t 1 5092 268 0x010c -u 1 5360 268 0x010c -v 1 5628 268 0x010c -w 1 5896 268 0x010c -x 1 6164 268 0x010c -y 1 6432 268 0x010c -z 1 6700 268 0x010c -aa 1 6968 268 0x010c -ab 1 7236 268 0x010c -ac 1 7504 268 0x010c -ad 1 7772 268 0x010c -ae 1 8040 268 0x010c -af 1 8308 268 0x010c -ag 1 8576 268 0x010c -ah 1 8844 268 0x010c -ai 1 9112 268 0x010c -aj 1 9380 268 0x010c -ak 1 9648 268 0x010c -al 1 9916 268 0x010c -am 1 10184 268 0x010c -an 1 10452 268 0x010c -ao 1 10720 268 0x010c -ap 1 10988 268 0x010c -aq 1 11256 268 0x010c -ar 1 11524 268 0x010c +a 17 0 268 0x010c +b 18 268 268 0x010c +c 19 536 268 0x010c +d 20 804 268 0x010c +e 21 1072 268 0x010c +f 22 1340 268 0x010c +g 23 1608 268 0x010c +h 24 1876 268 0x010c +i 25 2144 268 0x010c +j 26 2412 268 0x010c +k 27 2680 268 0x010c +l 28 2948 268 0x010c +m 29 3216 268 0x010c +n 30 3484 268 0x010c +o 31 3752 268 0x010c +p 32 4020 268 0x010c +q 33 4288 268 0x010c +r 34 4556 268 0x010c +s 35 4824 268 0x010c +t 36 5092 268 0x010c +u 37 5360 268 0x010c +v 38 5628 268 0x010c +w 39 5896 268 0x010c +x 40 6164 268 0x010c +y 41 6432 268 0x010c +z 42 6700 268 0x010c +aa 43 6968 268 0x010c +ab 44 7236 268 0x010c +ac 45 7504 268 0x010c +ad 46 7772 268 0x010c +ae 47 8040 268 0x010c +af 48 8308 268 0x010c +ag 49 8576 268 0x010c +ah 50 8844 268 0x010c +ai 51 9112 268 0x010c +aj 52 9380 268 0x010c +ak 53 9648 268 0x010c +al 54 9916 268 0x010c +am 55 10184 268 0x010c +an 56 10452 268 0x010c +ao 57 10720 268 0x010c +ap 58 10988 268 0x010c +aq 59 11256 268 0x010c +ar 60 11524 268 0x010c open /b/myfile scandir a file status: -1 Open /b/new_file @@ -114,7 +114,7 @@ fcntl F_GETFL returns current flags fcntl F_GETFL returned 0x200 fcntl F_SETFL to add O_APPEND and O_NONBLOCK fcntl F_GETFL return current flags to see changes -fcntl F_GETFL returned 0x208 +fcntl F_GETFL returned 0x1208 fcntl F_GETLK should return -1 fcntl F_SETLK should return -1 fcntl F_SETLKW should return -1 @@ -129,47 +129,47 @@ Performing stat of directory / status for stat : 0, size of directory: 2144 Open and print directory / name inode offset reclen type -dev 1 0 268 0x010c -a 1 268 268 0x010c -b 1 536 268 0x010c -c 1 804 268 0x010c -d 1 1072 268 0x010c -e 1 1340 268 0x010c -f 1 1608 268 0x010c -many 1 1876 268 0x010c +dev 2 0 268 0x010c +a 5 268 268 0x010c +b 6 536 268 0x010c +c 7 804 268 0x010c +d 8 1072 268 0x010c +e 9 1340 268 0x010c +f 10 1608 268 0x010c +many 16 1876 268 0x010c mkdir /d/my_dir Open /d/my_dir remove /d/my_dir. close /d/my_dir. Opening directory /c name inode offset reclen type -y 1 0 268 0x010c -z 1 268 268 0x010c -x 1 536 268 0x010c +y 11 0 268 0x010c +z 12 268 268 0x010c +x 13 536 268 0x010c Opening directory /c/y name inode offset reclen type -a3333 1 0 268 0x010c -j123 1 268 268 0x010c +a3333 14 0 268 0x010c +j123 15 268 268 0x010c LSEEK to the start of the open directory name inode offset reclen type -dev 1 0 268 0x010c -a 1 268 268 0x010c -b 1 536 268 0x010c -c 1 804 268 0x010c -d 1 1072 268 0x010c -e 1 1340 268 0x010c -f 1 1608 268 0x010c -many 1 1876 268 0x010c +dev 2 0 268 0x010c +a 5 268 268 0x010c +b 6 536 268 0x010c +c 7 804 268 0x010c +d 8 1072 268 0x010c +e 9 1340 268 0x010c +f 10 1608 268 0x010c +many 16 1876 268 0x010c Rewinding directory name inode offset reclen type -dev 1 0 268 0x010c -a 1 268 268 0x010c -b 1 536 268 0x010c -c 1 804 268 0x010c -d 1 1072 268 0x010c -e 1 1340 268 0x010c -f 1 1608 268 0x010c -many 1 1876 268 0x010c +dev 2 0 268 0x010c +a 5 268 268 0x010c +b 6 536 268 0x010c +c 7 804 268 0x010c +d 8 1072 268 0x010c +e 9 1340 268 0x010c +f 10 1608 268 0x010c +many 16 1876 268 0x010c Send rewinddir a NULL pointer Seek directory telldir() should report only sizeof(struct dirent) increments @@ -218,8 +218,19 @@ scandir status: 3 Selected and Sorted Node Name: z Selected and Sorted Node Name: y Selected and Sorted Node Name: x +Validate readdir across mount point +name inode offset reclen type +should_be_hidden 65 0 268 0x010c +Attempting to mount IMFS file system at /imfs +create /imfs/testdir and /imfs/testdir/testsubdir +name inode offset reclen type +testdir 2 0 268 0x010c +name inode offset reclen type +testdir 2 0 268 0x010c +name inode offset reclen type +testdir 2 0 268 0x010c +name inode offset reclen type +testsubdir 3 0 268 0x010c +name inode offset reclen type +testdir 2 0 268 0x010c *** END OF READDIR TEST *** - - - - diff --git a/c/src/tests/psxtests/psxreaddir/test.c b/c/src/tests/psxtests/psxreaddir/test.c index 069400b463..7e8f031034 100644 --- a/c/src/tests/psxtests/psxreaddir/test.c +++ b/c/src/tests/psxtests/psxreaddir/test.c @@ -28,6 +28,8 @@ #include #include #include +#include +#include DIR *directory; DIR *directory2; @@ -64,6 +66,17 @@ void printdir( DIR *directory ) } } +void complete_printdir( char *path ) +{ + DIR *the_dir; + int status; + + the_dir = opendir( path ); + assert( the_dir ); + printdir( the_dir ); + status = closedir( the_dir ); +} + char *many_files[] = { "a", "b", @@ -166,6 +179,44 @@ int compare_descending( struct dirent **a, struct dirent **b ) return i; } +int test_across_mount() +{ + rtems_filesystem_mount_table_entry_t *mt_entry; + int status; + + /* + * Verify Readdir works correctly over mount points. + */ + + printf("Validate readdir across mount point\n"); + assert( mkdir( "/imfs", 0777 ) == 0 ); + assert( mkdir( "/imfs/should_be_hidden", 0777 ) == 0 ); + complete_printdir("/imfs" ); + printf("Attempting to mount IMFS file system at /imfs \n"); + status = mount( + &mt_entry, + &IMFS_ops, + RTEMS_FILESYSTEM_READ_WRITE, + NULL, + "/imfs" ); + assert( status == 0 ); + if( mt_entry == NULL ){ + printf(" NULL mount table entry was returned\n"); + } + printf( "create /imfs/testdir and /imfs/testdir/testsubdir\n"); + + status = mkdir( "/imfs/testdir", 0777 ); + assert( status == 0 ); + status = mkdir( "/imfs/testdir/testsubdir", 0777 ); + assert( status == 0 ); + + complete_printdir("/imfs" ); + complete_printdir("/imfs/" ); + complete_printdir("/imfs/." ); + complete_printdir("/imfs/testdir" ); + complete_printdir("/imfs/testdir/.." ); +} + #if defined(__rtems__) int test_main(void) #else @@ -442,7 +493,7 @@ int main( printf("Selected and Sorted Node Name: %s\n", namelist[i]->d_name ); } - + test_across_mount(); printf( "\n\n*** END OF READDIR TEST ***\n" ); exit(0); } -- cgit v1.2.3