4 # VERY basic functionality test for sysio. To run, just type ./test_all.pl
5 # Absolutely no guarantees for running on alpha/cplant
15 my $is_broke = 1; # Don't test certain areas known to not work on Cplant
16 my $arg_count = @ARGV;
17 foreach my $arg (@ARGV) {
18 if ($arg eq "-alpha") {
19 $alpha_arg = "-alpha";
20 } elsif ($arg eq "-nosystem") {
24 my $alpha_env = $ENV{"IS_ALPHA"};
25 # Check the environment vars
26 if (defined($alpha_env) && ($alpha_env eq "yes")) {
27 $alpha_arg = "-alpha";
36 my $testdir = $FindBin::Bin;
38 my $namespace_env = "SYSIO_NAMESPACE";
39 my $home = $ENV{"HOME"};
40 my $auto_mount = $ENV{"SYSIO_AUTOMOUNT"};
43 if ((defined($auto_mount)) && ($auto_mount == "xyes")) {
47 # Add a /auto directory for automounted file systems. We
48 # craft one automount that mounts /usr/home from the native
49 # file system. Further automounts in the sub-mounts are not enabled.
52 {mnt, dev=\"incore:0755+0+0\",dir=\"/mnt\",fl=2} \
53 {creat, ft=dir,nm=\"/mnt/home\",pm=0755,ow=0,gr=0} \
54 {creat, ft=file,nm=\"/mnt/home/.mount\",pm=0600, \
55 str=\"native:/usr/home\"}";
57 $ENV{$namespace_env} = "\
58 {mnt, dev=\"native:/\",dir=/,fl=$root_flags} \
59 {mnt, dev=\"incore:0755+0+0\",dir=\"/dev\"} \
60 {creat, ft=chr,nm=\"/dev/stdin\",pm=0400,mm=0+0} \
61 {creat, ft=chr,nm=\"/dev/stdout\",pm=0200,mm=0+1} \
62 {creat, ft=chr,nm=\"/dev/stderr\",pm=0200,mm=0+2} \
63 {creat, ft=dir,nm=\"/dev/fd\",pm=0755,ow=0,gr=0} \
64 {creat, ft=chr,nm=\"/dev/fd/0\",pm=0400,mm=0+0} \
65 {open, nm=\"/dev/fd/0\",fd=0,m=0} \
66 {creat, ft=chr,nm=\"/dev/fd/1\",pm=0200,mm=0+1} \
67 {open, nm=\"/dev/fd/1\",fd=1,m=1} \
68 {creat, ft=chr,nm=\"/dev/fd/2\",pm=0200,mm=0+2} \
69 {open, nm=\"/dev/fd/2\",fd=2,m=1} \
75 if ($use_system == 1) {
76 # Will use this directory...
77 system("mkdir -p $cwd/tmp_dir");
79 # Create a couple of files and subdirectories for use in the tests
80 system("mkdir -p $cwd/tmp_dir/test1");
81 system("mkdir -p $cwd/tmp_dir/test2");
83 system("cp $testdir/helper.pm $cwd/tmp_dir/test1");
85 $res = `perl $testdir/setup.pl $alpha_arg $cwd`;
87 if ($res ne "setup successful") {
88 print "Test setup failed with $res, bailing out\n";
94 if (($alpha_arg eq "") || ($is_broke == 0)) {
96 $res = `perl $testdir/test_list.pl $alpha_arg $cwd/tmp_dir`;
98 if ($res ne "list test successful") {
99 print "Basic getdirentries test failed with message: $res\n";
102 print "test_list finished successfully\n";
108 my $path1 = abs_path($testdir);
109 my @resarr = `perl $testdir/test_path.pl $alpha_arg $path1 $cwd $cwd/tmp_dir`;
110 $res = $path1.": d\n";
111 if ($resarr[0] ne $res) {
112 print "path test returned $resarr[0] instead of $res\n";
116 if ($resarr[1] ne $res) {
117 print "path test returned $resarr[1] instead of $res\n";
120 $res = $cwd."/tmp_dir: d\n";
121 if ($resarr[2] ne $res) {
122 print "path test returned $resarr[2] instead of $res\n";
125 print "test_path finished successfully\n";
132 $res = `perl $testdir/test_getcwd.pl $alpha_arg $cwd/tmp_dir/test1`;
134 if ($res ne "getcwd test successful") {
135 print "getcwd test failed with message: $res\n";
139 print "test_getcwd finished successfully\n";
143 $res = `perl $testdir/test_copy.pl $alpha_arg $cwd/tmp_dir/test1/helper.pm $cwd/tmp_dir/helper.pm`;
145 if ($res ne "copy test successful") {
146 print "copy test failed with message: $res\n";
150 print "test_copy finished successfully\n";
154 $res = `perl $testdir/test_stats.pl $alpha_arg $use_system $cwd/tmp_dir/test1/helper.pm`;
156 if ($res ne "stat test successful") {
157 print "stat test failed with message: $res\n";
161 print "test_stats finished successfully\n";
165 $res = `echo "foobar" | perl $testdir/test_copy.pl $alpha_arg -o /dev/stdin /dev/stdout`;
167 if ($res ne "copy test successful") {
168 print "stdfd test failed with message: $res\n";
172 print "test_stdfd finished successfully\n";
176 $res = `perl $testdir/test_symlink.pl $alpha_arg $cwd/tmp_dir/test1/helper.pm $cwd/tmp_dir/helper.foo`;
178 if ($res ne "Symlink test successful") {
179 print "symlink test failed with message: $res\n";
183 print "test_symlink finished successfully\n";
187 $res = `perl $testdir/test_rw.pl $alpha_arg $cwd/tmp_dir/tmp.foo`;
189 if ($res ne "rw test successful") {
190 print "rw test failed with message: $res\n";
194 print "rw test finished successfully\n";
198 $res = `perl $testdir/test_strided.pl $alpha_arg $cwd/tmp_dir/tmp2.foo`;
200 if ($res ne "strided IO test successful") {
201 print "strided IO test failed with message: $res\n";
205 print "strided IO test finished successfully\n";
208 print "$failures tests failed and $success tests succeeded\n";
210 # cleanup -- only if no failures
211 if ($failures == 0) {
212 if ($use_system == 1) {
213 system(`rm -rf $cwd/tmp_dir`);
215 $res = `perl $testdir/cleanup.pl $alpha_arg $cwd`;
217 if ($res ne "cleanup successful") {
218 print "Test cleanup failed with $res, bailing out\n";