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
--
⑨