tests/testlib/exchange-obsmarker-util.sh
branchstable
changeset 2268 f2ebe960998b
parent 2118 d0bc98161794
child 2580 51a1dd295fe0
equal deleted inserted replaced
2267:150fee60887a 2268:f2ebe960998b
       
     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 
       
    24 [extensions]
       
    25 # we need to strip some changeset for some test cases
       
    26 hgext.strip=
       
    27 
       
    28 [alias]
       
    29 # fix date used to create obsolete markers.
       
    30 debugobsolete=debugobsolete -d '0 0'
       
    31 
       
    32 [extensions]
       
    33 hgext.strip=
       
    34 EOF
       
    35 echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    36 
       
    37 mkcommit() {
       
    38    echo "$1" > "$1"
       
    39    hg add "$1"
       
    40    hg ci -m "$1"
       
    41 }
       
    42 getid() {
       
    43    hg log --hidden --template '{node}\n' --rev "$1"
       
    44 }
       
    45 
       
    46 setuprepos() {
       
    47     echo creating test repo for test case $1
       
    48     mkdir $1
       
    49     cd $1
       
    50     echo - pulldest
       
    51     hg init pushdest
       
    52     cd pushdest
       
    53     mkcommit O
       
    54     hg phase --public .
       
    55     cd ..
       
    56     echo - main
       
    57     hg clone -q pushdest main
       
    58     echo - pushdest
       
    59     hg clone -q main pulldest
       
    60     echo 'cd into `main` and proceed with env setup'
       
    61 }
       
    62 
       
    63 inspect_obsmarkers (){
       
    64     # This exist as its own function to help the evolve extension reuse the tests as is.
       
    65     # The evolve extensions version will includes more advances query (eg:
       
    66     # related to obsmarkers discovery) to this.
       
    67     echo 'obsstore content'
       
    68     echo '================'
       
    69     hg debugobsolete
       
    70     echo 'obshashtree'
       
    71     echo '==========='
       
    72     hg debugobsrelsethashtree
       
    73     echo 'obshashrange'
       
    74     echo '============'
       
    75     hg debugobshashrange --subranges --rev 'head()'
       
    76 }
       
    77 
       
    78 dotest() {
       
    79     # dotest TESTNAME [TARGETNODE] [PUSHFLAGS+]
       
    80     #
       
    81     # test exchange for the given test case.
       
    82     #
       
    83     # This function performs push and pull in all directions through all
       
    84     # protocols and display the resulting obsolescence markers on all sides.
       
    85 
       
    86     testcase=$1
       
    87     shift
       
    88     target="$1"
       
    89     if [ $# -gt 0 ]; then
       
    90         shift
       
    91     fi
       
    92     targetnode=""
       
    93     desccall=""
       
    94     cd $testcase
       
    95     echo "## Running testcase $testcase"
       
    96     if [ -n "$target" ]; then
       
    97         desccall="desc("\'"$target"\'")"
       
    98         targetnode="`hg -R main id -qr \"$desccall\"`"
       
    99         echo "# testing echange of \"$target\" ($targetnode)"
       
   100     fi
       
   101     echo "## initial state"
       
   102     echo "# obstore: main"
       
   103     hg -R main     debugobsolete | sort
       
   104     echo "# obstore: pushdest"
       
   105     hg -R pushdest debugobsolete | sort
       
   106     echo "# obstore: pulldest"
       
   107     hg -R pulldest debugobsolete | sort
       
   108 
       
   109     if [ -n "$target" ]; then
       
   110         echo "## pushing \"$target\"" from main to pushdest
       
   111         hg -R main push -r "$desccall" $@ pushdest
       
   112     else
       
   113         echo "## pushing from main to pushdest"
       
   114         hg -R main push pushdest $@
       
   115     fi
       
   116     echo "## post push state"
       
   117     echo "# obstore: main"
       
   118     hg -R main     debugobsolete | sort
       
   119     echo "# obstore: pushdest"
       
   120     hg -R pushdest debugobsolete | sort
       
   121     echo "# obstore: pulldest"
       
   122     hg -R pulldest debugobsolete | sort
       
   123     if [ -n "$target" ]; then
       
   124         echo "## pulling \"$targetnode\"" from main into pulldest
       
   125         hg -R pulldest pull -r $targetnode $@ main
       
   126     else
       
   127         echo "## pulling from main into pulldest"
       
   128         hg -R pulldest pull main $@
       
   129     fi
       
   130     echo "## post pull state"
       
   131     echo "# obstore: main"
       
   132     hg -R main     debugobsolete | sort
       
   133     echo "# obstore: pushdest"
       
   134     hg -R pushdest debugobsolete | sort
       
   135     echo "# obstore: pulldest"
       
   136     hg -R pulldest debugobsolete | sort
       
   137 
       
   138     cd ..
       
   139 
       
   140 }