#!/usr/local/plan9/bin/rc

vtmp=/home/tmp
venti=tcp!127.1!17034
url=127.1:8901

fn reformat {
	if(! test -f $vtmp/arena)
		dd bs'='1048576 count'='100 if'='/dev/zero of'='$vtmp/arena
	if(! test -f $vtmp/bloom)
		dd bs'='1048576 count'='128 if'='/dev/zero of'='$vtmp/bloom
	if(! test -f $vtmp/isect)
		dd bs'='1048576 count'='10 if'='/dev/zero of'='$vtmp/isect
	if(! test -f $vtmp/check)
		dd bs'='1048576 count'='20 if'='/dev/zero of'='$vtmp/check

	echo '
		index main
		isect '$vtmp'/isect
		arenas '$vtmp'/arena
		bloom '$vtmp'/bloom
		webroot '$PLAN9'/src/cmd/venti/srv/www
		mem 64M
		icmem 64M
		bcmem 64M
		queuewrites
		addr tcp!*!17034
		httpaddr tcp!*!8901
	' >$vtmp/vtmp.conf

	./o.fmtarenas -a 40M -b 8k arenas $vtmp/arena
	./o.fmtbloom $vtmp/bloom
	./o.fmtisect -b 8k isect $vtmp/isect
	./o.fmtindex $vtmp/vtmp.conf
}

fn venti {
	./o.venti -c $vtmp/vtmp.conf >$vtmp/venti.log >[2=1]
}

fn killventi {
	killall -9 o.venti
}

fn die {
	echo $*
	# no killventi - leave for debugging
	echo '(leaving venti running)'
	exit 1
}

fn testdcachesync {
	echo '>>>' testdcachesync...
	echo '*' reformat
	reformat
	echo '*' venti
	venti
	sleep 2
	echo '*' vac
	9 time vac $PLAN9/src/cmd/venti >$vtmp/a.vac
	echo '*' flushdcache
	hget http://$url/flushdcache
	echo '*' kill venti
	killventi
	echo '*' venti
	venti
	sleep 2
	echo '*' read
	if(venti/read `{cat $vtmp/a.vac} >/dev/null >[2=1])
		echo worked
	if not
		die 'could not find block!'
}

testdcachesync
killventi