Fix runaway bochs, pintos processes on time-outs.
[pintos-anon] / grading / filesys / run-tests
index 0f1f8ebd51c3d68981ad7b5e5976dd44c0358441..1b768abf84beb073ab3d15a5e4c1bf9fb7f1a0ad 100755 (executable)
@@ -19,24 +19,20 @@ our (@TESTS);               # Tests to run.
 our ($test);
 our ($action);
 
-parse_cmd_line ();
+parse_cmd_line qw (sm-create sm-full sm-seq-block sm-seq-random sm-random
 
-# Default set of tests.
-@TESTS = qw (sm-create sm-full sm-seq-block sm-seq-random sm-random
+                  lg-create lg-full lg-seq-block lg-seq-random lg-random
 
-            lg-create lg-full lg-seq-block lg-seq-random lg-random
+                  grow-create grow-seq-sm grow-seq-lg grow-file-size grow-tell
+                  grow-sparse grow-too-big grow-root-sm grow-root-lg
+                  grow-dir-lg grow-two-files
 
-            grow-create grow-seq-sm grow-seq-lg grow-file-size grow-tell
-            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
 
-            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;
+                  syn-remove syn-read syn-write syn-rw);
 
 clean_dir (), exit if $action eq 'clean';
 
@@ -44,12 +40,12 @@ extract_sources ();
 exit if $action eq 'extract';
 
 build (); 
-exit if $action eq 'build';
+exit success () if $action eq 'build';
 
 run_and_grade_tests (); 
 write_grades (); 
 write_details ();
-exit if $action eq 'test';
+exit success () if $action eq 'test';
 
 assemble_final_grade ();
 exit if $action eq 'assemble';
@@ -68,13 +64,12 @@ sub run_test {
             DIE => "failed to create swap disk");
 
     # Format disk, install test.
-    my ($pintos_base_cmd) =
-       "pintos "
-       . "--os-disk=pintos/src/$hw/build/os.dsk "
-       . "--fs-disk=output/$test/fs.dsk "
-       . "--swap-disk=output/$test/swap.dsk "
-       . "-v";
-    $result = run_pintos ("$pintos_base_cmd put -f $GRADES_DIR/$test $test",
+    my (@base_opts) = ("--os-disk=pintos/src/$hw/build/os.dsk",
+                      "--fs-disk=output/$test/fs.dsk",
+                      "--swap-disk=output/$test/swap.dsk",
+                      "-v");
+    $result = run_pintos ([@base_opts,
+                          "put", "-f", "$GRADES_DIR/$test", $test],
                          LOG => "$test/put", TIMEOUT => 60);
     return $result if $result ne 'ok';
 
@@ -83,13 +78,13 @@ sub run_test {
     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) {
-       $result = run_pintos ("$pintos_base_cmd put $GRADES_DIR/$fn $fn",
+       $result = run_pintos ([@base_opts, "put", "$GRADES_DIR/$fn", $fn],
                              LOG => "$test/put-$fn", TIMEOUT => 60);
        return "Error running `put $fn': $result" if $result ne 'ok';
     }
     
     # Run.
-    return run_pintos ("$pintos_base_cmd run -q -ex \"$test\"",
+    return run_pintos ([@base_opts, "run", "-q", "-ex", $test],
                       LOG => "$test/run", TIMEOUT => 120);
 }