diff options
author | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 1998-12-03 22:41:57 +0000 |
---|---|---|
committer | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 1998-12-03 22:41:57 +0000 |
commit | c2f9b97543401e51fd2f72b71fa71bffbd209c12 (patch) | |
tree | 39ea2cbf28d7a58e978e1a63f2fae63f076f9f92 /c/src/tests/psxtests | |
parent | Added Comment that a result is valid at 4 or 5 seconds. (diff) | |
download | rtems-c2f9b97543401e51fd2f72b71fa71bffbd209c12.tar.bz2 |
Cleaned up test.
Updated scn files to match present expected test output.
Diffstat (limited to 'c/src/tests/psxtests')
-rw-r--r-- | c/src/tests/psxtests/psx13/psx13.scn | 15 | ||||
-rw-r--r-- | c/src/tests/psxtests/psx13/test.c | 76 | ||||
-rw-r--r-- | c/src/tests/psxtests/psxfile01/psxfile01.scn | 336 | ||||
-rw-r--r-- | c/src/tests/psxtests/psxfile01/test.c | 1 | ||||
-rw-r--r-- | c/src/tests/psxtests/psxmount/psxmount.scn | 86 | ||||
-rw-r--r-- | c/src/tests/psxtests/psxmount/test.c | 241 | ||||
-rw-r--r-- | c/src/tests/psxtests/psxreaddir/test.c | 45 |
7 files changed, 480 insertions, 320 deletions
diff --git a/c/src/tests/psxtests/psx13/psx13.scn b/c/src/tests/psxtests/psx13/psx13.scn index e69de29bb2..0fe90db450 100644 --- a/c/src/tests/psxtests/psx13/psx13.scn +++ b/c/src/tests/psxtests/psx13/psx13.scn @@ -0,0 +1,15 @@ + +Files initialized successfully. +Testing device_lseek()... Success. +Testing dup()............ Success. +Testing dup2()........... Success. +Testing fdatasync()...... Success. +Testing umask().......... Success. +Testing utime().......... Success. +Testing pipe()........... Success. +Testing fsync().......... Success. +Testing pathconf()....... Success. +Testing fpathconf()...... Success. + + +*** END OF TEST PSX13 ***
\ No newline at end of file diff --git a/c/src/tests/psxtests/psx13/test.c b/c/src/tests/psxtests/psx13/test.c index 733b8824a7..06a35d623f 100644 --- a/c/src/tests/psxtests/psx13/test.c +++ b/c/src/tests/psxtests/psx13/test.c @@ -161,8 +161,8 @@ int DupTest(void) { if (fd2 != -1) { - fcntl(F_SETFL, fd1, O_APPEND); - flags = fcntl(F_GETFL, fd2); + fcntl(fd1, F_SETFL, O_APPEND); + flags = fcntl(fd2, F_GETFL); close (fd1); @@ -214,8 +214,8 @@ int Dup2Test(void) { if (error != -1) { - fcntl(F_SETFL, fd1, O_APPEND); - flags = fcntl(F_GETFL, fd1); + fcntl(fd1, F_SETFL, O_APPEND); + flags = fcntl(fd1, F_GETFL); flags = (flags & O_APPEND); retval = (flags == O_APPEND); @@ -600,76 +600,74 @@ int main( #endif { if (InitFiles() == TRUE) { - puts ("\nFiles initialized successfully.\n"); + printf ("\nFiles initialized successfully.\n"); - puts ("Testing device_lseek()..."); + printf ("Testing device_lseek()... "); if (DeviceLSeekTest() == TRUE) - puts ("Success.\n"); + printf ("Success.\n"); else - puts ("Failed!!!\n"); + printf ("Failed!!!\n"); - puts ("Testing dup()..."); + printf ("Testing dup()............ "); if (DupTest() == TRUE) - puts ("Success.\n"); + printf ("Success.\n"); else - puts ("Failed!!!\n"); + printf ("Failed!!!\n"); - puts ("Testing dup2()..."); + printf ("Testing dup2()........... "); if (Dup2Test() == TRUE) - puts ("Success.\n"); + printf ("Success.\n"); else - puts ("Failed!!!\n"); + printf ("Failed!!!\n"); - puts ("Testing fdatasync()..."); + printf ("Testing fdatasync()...... "); if (FDataSyncTest() == TRUE) - puts ("Success.\n"); + printf ("Success.\n"); else - puts ("Failed!!!\n"); + printf ("Failed!!!\n"); - puts ("Testing umask()..."); + printf ("Testing umask().......... "); if (UMaskTest() == TRUE) - puts ("Success.\n"); + printf ("Success.\n"); else - puts ("Failed!!!\n"); + printf ("Failed!!!\n"); - puts ("Testing utime()..."); + printf ("Testing utime().......... "); if (UTimeTest() == TRUE) - puts ("Success.\n"); + printf ("Success.\n"); else - puts ("Failed!!!\n"); + printf ("Failed!!!\n"); - puts ("Testing pipe()..."); + printf ("Testing pipe()........... "); if (PipeTest() == TRUE) - puts ("Success.\n"); + printf ("Success.\n"); else - puts ("Failed!!!\n"); + printf ("Failed!!!\n"); - puts ("Testing fsync()..."); + printf ("Testing fsync().......... "); if (FSyncTest() == TRUE) - puts ("Success.\n"); + printf ("Success.\n"); else - puts ("Failed!!!\n"); + printf ("Failed!!!\n"); - puts ("Testing pathconf()..."); + printf ("Testing pathconf()....... "); if (PathConfTest() == TRUE) - puts ("Success.\n"); + printf ("Success.\n"); else - puts ("Failed!!!\n"); + printf ("Failed!!!\n"); - puts ("Testing fpathconf()..."); + printf ("Testing fpathconf()...... "); if (FPathConfTest() == TRUE) - puts ("Success.\n"); + printf ("Success.\n"); else - puts ("Failed!!!\n"); + printf ("Failed!!!\n"); } else - puts ("\n\nError opening files for write!!!!\n"); + printf ("\n\nError opening files for write!!!!\n"); - puts( "\n\n*** XXX ***" ); - - puts( "\n\n*** END OF TEST PSX13 ***" ); + printf( "\n\n*** END OF TEST PSX13 ***" ); exit(0); } diff --git a/c/src/tests/psxtests/psxfile01/psxfile01.scn b/c/src/tests/psxtests/psxfile01/psxfile01.scn index e105dafb89..bc051aae14 100644 --- a/c/src/tests/psxtests/psxfile01/psxfile01.scn +++ b/c/src/tests/psxtests/psxfile01/psxfile01.scn @@ -1,168 +1,168 @@ -
-
-*** FILE TEST 1 ***
-*************** Dump of Entire IMFS ***************
-/
- dev/
- console (device 0, 0)
-*************** End of Dump ***************
-stat of /dev/console
- st_dev (0x0:0x0)
- st_ino 3
- mode = 00020771
- nlink = 1
- uid = 0
- gid = 0
- atime = Fri Jan 01 00:00:00 1988
- mtime = Fri Jan 01 00:00:00 1988
- ctime = Fri Jan 01 00:00:00 1988
-
-mkdir /dev/tty
-
-mkdir /usr
-mkdir /etc
-mkdir /tmp
-mkdir /tmp/..
-mkdir /tmp/
-mkdir /j/j1
-mkdir tmp
-
-rmdir /usr
-mkdir /etc/passwd/j
-open /tmp/joel - should fail with ENOENT
-open /tmp/j
-open returned file descriptor 3
-close /tmp/j
-unlink /tmp/j
-(0)the first write!!!
-
-(10)the first write!!!
-
-stat( /tmp/joel ) returned st_dev (0x1a7f8:0x3e86f0)
- st_ino d
- mode = 00100700
- nlink = 1
- uid = 0
- gid = 0
- atime = Sat Dec 31 09:00:00 1988
- mtime = Sat Dec 31 09:00:00 1988
- ctime = Sat Dec 31 09:00:00 1988
-(514)the first write!!!
-
-(513)the first write!!!
-
-(24)the first write!!!
-
-(2)the first write!!!
-
-(1)the first write!!!
-
-(0)the first write!!!
-
-(0)rst write!!!
-
-(513)the first write!!!
-
-(139743)
-stat( /tmp/joel ) returned st_dev (0x1a7f8:0x3e86f0)
- st_ino e
- mode = 00100700
- nlink = 1
- uid = 0
- gid = 0
- atime = Sat Dec 31 09:00:00 1988
- mtime = Sat Dec 31 09:00:00 1988
- ctime = Sat Dec 31 09:00:00 1988
-stat of /tmp/j
-stat(/tmp/j) returned -1 (errno=2)
- st_dev (0x0:0x0)
- st_ino 3
- mode = 00020771
- nlink = 1
- uid = 0
- gid = 0
- atime = Fri Jan 01 00:00:00 1988
- mtime = Fri Jan 01 00:00:00 1988
- ctime = Fri Jan 01 00:00:00 1988
-fopen of /tmp/j
-fprintf to /tmp/j
-(1) 26 characters written to the file
-(2) 26 characters written to the file
-(3) 26 characters written to the file
-(4) 26 characters written to the file
-(5) 26 characters written to the file
- st_dev (0x0:0x0)
- st_ino f
- mode = 00100660
- nlink = 1
- uid = 0
- gid = 0
- atime = Sat Dec 31 09:00:00 1988
- mtime = Sat Dec 31 09:00:00 1988
- ctime = Sat Dec 31 09:00:00 1988
-This is call 1 to fprintf
-This is call 2 to fprintf
-This is call 3 to fprintf
-This is call 4 to fprintf
-This is call 5 to fprintf
- st_dev (0x0:0x0)
- st_ino f
- mode = 00100660
- nlink = 1
- uid = 0
- gid = 0
- atime = Sat Dec 31 09:00:01 1988
- mtime = Sat Dec 31 09:00:00 1988
- ctime = Sat Dec 31 09:00:00 1988
-*************** Dump of Entire IMFS ***************
-/
- dev/
- console (device 0, 0)
- tty/
- S3 (device 255, 128)
- test_console (device 0, 0)
- etc/
- passwd (file 0 0x0 0x0 0x0)
- tmp/
- joel (file 279487 0x3d5ac0 0x3d5570 0x3d5020)
- j (file 130 0x37f530 0x0 0x0)
-*************** End of Dump ***************
-truncate /tmp/j to length of 40
- st_dev (0x0:0x0)
- st_ino f
- mode = 00100660
- nlink = 1
- uid = 0
- gid = 0
- atime = Sat Dec 31 09:00:02 1988
- mtime = Sat Dec 31 09:00:00 1988
- ctime = Sat Dec 31 09:00:00 1988
-*************** Dump of Entire IMFS ***************
-/
- dev/
- console (device 0, 0)
- tty/
- S3 (device 255, 128)
- test_console (device 0, 0)
- etc/
- passwd (file 0 0x0 0x0 0x0)
- tmp/
- j (file 40 0x37f530 0x0 0x0)
-*************** End of Dump ***************
-truncate /tmp/j to length of 0
-truncate /tmp to length of 0 should fail with EISDIR
-
-21: Is a directory
-*************** Dump of Entire IMFS ***************
-/
- dev/
- console (device 0, 0)
- tty/
- S3 (device 255, 128)
- test_console (device 0, 0)
- etc/
- passwd (file 0 0x0 0x0 0x0)
- tmp/
- j (file 0 0x37f530 0x0 0x0)
-*************** End of Dump ***************
-*** END OF FILE TEST 1 ***
+ + +*** FILE TEST 1 *** +*************** Dump of Entire IMFS *************** +/ + dev/ + console (device 0, 0) +*************** End of Dump *************** +stat of /dev/console + st_dev (0x0:0x0) + st_ino 3 + mode = 00020771 + nlink = 1 + uid = 0 + gid = 0 + atime = Fri Jan 01 00:00:00 1988 + mtime = Fri Jan 01 00:00:00 1988 + ctime = Fri Jan 01 00:00:00 1988 + +mkdir /dev/tty + +mkdir /usr +mkdir /etc +mkdir /tmp +mkdir /tmp/.. +mkdir /tmp/ +mkdir /j/j1 +mkdir tmp + +rmdir /usr +mkdir /etc/passwd/j +open /tmp/joel - should fail with ENOENT +open /tmp/j +open returned file descriptor 3 +close /tmp/j +unlink /tmp/j +(0)the first write!!! + +(10)the first write!!! + +stat( /tmp/joel ) returned st_dev (0x1a7f8:0x3e86f0) + st_ino d + mode = 00100700 + nlink = 1 + uid = 0 + gid = 0 + atime = Sat Dec 31 09:00:00 1988 + mtime = Sat Dec 31 09:00:00 1988 + ctime = Sat Dec 31 09:00:00 1988 +(514)the first write!!! + +(513)the first write!!! + +(24)the first write!!! + +(2)the first write!!! + +(1)the first write!!! + +(0)the first write!!! + +(0)rst write!!! + +(513)the first write!!! + +(139743) +stat( /tmp/joel ) returned st_dev (0x1a7f8:0x3e86f0) + st_ino e + mode = 00100700 + nlink = 1 + uid = 0 + gid = 0 + atime = Sat Dec 31 09:00:00 1988 + mtime = Sat Dec 31 09:00:00 1988 + ctime = Sat Dec 31 09:00:00 1988 +stat of /tmp/j +stat(/tmp/j) returned -1 (errno=2) + st_dev (0x0:0x0) + st_ino 3 + mode = 00020771 + nlink = 1 + uid = 0 + gid = 0 + atime = Fri Jan 01 00:00:00 1988 + mtime = Fri Jan 01 00:00:00 1988 + ctime = Fri Jan 01 00:00:00 1988 +fopen of /tmp/j +fprintf to /tmp/j +(1) 26 characters written to the file +(2) 26 characters written to the file +(3) 26 characters written to the file +(4) 26 characters written to the file +(5) 26 characters written to the file + st_dev (0x0:0x0) + st_ino f + mode = 00100660 + nlink = 1 + uid = 0 + gid = 0 + atime = Sat Dec 31 09:00:00 1988 + mtime = Sat Dec 31 09:00:00 1988 + ctime = Sat Dec 31 09:00:00 1988 +This is call 1 to fprintf +This is call 2 to fprintf +This is call 3 to fprintf +This is call 4 to fprintf +This is call 5 to fprintf + st_dev (0x0:0x0) + st_ino f + mode = 00100660 + nlink = 1 + uid = 0 + gid = 0 + atime = Sat Dec 31 09:00:01 1988 + mtime = Sat Dec 31 09:00:00 1988 + ctime = Sat Dec 31 09:00:00 1988 +*************** Dump of Entire IMFS *************** +/ + dev/ + console (device 0, 0) + tty/ + S3 (device 255, 128) + test_console (device 0, 0) + etc/ + passwd (file 0 0x0 0x0 0x0) + tmp/ + joel (file 279487 0x3d5ac0 0x3d5570 0x3d5020) + j (file 130 0x37f530 0x0 0x0) +*************** End of Dump *************** +truncate /tmp/j to length of 40 + st_dev (0x0:0x0) + st_ino f + mode = 00100660 + nlink = 1 + uid = 0 + gid = 0 + atime = Sat Dec 31 09:00:02 1988 + mtime = Sat Dec 31 09:00:00 1988 + ctime = Sat Dec 31 09:00:00 1988 +*************** Dump of Entire IMFS *************** +/ + dev/ + console (device 0, 0) + tty/ + S3 (device 255, 128) + test_console (device 0, 0) + etc/ + passwd (file 0 0x0 0x0 0x0) + tmp/ + j (file 40 0x37f530 0x0 0x0) +*************** End of Dump *************** +truncate /tmp/j to length of 0 +truncate /tmp to length of 0 should fail with EISDIR + +21: Is a directory +*************** Dump of Entire IMFS *************** +/ + dev/ + console (device 0, 0) + tty/ + S3 (device 255, 128) + test_console (device 0, 0) + etc/ + passwd (file 0 0x0 0x0 0x0) + tmp/ + j (file 0 0x37f530 0x0 0x0) +*************** End of Dump *************** +*** END OF FILE TEST 1 *** diff --git a/c/src/tests/psxtests/psxfile01/test.c b/c/src/tests/psxtests/psxfile01/test.c index ef0d737d44..bbfaafdace 100644 --- a/c/src/tests/psxtests/psxfile01/test.c +++ b/c/src/tests/psxtests/psxfile01/test.c @@ -238,6 +238,7 @@ int main( status = rmdir ("/fred"); assert (status == -1); + assert( errno == ENOENT ); status = mknod( "/dev/test_console", S_IFCHR, 0LL ); assert( !status ); diff --git a/c/src/tests/psxtests/psxmount/psxmount.scn b/c/src/tests/psxtests/psxmount/psxmount.scn index e69de29bb2..a186517e4f 100644 --- a/c/src/tests/psxtests/psxmount/psxmount.scn +++ b/c/src/tests/psxtests/psxmount/psxmount.scn @@ -0,0 +1,86 @@ + + +*** MOUNT/UNMOUNT TEST *** + +chdir to the root directory +chdir() status : 0 + + +Creating a series of directories under / +Creating : a 0 0 Success +Creating : b 0 0 Success +Creating : c 0 0 Success +Creating : d 0 0 Success +Creating : e 0 0 Success +Creating : f 0 0 Success +Creating : c/y 0 0 Success +Creating : c/z 0 0 Success +Creating : c/x 0 0 Success +Creating : c/y/a3333 0 0 Success +Creating : c/y/j123 0 0 Success +Creating : c/y/my_mount_point 0 0 Success +Creating : c/y/my_mount_point/my_dir 0 0 Success +Creating : c/z/my_mount_point 0 0 Success +create /b/my_file +Verify /b/my_file +create c/y/my_mount_point/my_dir/d +Verify c/y/my_mount_point/my_dir/d +Attempting to mount IMFS file system at /c/z/my_mount_point +2nd file system successfully mounted at /c/z/my_mount_point + +chdir to /c/z/my_mount_point. +chdir() status : 0 + + +Creating a series of directories under /c/z/my_mount_point +Creating: a 0 2 Success +Creating: b 0 2 Success +Creating: c 0 2 Success +Creating: d 0 2 Success +Creating: e 0 2 Success +Creating: f 0 2 Success +Creating: c/y 0 2 Success +Creating: c/z 0 2 Success +Creating: c/x 0 2 Success +Creating: c/y/a3333 0 2 Success +Creating: c/y/j123 0 2 Success +Creating: c/y/my_mount_point 0 2 Success +Creating: c/y/my_mount_point/my_dir 0 2 Success +Creating: c/y/my_mount_point/my_dir/d 0 2 Success +Creating: c/z/my_mount_point 0 2 Success +Creating: /c/z/my_mount_point/a/../../my_mount_point/a/g 0 2 Success + +chdir to / +chdir() status : 0 + +Unmount status: 0 +Mount a NULL file system and verify EINVAL +mount with option RA should fail with EINVAL +Mount a Read Only filesystem at /c/y/my_mount_point +Read only file system successfully mounted at /c/y/my_mount_point +create c/y/my_mount_point/../../y/my_mount_point/new_dir +Verify a mount point retruns EBUSY for another mount +Mount on a file should fail with ENOTDIR +Create and chdir to /c/y/my_mount_point/mydir + unmount of /c/y/my_mount_point should fail with EBUSY +chdir to / and verify we can unmount /c/y/my_mount_point + unmount /c/y/my_mount_point + unmount /b/mount_point should fail with EINVAL +Mount /c/y/my_mount_point +Create and open /c/y/my_mount_point/my_file + +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 +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 +Verify a symbolic link across file systems works +unmount /c/y/my_mount_point/my_dir +Verify the symbolic link now fails +unmount /c/y/my_mount_point + + +*** END OF MOUNT/UNMOUNT TEST *** diff --git a/c/src/tests/psxtests/psxmount/test.c b/c/src/tests/psxtests/psxmount/test.c index 4555709bd7..a2a249a35d 100644 --- a/c/src/tests/psxtests/psxmount/test.c +++ b/c/src/tests/psxtests/psxmount/test.c @@ -99,6 +99,11 @@ int main( printf( "\n\n*** MOUNT/UNMOUNT TEST ***\n" ); + /* + * Change directory to the root and create files under + * the base file system. + */ + printf( "\nchdir to the root directory\n" ); status = chdir( "/" ); printf( "chdir() status : %d\n\n", status ); @@ -108,7 +113,7 @@ int main( while ( strcmp(dnames[i], "END") != 0 ) { status = mkdir( dnames[i], 0777 ); - printf("Creating directory: %s %d %d ", dnames[i], status, errno ); + printf("Creating : %25s %d %d ", dnames[i], status, errno ); if ( status == 0 ) printf(" Success\n"); else @@ -117,16 +122,36 @@ int main( i++; } + /* + * Create a Files with all rwx for others group and user. Verify + * the created file. + */ + + printf("create /b/my_file\n"); fd = open ("/b/my_file", O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); + assert( fd != 0 ); close (fd); + + printf("Verify /b/my_file\n"); fd = open("/b/my_file", S_IRWXU|S_IRWXG|S_IRWXO); + assert( fd != 0 ); close( fd ); + + printf("create c/y/my_mount_point/my_dir/d\n"); fd = open ("c/y/my_mount_point/my_dir/d", O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); + assert( fd != 0 ); close (fd); + + printf("Verify c/y/my_mount_point/my_dir/d\n"); fd = open("c/y/my_mount_point/my_dir/d", S_IRWXU|S_IRWXG|S_IRWXO); + assert( fd != 0 ); close( fd ); + /* + * Mount an the IMFS file system on the base file system. + */ + printf("Attempting to mount IMFS file system at /c/z/my_mount_point \n"); status = mount( &mt_entry, @@ -142,8 +167,12 @@ int main( printf("2nd file system successfully mounted at /c/z/my_mount_point \n"); } - printf( "\nchdir to /c/z/my_mount_point the mount point of the \n" ); - printf( "second file system \n" ); + /* + * Change directory to the mount point and create a group of files under + * the mounted file system. + */ + + printf( "\nchdir to /c/z/my_mount_point.\n" ); status = chdir( "/c/z/my_mount_point" ); printf( "chdir() status : %d\n\n", status ); @@ -152,7 +181,7 @@ int main( while ( strcmp(fnames[i], "END") != 0 ) { status = mkdir( fnames[i], 0777 ); - printf("Creating directory: %s %d %d ", fnames[i], status, errno ); + printf("Creating: %46s %d %d ", fnames[i], status, errno ); if ( status == 0 ) printf(" Success\n"); else { @@ -167,7 +196,7 @@ int main( i++; } - printf( "\nchdir to / the mount point of the first file system \n" ); + printf( "\nchdir to /\n" ); status = chdir( "/" ); printf( "chdir() status : %d\n\n", status ); @@ -179,28 +208,12 @@ int main( status = unmount( "/c/z/my_mount_point" ); printf( " %d\n", status ); -/* - status = chmod( "c/y/j123", S_IRUSR ); - assert( status == 0 ); - printf("Attempting to mount IMFS file system at c/y/j123\n"); - status = mount( - &mt_entry, - &IMFS_ops, - "RO", - NULL, - "c/y/j123" ); - assert( status == 0 ); - - status = mkdir( "c/y/j123/new_dir", S_IRUSR ); - assert( status == -1 ); - - printf("Unmount c/y/j123\n"); - status = unmount( "c/y/j123" ); - assert( status == 0 ); -*/ + /* + * Mount a NULL filesystem and verify it fails. + */ - printf(" File system type should be invalid.\n"); + printf("Mount a NULL file system and verify EINVAL\n"); status = mount( &mt_entry, NULL, @@ -210,7 +223,25 @@ int main( assert( status == -1 ); assert( errno == EINVAL ); - printf("Attempting to mount IMFS file system at /c/y/my_mount_point \n"); + /* + * Verify mount with option RA fails with EINVAL + */ + + printf("mount with option RA should fail with EINVAL\n"); + status = mount( + &mt_entry, + &IMFS_ops, + "RA", + NULL, + "/c/y/my_mount_point" ); + assert( status == -1 ); + assert( errno == EINVAL ); + + /* + * Mount a Read Only File system. + */ + + printf("Mount a Read Only filesystem at /c/y/my_mount_point \n"); status = mount( &mt_entry, &IMFS_ops, @@ -222,18 +253,26 @@ int main( printf(" NULL mount table entry was returned\n"); } else { - printf("3rd file system successfully mounted at /c/y/my_mount_point \n"); + printf("Read only file system successfully mounted at /c/y/my_mount_point \n"); } + /* + * Create a directory that passes through the read only file system. + */ + + printf("create c/y/my_mount_point/../../y/my_mount_point/new_dir\n"); status = mkdir("c/y/my_mount_point/../../y/my_mount_point/new_dir",S_IRWXU ); assert( status == 0 ); - status = stat("c/y/my_mount_point/../../y/my_mount_point/new_dir",&statbuf ); assert( status == 0 ); status = stat("c/y/my_mount_point/new_dir/..", &statbuf ); assert( status == 0 ); - printf("Mount another file system at /c/y/my_mount_point should fail with EBUSY\n"); + /* + * Attempt to mount a second file system at a used mount point. + */ + + printf("Verify a mount point retruns EBUSY for another mount\n"); status = mount( &mt_entry, &IMFS_ops, @@ -243,7 +282,11 @@ int main( assert( status == -1 ); assert( errno == EBUSY); - printf("Mount /b/my_file should fail in rtems_filesystem_evaluate_path\n"); + /* + * Attempt to mount at a file. + */ + + printf("Mount on a file should fail with ENOTDIR\n"); status = mount( &mt_entry, &IMFS_ops, @@ -251,24 +294,14 @@ int main( NULL, "/b/my_file" ); assert( status == -1 ); - - printf("Unmount /c/y/my_mount_point\n"); - status = unmount( "/c/y/my_mount_point" ); - assert( status == 0 ); - -/* What's wrong with this? It should be causing failure at unmount.c:87, - * instead, it's returning a status of 0. - */ + assert( errno == ENOTDIR ); - printf("Mount /c/y/my_mount_point to cause error\n"); - status = mount( - &mt_entry, - &IMFS_ops, - "RO", - NULL, - "/c/y/my_mount_point" ); + + /* + * Verify we cannot unmount a file system while we are in it. + */ - assert( status == 0 ); + printf("Create and chdir to /c/y/my_mount_point/mydir\n"); status = mkdir( "/c/y/my_mount_point/mydir", 0777); assert( status == 0 ); @@ -280,6 +313,11 @@ int main( assert( status == -1 ); assert( errno == EBUSY ); + /* + * Chdir to root and verify we can unmount the file system now. + */ + + printf("chdir to / and verify we can unmount /c/y/my_mount_point\n"); status = chdir( "/" ); assert( status == 0 ); @@ -287,9 +325,18 @@ int main( status = unmount( "/c/y/my_mount_point" ); assert( status == 0 ); - printf(" unmount /b/mount_point should fail\n"); + /* + * Attempt to unmount a directory that does not exist. + */ + + printf(" unmount /b/mount_point should fail with EINVAL\n"); status = unmount( "/b/mount_point" ); assert( status == -1 ); + assert( errno == ENOENT ); + + /* + * Remount the filesystem. + */ printf("Mount /c/y/my_mount_point\n"); status = mount( @@ -300,9 +347,13 @@ int main( "/c/y/my_mount_point" ); assert( status == 0 ); - /* XXX - There is an error in open that calculates incorrect mode. */ + /* + * Create a file and directory then open the directory. + * Verify unmount will return EBUSY while directory is open. + */ + printf("Create and open /c/y/my_mount_point/my_file\n"); - fd = open( "/c/y/my_mount_point/my_file", O_CREAT ); + fd = open( "/c/y/my_mount_point/my_file", O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert( fd != -1 ); status = close( fd ); assert( status == 0 ); @@ -316,27 +367,25 @@ int main( printf("Unmount /c/y/my_mount_point should fail with EBUSY\n"); status = unmount( "/c/y/my_mount_point" ); assert( status == -1 ); + assert( errno == EBUSY ); printf("Close /c/y/my_mount_point/my_dir\n"); status = closedir( directory ); assert( status == 0 ); - printf("Unmount /c/y/my_mount_point/d should fail at 107\n"); - status = unmount( "/c/y/my_mount_point/d" ); - assert( status == -1 ); - - printf("unmount /c/y/my_mount_point\n"); - status = unmount( "/c/y/my_mount_point" ); - assert( status == 0 ); + /* + * Attempt to unmount a directory that is not a mount point. + */ - printf("mount with option RA should fail with EINVAL\n"); - status = mount( - &mt_entry, - &IMFS_ops, - "RA", - NULL, - "/c/y/my_mount_point" ); + printf("Unmount /c/y/my_mount_point/my_dir\n"); + status = unmount( "/c/y/my_mount_point/my_dir" ); assert( status == -1 ); + assert( errno == EACCES ); + + /* + * Verify a file system can not be unmounted with a mounted file system + * in it. + */ printf("Mount a file system at /c/y/my_mount_point/my_dir\n"); status = mount( @@ -347,61 +396,49 @@ int main( "/c/y/my_mount_point/my_dir"); assert( status == 0 ); - printf("unmount /c/y/my_mount_point/my_dir should fail in "); - printf("file_systems_below_this_mountpoint \n"); - status = unmount( "/c/y/my_mount_point/my_dir" ); - assert( status == 0 ); - - printf("mount first filesystem /c/y/my_mount_point/\n"); - status = mount( - &mt_entry, - &IMFS_ops, - "RW", - NULL, - "/c/y/my_mount_point" ); - assert( status == 0 ); - - printf("\nmkdir /c/y/my_mount_point/my_dir\n"); - status = mkdir( "/c/y/my_mount_point/my_dir", S_IRWXU ); - assert( status == 0 ); + printf("unmount /c/y/my_mount_point should fail with EBUSY\n"); + status = unmount( "/c/y/my_mount_point" ); + assert( status == -1 ); + assert( errno == EBUSY ); - printf("Mount another filesystem at /c/y/my_mount_point/my_dir\n"); - status = mount( - &mt_entry, - &IMFS_ops, - "RW", - NULL, - "/c/y/my_mount_point/my_dir"); - assert( status == 0 ); + /* + * Verify you cannot create a hard link across mounted file systems. + */ + printf("Verify a hard link across filesystems fails with EXDEV\n"); status = mkdir( "/c/y/my_mount_point/my_dir2", S_IRWXU ); - assert( status != -1 ); + assert( status == 0 ); status = link( "/c/y/my_mount_point/my_dir2", "/c/y/my_mount_point/my_dir/my_link" ); assert( status == -1 ); + assert( errno == EXDEV ); - printf("unmount /c/y/my_mount_point\n"); - status = unmount( "/c/y/my_mount_point" ); - assert( status == -1 ); + /* + * Create a symbolic link across mountpoints. + */ + + printf("Verify a symbolic link across file systems works\n"); + status = symlink( "/c/y/my_mount_point/my_dir2", "/c/y/my_mount_point/my_dir/my_link" ); + assert( status == 0 ); + status = stat( "/c/y/my_mount_point/my_dir/my_link", &statbuf ); + assert( status == 0 ); printf("unmount /c/y/my_mount_point/my_dir\n"); status = unmount( "/c/y/my_mount_point/my_dir" ); assert( status == 0 ); + /* + * Verify symblic link no longer works. + */ + + printf("Verify the symbolic link now fails\n"); + status = stat( "/c/y/my_mount_point/my_dir/my_link", &statbuf ); + assert( status != 0 ); + printf("unmount /c/y/my_mount_point\n"); status = unmount( "/c/y/my_mount_point" ); assert( status == 0 ); -/* printf("Mount /c/y/my_mount_point\n"); - status = mount( - &mt_entry, - &IMFS_ops, - "RO", - NULL, - "/c/y/my_mount_point" ); - assert( status == 0 ); -*/ - printf( "\n\n*** END OF MOUNT/UNMOUNT TEST ***\n" ); exit(0); } diff --git a/c/src/tests/psxtests/psxreaddir/test.c b/c/src/tests/psxtests/psxreaddir/test.c index be5751d580..f4e07f4dcc 100644 --- a/c/src/tests/psxtests/psxreaddir/test.c +++ b/c/src/tests/psxtests/psxreaddir/test.c @@ -205,68 +205,95 @@ int main( i++; } + /* + * Create files under many and open the directory. + */ + + printf("Create a lot of files\n"); status = mkdir( "/many", 0x1c0 ); status = chdir( "/many" ); - for (i = 0; i<=44; i++) { - fd = open (many_files[i], O_CREAT); + for (i = 0; i<44; i++) { + printf(" Create %s\n", many_files[i]); + fd = open (many_files[i], O_CREAT, S_IRWXU); close (fd); } + printf("Open /many and print the directory\n"); directory_not = opendir( "/many" ); printdir ( directory_not ); d_not = readdir( directory_not ); - fd = open ("/b/my_file", O_CREAT); + printf("open /b/myfile\n"); + fd = open ("/b/my_file", O_CREAT, S_IRWXU); assert( fd != -1 ); close (fd); + printf("scandir a file status: "); status = scandir( "/b/my_file", &namelist, select1, NULL ); + printf("%d\n", status); - fd = open( "/b/new_file", O_CREAT ); + printf("Open /b/new_file\n"); + fd = open( "/b/new_file", O_CREAT, S_IRWXU ); assert( fd != -1 ); + printf("fcntl F_SETFD should return 0\n"); status = fcntl( fd, F_SETFD, 1 ); assert( status == 0 ); + + printf("fcntl F_SETFD should return 1\n"); status = fcntl( fd, F_GETFD, 1 ); assert( status == 1 ); - status = fcntl( fd, F_DUPFD, 1 ); - assert ( status == -1 ); + printf("fcntl F_DUPFD should return 0\n"); + status = fcntl( fd, F_DUPFD, 0 ); + assert ( status == 0 ); + printf("fcntl F_GETFL should return -1\n"); status = fcntl( fd, F_GETFL, 1 ); assert ( status == -1 ); + printf("fcntl F_SETFL should return -1\n"); status = fcntl( fd, F_SETFL, 1 ); assert ( status == -1 ); + printf("fcntl F_GETLK should return -1\n"); status = fcntl( fd, F_GETLK, 1 ); assert ( status == -1 ); + printf("fcntl F_SETLK should return -1\n"); status = fcntl( fd, F_SETLK, 1 ); assert ( status == -1 ); + printf("fcntl F_SETLKW should return -1\n"); status = fcntl( fd, F_SETLKW, 1 ); assert ( status == -1 ); + printf("fcntl F_SETOWN should return -1\n"); status = fcntl( fd, F_SETOWN, 1 ); assert ( status == -1 ); + printf("fcntl F_GETOWN should return -1\n"); status = fcntl( fd, F_GETOWN, 1 ); assert ( status == -1 ); + printf("fcntl invalid argument should return -1\n"); status = fcntl( fd, 0xb, 1 ); + printf("Status %d\n",status); assert( status == -1 ); + printf("opendir and readdir /b/myfile\n"); directory_not = opendir ("/b/my_file"); d_not = readdir(directory_not); + printf("opendir and readdir\n"); directory_not = opendir ("/a"); d_not = readdir (directory_not); + printf("chdir to /b/myfile\n"); status = chdir ("/b/my_file"); assert (status == -1); @@ -275,11 +302,9 @@ int main( printf("status for stat : %d, size of directory: %d\n\n", status,(int)s.st_size); - puts( "\nOpening directory /" ); + puts( "\nOpen and print directory /" ); directory = opendir("/"); - assert( directory ); - printdir(directory); printf("\nmkdir /d/my_dir\n"); @@ -305,9 +330,7 @@ int main( printf( "\nOpening directory /c/y\n" ); directory3 = opendir("/c/y"); - assert( directory3 ); - printdir(directory3); status = closedir( directory3 ); |