shithub: getest

Download patch

ref: f22e05c866913e608b0630d40d33634aebcaf188
parent: 4cff2af5a4ff459f67aaa9cadf56913171891f95
author: Ori Bernstein <ori@eigenstate.org>
date: Wed Jul 2 07:53:32 EDT 2025

run.rc: improve tests, don't kill all gefses

--- a/common.rc
+++ b/common.rc
@@ -7,7 +7,7 @@
 
 fn setup{
 	if(! test -f test.fs){
-		dd -if /dev/zero -of test.fs -bs 1kk -count 2k
+		dd -if /dev/zero -of test.fs -bs 1kk -count 4k
 		chmod +t test.fs
 	}
 	../6.out -r -f test.fs
--- a/run.rc
+++ b/run.rc
@@ -30,14 +30,19 @@
 }
 
 fn ge_start {
+	testnum = `{hoc -e $testnum'+1'}
 	gefs -m 512 -A -f $1 -n gefs.test
 	while(! test -e /srv/gefs.test)
 		sleep 0.1
 	mount -c /srv/gefs.test /n/gefs
+	# if we generate a lot of console output, we can
+	# block writing to the console; this stinks.
+	# Though, console output can be useful here, so...
+	cat /srv/gefs.test.cmd > $tracedir/gefs.out.$testnum &
 }
 
 fn ge_kill {
-	kill gefs | rc
+	echo halt >> /srv/gefs.test.cmd
 	while(test -e /srv/gefs.test)
 		sleep 0.1
 }
@@ -51,7 +56,7 @@
 	$O.freplay -l replay.log $dev
 	ge_start /mnt/replay/data
 	$*
-	echo save trace /tmp/trace >> /srv/gefs.test.cmd
+	echo save trace $tracedir/gefs.ops.$testnum >> /srv/gefs.test.cmd
 	sleep 5
 	ge_kill
 	cat /mnt/replay/ctl
@@ -65,8 +70,8 @@
 	log starting replay...
 	$O.freplay -c 1 -r replay.log $dev
 	for(i in `{seq 2 $count}){
-		gefs -c -f /mnt/replay/data >[2]/tmp/log || die 'broken'
-		log stepping $i...
+		gefs -c -f /mnt/replay/data
+		log stepping $i/$count^...
 		echo step > /mnt/replay/ctl
 	}
 	echo exit > /mnt/replay/ctl 
@@ -83,11 +88,26 @@
 	$O.freplay -l replay.log $dev
 	ge_start $dev
 	$*
-	echo save trace /tmp/trace >> /srv/gefs.test.cmd
+	echo save trace $tracedir.$testnum >> /srv/gefs.test.cmd
 	ge_kill
 	gefs -c -f $dev
 }}
 
+fn ge_multi {@{
+	# prepare the test run
+	log reaming...
+	ge_ream $dev
+	log preparing build-and-verify...
+	$O.freplay -l replay.log $dev
+	for(c in $*){
+		ge_start $dev
+		$c
+		echo save trace $tracedir/trace.$c >> /srv/gefs.test.cmd
+		ge_kill
+	}
+	gefs -c -f $dev
+}}
+
 fn buildsys{@{
 	rfork ne
 	cd /n/gefs
@@ -97,9 +117,10 @@
 	bind -c $objtype/lib /$objtype/lib
 	bind -c plan9front/sys/include /sys/include
 	bind -c tmp /tmp
+	bind -c plan9front/sys/src /sys/src
 	cd plan9front/sys/src
-	mk clean >> /tmp/gefsbuild.log
-	mk all >> /tmp/gefsbuild.log
+	mk clean >> $tracedir/gefsbuild.log
+	mk all >> $tracedir/gefsbuild.log
 	echo save trace >> /srv/gefs.test.cmd
 	echo check >> /srv/gefs.test.cmd
 }}
@@ -112,12 +133,13 @@
 	sleep 1; dd -if /dev/zero -of /n/gefs/file1 -bs 16k -count 128
 	sleep 1; echo snap main z >> /srv/gefs.test.cmd;
 	sleep 1; rm /n/gefs/^(file0 file1);
-	sleep 1; echo snap -d y >> /srv/gefs.test.cmd;
+	sleep 1; echo snap -d y >> /srv/gefs.test.cmd
 	sleep 1; echo check >> /srv/gefs.test.cmd
 	sleep 1; echo snap -d z >> /srv/gefs.test.cmd;
 	sleep 1; echo check >> /srv/gefs.test.cmd
 	sleep 1; echo snap -d x >> /srv/gefs.test.cmd;
 	sleep 1; echo check >> /srv/gefs.test.cmd
+	sleep 6; echo check >> /srv/gefs.test.cmd # enough time to sync
 }}
 
 fn buildgo {@{
@@ -127,16 +149,16 @@
 	go=go1.17.13-plan9-$cputype-bootstrap
 
 	cd /n/gefs
-	if(! test -e /tmp/$go.tbz){
+	if(! test -e $go.tbz){
 		echo getting https://9legacy.org/download/go/$go.tbz ...
-		hget -o /tmp/$go.tbz https://9legacy.org/download/go/$go.tbz
+		hget -o $testdir/$go.tbz https://9legacy.org/download/go/$go.tbz
 	}
 	if(! test -e $GOROOT_BOOTSTRAP){
-		echo extracting /tmp/$go.tbz ...
- 		bunzip2 -c /tmp/$go.tbz | tar x >[2]/dev/null
+		echo extracting $go.tbz ...
+ 		bunzip2 -c $testdir/$go.tbz | tar x >[2]/dev/null
 	}
 	mkdir go
-	mkdir tmpw
+	mkdir tmp
 	dircp go-plan9-amd64-bootstrap go
 	bind -c tmp /tmp
 	cd go/src
@@ -145,15 +167,17 @@
 
 fn buildgefs {@{
 	cd /n/gefs
-	if(! test -e gefs)
-		git/clone $home/src/gefs
+	mkdir -p gefs
+	cp /sys/src/cmd/gefs/*.[chs] gefs
+	cp /sys/src/cmd/gefs/mkfile  gefs
 	cd gefs
-	mk clean > /tmp/gefsbuild.log
-	mk all > /tmp/gefsbuild.log
-	echo check >> /srv/gefs.test.cmd
+	mk clean > $tracedir/gefsbuild.log || cat $tracedir/gefsbuild.log
+	mk all > $tracedir/gefsbuild.log || cat $tracedir/gefsbuild.log
+	echo check >> /srv/gefs.test.cmd || cat $tracedir/gefsbuild.log
 }}
 
 fn buildgefs_slowrep {
+	rfork ne
 	for(i in `{seq $1}){
 		echo @@ buildgefs $i
 		buildgefs
@@ -171,17 +195,21 @@
 	$* || die $status
 }
 
-if(! test -e $dev)
-	dd -if /dev/zero -of $dev -bs 1kk -count 2k 
-rm -f /srv/gefs.test /srv/gefs.test.cmd /srv/replay
+mkdir -p traces
+testnum=0
+testdir=`{pwd}
+tracedir=$testdir/traces
+
 mk all
-@{cd test && mk all}
+rm -f $dev
+dd -if /dev/zero -of $dev -bs 1kk -count 2k 
+rm -f /srv/gefs.test /srv/gefs.test.cmd /srv/replay
 
 dotest ge_replay frobsnap
-dotest ge_replay buildgefs_slowrep 50
-dotest ge_ok buildsys
+dotest ge_replay buildgefs_slowrep 20
+dotest ge_replay buildsys
 dotest ge_ok fillfs
-
+dotest ge_multi fillfs fillfs fillfs
 # disabled by default: go doesn't fit into a
 # small fs; make a bigger one for testing.
 #	dotest ge_ok buildgo
--