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
--- 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