Add more tests, results.
[pintos-anon] / grading / filesys / run-tests
index 7b7348752f65117f1a8c5994c2f7bb78ece5c2c8..0f86dbf0e30fe80a791e699ef5751b09464bee82 100755 (executable)
@@ -48,8 +48,17 @@ sub usage {
 
 # Default set of tests.
 @TESTS = qw (sm-create sm-full sm-seq-block sm-seq-random sm-random
+
             grow-create grow-seq-sm grow-seq-lg grow-file-size grow-tell
-            grow-sparse grow-root-sm grow-root-lg grow-dir-lg grow-two-files
+            grow-sparse grow-too-big grow-root-sm grow-root-lg grow-dir-lg 
+            grow-two-files
+
+            dir-mkdir dir-rmdir dir-mk-vine dir-rm-vine dir-mk-tree
+            dir-rm-tree dir-lsdir dir-rm-cwd dir-rm-cwd-cd
+            dir-rm-parent dir-rm-root dir-over-file dir-under-file
+            dir-empty-name dir-open
+
+            syn-remove syn-read syn-write syn-rw
             ) unless @TESTS > 0;
 
 our (%args);
@@ -237,7 +246,7 @@ sub run_test {
 
 sub compile {
     print "Compiling...\n";
-    xsystem ("cd pintos/src/vm && make", LOG => "make")
+    xsystem ("cd pintos/src/filesys && make", LOG => "make")
        or return "compile error";
 }
 
@@ -251,7 +260,8 @@ sub really_run_test {
 
     # Make output directory.
     mkdir "output/$test";
-    xsystem ("pintos make-disk output/$test/fs.dsk 2 >/dev/null 2>&1",
+    my ($fs_size) = $test ne 'grow-too-big' ? 2 : .25;
+    xsystem ("pintos make-disk output/$test/fs.dsk $fs_size >/dev/null 2>&1",
             DIE => "failed to create file system disk");
     xsystem ("pintos make-disk output/$test/swap.dsk 2 >/dev/null 2>&1",
             DIE => "failed to create swap disk");
@@ -259,7 +269,7 @@ sub really_run_test {
     # Format disk, install test.
     my ($pintos_base_cmd) =
        "pintos "
-       . "--os-disk=pintos/src/vm/build/os.dsk "
+       . "--os-disk=pintos/src/filesys/build/os.dsk "
        . "--fs-disk=output/$test/fs.dsk "
        . "--swap-disk=output/$test/swap.dsk "
        . "-v";
@@ -268,6 +278,16 @@ sub really_run_test {
        if !xsystem ("$pintos_base_cmd put -f $GRADES_DIR/$test $test",
                     LOG => "$test/put", TIMEOUT => 60, EXPECT => 1);
 
+    my (@extra_files);
+    push (@extra_files, "child-syn-read") if $test eq 'syn-read';
+    push (@extra_files, "child-syn-wrt") if $test eq 'syn-write';
+    push (@extra_files, "child-syn-rw") if $test eq 'syn-rw';
+    for my $fn (@extra_files) {
+       return "format/put error" 
+           if !xsystem ("$pintos_base_cmd put $GRADES_DIR/$fn $fn",
+                        LOG => "$test/put-$fn", TIMEOUT => 60, EXPECT => 1);
+    }
+    
     # Run.
     my ($timeout) = 60;
     my ($testargs) = defined ($args{$test}) ? " $args{$test}" : "";
@@ -346,7 +366,7 @@ sub verify_common {
            } else {
                $A2L = "i386-elf-addr2line";
            }
-           open (A2L, "$A2L -fe pintos/src/vm/build/kernel.o @addrs|");
+           open (A2L, "$A2L -fe pintos/src/filesys/build/kernel.o @addrs|");
            for (;;) {
                my ($function, $line);
                last unless defined ($function = <A2L>);
@@ -370,6 +390,11 @@ EOF
        die "Kernel panic.  Details at end of file.\n"
     }
 
+    my (@failure) = grep (/FAIL/, @output);
+    if (@failure != 0) {
+       die "Test failed: \"$failure[0]\"\n";
+    }
+
     if (grep (/Pintos booting/, @output) > 1) {
        my ($details);