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 eq "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 # Test for tmp_dir. If it exists, fail
77 # The tmp_dir should be removed after a successful
78 # test run, but is kept if anything fails
79 if (-e "$cwd/tmp_dir") {
80 print STDERR "ERROR! tmp_dir already exists.\n";
81 print STDERR "Need to remove tmp_dir for test to run properly\n";
85 # Will use this directory...
86 system("mkdir -p $cwd/tmp_dir");
88 # Create a couple of files and subdirectories for use in the tests
89 system("mkdir -p $cwd/tmp_dir/test1");
90 system("mkdir -p $cwd/tmp_dir/test2");
92 system("cp $testdir/helper.pm $cwd/tmp_dir/test1");
94 $res = `perl $testdir/setup.pl $alpha_arg $cwd`;
96 if ($res ne "setup successful") {
97 print "Test setup failed with $res, bailing out\n";
103 if (($alpha_arg eq "") || ($is_broke == 0)) {
105 $res = `perl $testdir/test_list.pl $alpha_arg $cwd/tmp_dir`;
107 if ($res ne "list test successful") {
108 print "Basic getdirentries test failed with message: $res\n";
111 print "test_list finished successfully\n";
117 my $path1 = abs_path($testdir);
118 my @resarr = `perl $testdir/test_path.pl $alpha_arg $path1 $cwd $cwd/tmp_dir`;
119 $res = $path1.": d\n";
120 if ($resarr[0] ne $res) {
121 print "path test returned $resarr[0] instead of $res\n";
125 if ($resarr[1] ne $res) {
126 print "path test returned $resarr[1] instead of $res\n";
129 $res = $cwd."/tmp_dir: d\n";
130 if ($resarr[2] ne $res) {
131 print "path test returned $resarr[2] instead of $res\n";
134 print "test_path finished successfully\n";
141 $res = `perl $testdir/test_getcwd.pl $alpha_arg $cwd/tmp_dir/test1`;
143 if ($res ne "getcwd test successful") {
144 print "getcwd test failed with message: $res\n";
148 print "test_getcwd finished successfully\n";
152 $res = `perl $testdir/test_copy.pl $alpha_arg $cwd/tmp_dir/test1/helper.pm $cwd/tmp_dir/helper.pm`;
154 if ($res ne "copy test successful") {
155 print "copy test failed with message: $res\n";
159 print "test_copy finished successfully\n";
163 $res = `perl $testdir/test_stats.pl $alpha_arg $use_system $cwd/tmp_dir/test1/helper.pm`;
165 if ($res ne "stat test successful") {
166 print "stat test failed with message: $res\n";
170 print "test_stats finished successfully\n";
174 $res = `echo "foobar" | perl $testdir/test_copy.pl $alpha_arg -o /dev/stdin /dev/stdout`;
176 if ($res ne "copy test successful") {
177 print "stdfd test failed with message: $res\n";
181 print "test_stdfd finished successfully\n";
185 $res = `perl $testdir/test_symlink.pl $alpha_arg $cwd/tmp_dir/test1/helper.pm $cwd/tmp_dir/helper.foo`;
187 if ($res ne "Symlink test successful") {
188 print "symlink test failed with message: $res\n";
192 print "test_symlink finished successfully\n";
196 $res = `perl $testdir/test_rw.pl $alpha_arg $cwd/tmp_dir/tmp.foo`;
198 if ($res ne "rw test successful") {
199 print "rw test failed with message: $res\n";
203 print "rw test finished successfully\n";
207 $res = `perl $testdir/test_strided.pl $alpha_arg $cwd/tmp_dir/tmp2.foo`;
209 if ($res ne "strided IO test successful") {
210 print "strided IO test failed with message: $res\n";
214 print "strided IO test finished successfully\n";
217 print "$failures tests failed and $success tests succeeded\n";
219 # cleanup -- only if no failures
220 if ($failures == 0) {
221 if ($use_system == 1) {
222 system(`rm -rf $cwd/tmp_dir`);
224 $res = `perl $testdir/cleanup.pl $alpha_arg $cwd`;
226 if ($res ne "cleanup successful") {
227 print "Test cleanup failed with $res, bailing out\n";