hgserver: add tests for pushlog replication with obsolescence (bug 1286426); r=glandium draft
authorGregory Szorc <gps@mozilla.com>
Thu, 14 Jul 2016 16:52:55 -0700
changeset 8971 e07fa19f4f70672710978271f594181b824b4b8e
parent 8970 b7d763081bf2873710a9aaa73c28483603c5dc28
push id1034
push userbmo:gps@mozilla.com
push dateTue, 19 Jul 2016 18:10:24 +0000
reviewersglandium
bugs1286426
hgserver: add tests for pushlog replication with obsolescence (bug 1286426); r=glandium This demonstrates that pushlog entries for obsolete changesets are replicated in our fully configured server environment. This behavior is different from what pushlog tests because of the special behavior of the vcsreplicator extension which allows clients to `hg pull` obsolete changesets. MozReview-Commit-ID: 6pAWb6LPbSS
hgserver/tests/test-obsolescence.t
--- a/hgserver/tests/test-obsolescence.t
+++ b/hgserver/tests/test-obsolescence.t
@@ -81,16 +81,25 @@ Create initial repo content
   remote: added 3 changesets with 3 changes to 3 files (+1 heads)
   remote: recorded push in pushlog
   remote: 
   remote: View your changes here:
   remote:   https://hg.mozilla.org/users/user_example.com/repo-1/rev/77538e1ce4be
   remote:   https://hg.mozilla.org/users/user_example.com/repo-1/rev/ba1c6c2be69c
   remote:   https://hg.mozilla.org/users/user_example.com/repo-1/rev/a9e729deb87c
   remote: recorded changegroup in replication log in \d+\.\d+s (re)
+
+Verify pushlog state on hgweb machine
+
+  $ hgmo exec hgweb0 /var/hg/venv_replication/bin/vcsreplicator-consumer --wait-for-no-lag /etc/mercurial/vcsreplicator.ini
+  $ hgmo exec hgweb0 /var/hg/venv_tools/bin/hg --hidden -R /repo/hg/mozilla/users/user_example.com/repo-1 log -r 0:tip -T '{rev}:{node|short} {pushid} {pushuser}\n'
+  0:77538e1ce4be 1 user@example.com
+  1:ba1c6c2be69c 1 user@example.com
+  2:a9e729deb87c 1 user@example.com
+
   $ cd ..
 
 Create another clone
 
   $ hg -q clone ssh://$SSH_SERVER:$HGPORT/users/user_example.com/repo-1 repo-1-clone
   $ cat >> repo-1-clone/.hg/hgrc << EOF
   > [experimental]
   > evolution=all
@@ -138,16 +147,24 @@ Pulling should get the obsmarkers
 
 Obsolescence markers should have gotten pulled on hgweb mirror
 
   $ hgmo exec hgweb0 /var/hg/venv_replication/bin/vcsreplicator-consumer --wait-for-no-lag /etc/mercurial/vcsreplicator.ini
 
   $ hgmo exec hgweb0 /var/hg/venv_replication/bin/hg -R /repo/hg/mozilla/users/user_example.com/repo-1 debugobsolete
   ba1c6c2be69c46fed329d3795c9d906d252fdaf7 5217e2ac5b1538d1630aa54377056dbfab270508 0 (* +0000) {'user': 'Test User <someone@example.com>'} (glob)
 
+The pushlog should have new push
+
+  $ hgmo exec hgweb0 /var/hg/venv_tools/bin/hg --hidden -R /repo/hg/mozilla/users/user_example.com/repo-1 log -r 0:tip -T '{rev}:{node|short} {pushid} {pushuser}\n'
+  0:77538e1ce4be 1 user@example.com
+  1:ba1c6c2be69c 1 user@example.com
+  2:a9e729deb87c 1 user@example.com
+  3:5217e2ac5b15 2 user@example.com
+
 Pushing a changeset then hiding it works
 
   $ cd repo-1
   $ hg -q up -r 5217e2ac5b15
   $ touch file0
   $ hg -q commit -A -m head1
   $ hg -q up -r 5217e2ac5b15
   $ touch file1
@@ -198,11 +215,39 @@ Pushing a changeset then hiding it works
   ba1c6c2be69c46fed329d3795c9d906d252fdaf7 5217e2ac5b1538d1630aa54377056dbfab270508 0 (*) {'user': 'Test User <someone@example.com>'} (glob)
   6ddbc9389e710d9b4f3c880d7c99320f9581dbd5 042a67bdbae8a8b4c4b071303ad92484cf1746b0 0 (*) {'user': 'Test User <someone@example.com>'} (glob)
 
   $ hgmo exec hgweb0 /var/hg/venv_replication/bin/vcsreplicator-consumer --wait-for-no-lag /etc/mercurial/vcsreplicator.ini
   $ hgmo exec hgweb0 /var/hg/venv_replication/bin/hg -R /repo/hg/mozilla/users/user_example.com/repo-1 debugobsolete
   ba1c6c2be69c46fed329d3795c9d906d252fdaf7 5217e2ac5b1538d1630aa54377056dbfab270508 0 (*) {'user': 'Test User <someone@example.com>'} (glob)
   6ddbc9389e710d9b4f3c880d7c99320f9581dbd5 042a67bdbae8a8b4c4b071303ad92484cf1746b0 0 (*) {'user': 'Test User <someone@example.com>'} (glob)
 
+  $ hgmo exec hgweb0 /var/hg/venv_tools/bin/hg --hidden -R /repo/hg/mozilla/users/user_example.com/repo-1 log -r 0:tip -T '{rev}:{node|short} {pushid} {pushuser}\n'
+  0:77538e1ce4be 1 user@example.com
+  1:ba1c6c2be69c 1 user@example.com
+  2:a9e729deb87c 1 user@example.com
+  3:5217e2ac5b15 2 user@example.com
+  4:8713015ee6f2 3 user@example.com
+  5:6ddbc9389e71 4 user@example.com
+  6:042a67bdbae8 5 user@example.com
+
+Blowing away the repo on hgweb and re-cloning should retain pushlog and hidden changesets
+
+  $ hgmo exec hgweb0 rm -rf /repo/hg/mozilla/users/user_example.com/repo-1
+  $ hgmo exec hgweb0 /var/hg/venv_replication/bin/hg init /repo/hg/mozilla/users/user_example.com/repo-1
+  $ hgmo exec hgweb0 /var/hg/version-control-tools/scripts/repo-permissions /repo/hg/mozilla/users/user_example.com/repo-1 hg hg wwr
+  /repo/hg/mozilla/users/user_example.com/repo-1: changed owner on 5; mode on 5
+  $ hgmo exec hgssh /var/hg/venv_pash/bin/hg --hidden -R /repo/hg/mozilla/users/user_example.com/repo-1 replicatesync
+  wrote synchronization message into replication log
+  $ hgmo exec hgweb0 /var/hg/venv_replication/bin/vcsreplicator-consumer --wait-for-no-lag /etc/mercurial/vcsreplicator.ini
+
+  $ hgmo exec hgweb0 /var/hg/venv_tools/bin/hg --hidden -R /repo/hg/mozilla/users/user_example.com/repo-1 log -r 0:tip -T '{rev}:{node|short} {pushid} {pushuser}\n'
+  0:77538e1ce4be 1 user@example.com
+  1:ba1c6c2be69c 1 user@example.com
+  2:a9e729deb87c 1 user@example.com
+  3:5217e2ac5b15 2 user@example.com
+  4:8713015ee6f2 3 user@example.com
+  5:6ddbc9389e71 4 user@example.com
+  6:042a67bdbae8 5 user@example.com
+
   $ cd ..
 
   $ hgmo clean