X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=tests%2Ftests%2Fmirror;h=49476880aa2d446b282f330af9855ee896469b81;hp=431b391714828b3f64b514029f14e6515d78468f;hb=63911b5d576e7250c132d117c53e66aaf34b7f47;hpb=fd6c4f20fd923ab5fb43afd920b07ed1e603f623 diff --git a/tests/tests/mirror b/tests/tests/mirror index 431b3917..49476880 100755 --- a/tests/tests/mirror +++ b/tests/tests/mirror @@ -1,65 +1,25 @@ #!/bin/bash set -e . tests/lib +. $troot/lib-mirror -t-drs +t-dependencies rsync -: ---- "setup up the mirror hook in a basic way" ---- - -reposmirror=$tmp/git-mirror -queuedir=$tmp/git/_mirror-queue -mkdir $reposmirror - -mhook=$drs_dispatch/mirror-hook -ln -sf ${DGIT_INFRA_PFX}dgit-mirror-rsync $mhook -mhook () { - "$mhook" "$drs_dispatch" "$@" -} - ->$drs_dispatch/mirror-settings -mset () { echo >>$drs_dispatch/mirror-settings "$1"; } - -mset remoterepos="$reposmirror" - -commit-build-push-expect-log () { - local msg=$1 - local mpat=$2 - t-commit "$msg" - t-dgit build - LC_MESSAGES=C \ - t-dgit push --new 2>&1 |tee $tmp/push.log - t-grep-mpat "$mpat" $tmp/push.log -} - -check-mirrored () { - t-reporefs master - t-reporefs mirror $pmirror - diff $tmp/show-refs.{master,mirror} - cat $queuedir/$p.log - t-files-notexist $queuedir/$p.{n,a,lock,err} -} - -check-not-mirrored () { - # uses previous t-reporefs-master - t-reporefs mirror $pmirror - diff $tmp/show-refs.{master,mirror} -} +t-drs : ---- "basic test" ---- t-tstunt-parsechangelog t-prep-newpackage example 1.0 -pmirror=$reposmirror/$p.git -mhook setup +t-mirror-setup cd $p revision=1 t-dgit build t-dgit push --new -check-mirrored - +t-check-mirrored : ---- "stunt ssh test" ---- @@ -72,43 +32,49 @@ set -ex cat >&2 $sentinel shift # eat HOST sh -c "\$*" -: ${sentinel}2 -date >${sentinel}2 END chmod +x $tmp/stunt-ssh -mset rsyncssh=$tmp/stunt-ssh -mset remoterepos=HOST:$reposmirror +t-mirror-set rsyncssh=$tmp/stunt-ssh +t-mirror-set remoterepos=HOST:$reposmirror # mirror should fail due to lack of stunt-ssh-sentinel -commit-build-push-expect-log "stunt ssh test" \ +t-commit-build-push-expect-log "stunt ssh test" \ E:'mirror hook failed: .*exited' ls -al $queuedir/$p.a -check-not-mirrored +t-check-not-mirrored touch $sentinel -mhook backlog -check-mirrored +t-mirror-hook backlog +t-check-mirrored : ----- "stall timeout test" ----- -rm -f $sentinel ${sentinel}2 -mkfifo $sentinel ${sentinel}2 +rm -f $sentinel +mkfifo $sentinel -mset hooktimeout=5 +t-mirror-set hooktimeout=5 -commit-build-push-expect-log "stall timeout test" \ +t-commit-build-push-expect-log "stall timeout test" \ E:'mirror hook failed: .*timeout' -check-not-mirrored +t-check-not-mirrored exec 3<>$sentinel exec 3>&- -cat ${sentinel}2 -check-mirrored +attempts=100 +while [ -f $queuedir/$p.lock ]; do + if [ $attempts = 0 ]; then \ + fail "timed out waiting for lock to go away" + fi + attempts=$(( $attempts - 1 )) + sleep 0.1 +done + +t-check-mirrored -echo done. +t-ok