docs/tutorial/testlib/exchange-obsmarker-util.sh
changeset 3376 aad37ffd7d58
equal deleted inserted replaced
3375:1cb549cd6236 3376:aad37ffd7d58
       
     1 #!/bin/sh
       
     2 # setup config and various utility to test obsolescence marker exchanges tests
       
     3 
       
     4 cat >> $HGRCPATH <<EOF
       
     5 [web]
       
     6 # We test http pull and push, drop authentication requirement
       
     7 push_ssl = false
       
     8 allow_push = *
       
     9 
       
    10 [ui]
       
    11 # simpler log output
       
    12 logtemplate ="{node|short} ({phase}): {desc}\n"
       
    13 
       
    14 [phases]
       
    15 # non publishing server
       
    16 publish=False
       
    17 
       
    18 [experimental]
       
    19 # reduce output changes
       
    20 bundle2-output-capture=True
       
    21 # enable evolution
       
    22 evolution=all
       
    23 evolution.effect-flags = yes
       
    24 
       
    25 [extensions]
       
    26 # we need to strip some changeset for some test cases
       
    27 hgext.strip=
       
    28 
       
    29 [alias]
       
    30 # fix date used to create obsolete markers.
       
    31 debugobsolete=debugobsolete -d '0 0'
       
    32 
       
    33 [extensions]
       
    34 hgext.strip=
       
    35 EOF
       
    36 echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    37 
       
    38 mkcommit() {
       
    39    echo "$1" > "$1"
       
    40    hg add "$1"
       
    41    hg ci -m "$1"
       
    42 }
       
    43 getid() {
       
    44    hg log --hidden --template '{node}\n' --rev "$1"
       
    45 }
       
    46 
       
    47 setuprepos() {
       
    48     echo creating test repo for test case $1
       
    49     mkdir $1
       
    50     cd $1
       
    51     echo - pulldest
       
    52     hg init pushdest
       
    53     cd pushdest
       
    54     mkcommit O
       
    55     hg phase --public .
       
    56     cd ..
       
    57     echo - main
       
    58     hg clone -q pushdest main
       
    59     echo - pushdest
       
    60     hg clone -q main pulldest
       
    61     echo 'cd into `main` and proceed with env setup'
       
    62 }
       
    63 
       
    64 inspect_obsmarkers (){
       
    65     # This exist as its own function to help the evolve extension reuse the tests as is.
       
    66     # The evolve extensions version will includes more advances query (eg:
       
    67     # related to obsmarkers discovery) to this.
       
    68     echo 'obsstore content'
       
    69     echo '================'
       
    70     hg debugobsolete
       
    71     echo 'obshashtree'
       
    72     echo '==========='
       
    73     hg debugobsrelsethashtree
       
    74     echo 'obshashrange'
       
    75     echo '============'
       
    76     hg debugobshashrange --subranges --rev 'head()'
       
    77 }
       
    78 
       
    79 dotest() {
       
    80     # dotest TESTNAME [TARGETNODE] [PUSHFLAGS+]
       
    81     #
       
    82     # test exchange for the given test case.
       
    83     #
       
    84     # This function performs push and pull in all directions through all
       
    85     # protocols and display the resulting obsolescence markers on all sides.
       
    86 
       
    87     testcase=$1
       
    88     shift
       
    89     target="$1"
       
    90     if [ $# -gt 0 ]; then
       
    91         shift
       
    92     fi
       
    93     targetnode=""
       
    94     desccall=""
       
    95     cd $testcase
       
    96     echo "## Running testcase $testcase"
       
    97     if [ -n "$target" ]; then
       
    98         desccall="desc("\'"$target"\'")"
       
    99         targetnode="`hg -R main id -qr \"$desccall\"`"
       
   100         echo "# testing echange of \"$target\" ($targetnode)"
       
   101     fi
       
   102     echo "## initial state"
       
   103     echo "# obstore: main"
       
   104     hg -R main     debugobsolete | sort
       
   105     echo "# obstore: pushdest"
       
   106     hg -R pushdest debugobsolete | sort
       
   107     echo "# obstore: pulldest"
       
   108     hg -R pulldest debugobsolete | sort
       
   109 
       
   110     if [ -n "$target" ]; then
       
   111         echo "## pushing \"$target\"" from main to pushdest
       
   112         hg -R main push -r "$desccall" $@ pushdest
       
   113     else
       
   114         echo "## pushing from main to pushdest"
       
   115         hg -R main push pushdest $@
       
   116     fi
       
   117     echo "## post push state"
       
   118     echo "# obstore: main"
       
   119     hg -R main     debugobsolete | sort
       
   120     echo "# obstore: pushdest"
       
   121     hg -R pushdest debugobsolete | sort
       
   122     echo "# obstore: pulldest"
       
   123     hg -R pulldest debugobsolete | sort
       
   124     if [ -n "$target" ]; then
       
   125         echo "## pulling \"$targetnode\"" from main into pulldest
       
   126         hg -R pulldest pull -r $targetnode $@ main
       
   127     else
       
   128         echo "## pulling from main into pulldest"
       
   129         hg -R pulldest pull main $@
       
   130     fi
       
   131     echo "## post pull state"
       
   132     echo "# obstore: main"
       
   133     hg -R main     debugobsolete | sort
       
   134     echo "# obstore: pushdest"
       
   135     hg -R pushdest debugobsolete | sort
       
   136     echo "# obstore: pulldest"
       
   137     hg -R pulldest debugobsolete | sort
       
   138 
       
   139     cd ..
       
   140 
       
   141 }