##// END OF EJS Templates
sidedata: add a way of replacing an existing sidedata computer...
sidedata: add a way of replacing an existing sidedata computer This will be useful in a future patch to replace a sequential computer with a parallel computer. We only allow for explicit replacement, to force the users to think about overriding computers. Differential Revision: https://phab.mercurial-scm.org/D10358

File last commit:

r46350:ed84a4d4 default
r47846:81eb7091 default
Show More
exchange-obsmarker-util.sh
142 lines | 3.5 KiB | application/x-sh | BashLexer
/ tests / testlib / exchange-obsmarker-util.sh
Pierre-Yves David
obsolescence: add setup script for obsolescence markers exchange tests...
r31905 #!/bin/sh
# setup config and various utility to test obsolescence marker exchanges tests
Matt Harbison
testlib: move the prune alias into a shell script for Windows...
r32007 cat >> $TESTTMP/prune.sh << EOF
rev=\`hg log --hidden --template '{node}\n' --rev "\$3"\`
hg debugobsolete --record-parents \$1 "\$2" \$rev \
&& hg up --quiet 'max((::.) - obsolete())'
EOF
Pierre-Yves David
obsolescence: add setup script for obsolescence markers exchange tests...
r31905 cat >> $HGRCPATH <<EOF
[web]
# We test http pull and push, drop authentication requirement
push_ssl = false
allow_push = *
Martin von Zweigbergk
config: add a new [command-templates] section for templates defined by hg...
r46350 [command-templates]
Pierre-Yves David
obsolescence: add setup script for obsolescence markers exchange tests...
r31905 # simpler log output
Martin von Zweigbergk
config: add a new [command-templates] section for templates defined by hg...
r46350 log ="{node|short} ({phase}): {desc}\n"
Pierre-Yves David
obsolescence: add setup script for obsolescence markers exchange tests...
r31905
[phases]
# non publishing server
publish=False
[experimental]
# reduce output changes
bundle2-output-capture=True
# enable evolution
Boris Feld
config: replace experimental.stabilization by experimental.evolution...
r34866 evolution=true
Pierre-Yves David
obsolescence: add setup script for obsolescence markers exchange tests...
r31905
[extensions]
# we need to strip some changeset for some test cases
hgext.strip=
strip: strip obsmarkers exclusive to the stripped changeset...
r32629 [devel]
strip-obsmarkers = no
Pierre-Yves David
obsolescence: add setup script for obsolescence markers exchange tests...
r31905 [alias]
# fix date used to create obsolete markers.
debugobsolete=debugobsolete -d '0 0'
# poor man substiture to the evolve 'hg prune'. using prune makes the test clearer and
Matt Harbison
testlib: move the prune alias into a shell script for Windows...
r32007 prune = !sh $TESTTMP/prune.sh \$1 "\$2" "\$3"
Pierre-Yves David
obsolescence: add setup script for obsolescence markers exchange tests...
r31905 EOF
mkcommit() {
echo "$1" > "$1"
hg add "$1"
hg ci -m "$1"
}
getid() {
hg log --hidden --template '{node}\n' --rev "$1"
}
setuprepos() {
echo creating test repo for test case $1
mkdir $1
cd $1
echo - pulldest
hg init pushdest
cd pushdest
mkcommit O
hg phase --public .
cd ..
echo - main
hg clone -q pushdest main
echo - pushdest
hg clone -q main pulldest
echo 'cd into `main` and proceed with env setup'
}
inspect_obsmarkers (){
# This exist as its own function to help the evolve extension reuse the tests as is.
# The evolve extensions version will includes more advances query (eg:
# related to obsmarkers discovery) to this.
echo 'obsstore content'
echo '================'
hg debugobsolete
}
dotest() {
# dotest TESTNAME [TARGETNODE] [PUSHFLAGS+]
#
# test exchange for the given test case.
#
# This function performs push and pull in all directions through all
# protocols and display the resulting obsolescence markers on all sides.
testcase=$1
shift
target="$1"
if [ $# -gt 0 ]; then
shift
fi
targetnode=""
desccall=""
cd $testcase
echo "## Running testcase $testcase"
if [ -n "$target" ]; then
desccall="desc("\'"$target"\'")"
targetnode="`hg -R main id -qr \"$desccall\"`"
echo "# testing echange of \"$target\" ($targetnode)"
fi
echo "## initial state"
echo "# obstore: main"
hg -R main debugobsolete | sort
echo "# obstore: pushdest"
hg -R pushdest debugobsolete | sort
echo "# obstore: pulldest"
hg -R pulldest debugobsolete | sort
if [ -n "$target" ]; then
echo "## pushing \"$target\"" from main to pushdest
hg -R main push -r "$desccall" $@ pushdest
else
echo "## pushing from main to pushdest"
hg -R main push pushdest $@
fi
echo "## post push state"
echo "# obstore: main"
hg -R main debugobsolete | sort
echo "# obstore: pushdest"
hg -R pushdest debugobsolete | sort
echo "# obstore: pulldest"
hg -R pulldest debugobsolete | sort
if [ -n "$target" ]; then
echo "## pulling \"$targetnode\"" from main into pulldest
hg -R pulldest pull -r $targetnode $@ main
else
echo "## pulling from main into pulldest"
hg -R pulldest pull main $@
fi
echo "## post pull state"
echo "# obstore: main"
hg -R main debugobsolete | sort
echo "# obstore: pushdest"
hg -R pushdest debugobsolete | sort
echo "# obstore: pulldest"
hg -R pulldest debugobsolete | sort
cd ..
}