# 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);
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";
}
# 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");
# 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";
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}" : "";
} 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>);
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);