summaryrefslogtreecommitdiffstats
path: root/c/src/tests/psxtests
diff options
context:
space:
mode:
authorJennifer Averett <Jennifer.Averett@OARcorp.com>1998-12-03 22:41:57 +0000
committerJennifer Averett <Jennifer.Averett@OARcorp.com>1998-12-03 22:41:57 +0000
commitc2f9b97543401e51fd2f72b71fa71bffbd209c12 (patch)
tree39ea2cbf28d7a58e978e1a63f2fae63f076f9f92 /c/src/tests/psxtests
parentAdded Comment that a result is valid at 4 or 5 seconds. (diff)
downloadrtems-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.scn15
-rw-r--r--c/src/tests/psxtests/psx13/test.c76
-rw-r--r--c/src/tests/psxtests/psxfile01/psxfile01.scn336
-rw-r--r--c/src/tests/psxtests/psxfile01/test.c1
-rw-r--r--c/src/tests/psxtests/psxmount/psxmount.scn86
-rw-r--r--c/src/tests/psxtests/psxmount/test.c241
-rw-r--r--c/src/tests/psxtests/psxreaddir/test.c45
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 );