Patchwork [6,of,9] test: add a push race case where racing push touches multiple heads

login
register
mail settings
Submitter Pierre-Yves David
Date May 28, 2017, 11:11 p.m.
Message ID <06bd51258df245cdebfa.1496013088@nodosa.octopoid.net>
Download mbox | patch
Permalink /patch/21022/
State Accepted
Headers show

Comments

Pierre-Yves David - May 28, 2017, 11:11 p.m.
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@octobus.net>
# Date 1495916811 -7200
#      Sat May 27 22:26:51 2017 +0200
# Node ID 06bd51258df245cdebfa0aee0b1c8ee79e568c4f
# Parent  636ed936a7b50ea7e764d0edca6e43b579e49d7c
# EXP-Topic pushrace
# Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
#              hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r 06bd51258df2
test: add a push race case where racing push touches multiple heads

We check case where the raced push updates a head while the racing push update
all of them.

Patch

diff --git a/tests/test-push-race.t b/tests/test-push-race.t
--- a/tests/test-push-race.t
+++ b/tests/test-push-race.t
@@ -625,3 +625,136 @@  Check the result of the push
   |/
   @  842e2fac6304 C-ROOT (default)
   
+
+pushing racing push touch multiple heads
+----------------------------------------
+
+There are multiple heads, but the racing push touch all of them
+
+#  a (raced)
+#  | b
+#  |/|
+#  * *
+#  |/
+#  *
+
+(resync-all)
+
+  $ hg -R ./server pull ./client-racy
+  pulling from ./client-racy
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files (+1 heads)
+  (run 'hg heads .' to see heads, 'hg merge' to merge)
+  $ hg -R ./client-other pull
+  pulling from ssh://user@dummy/server
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files (+1 heads)
+  (run 'hg heads' to see heads)
+  $ hg -R ./client-racy pull
+  pulling from ssh://user@dummy/server
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files (+1 heads)
+  (run 'hg heads .' to see heads, 'hg merge' to merge)
+
+  $ hg -R server graph
+  o  89420bf00fae C-J (default)
+  |
+  | o  b35ed749f288 C-I (my-second-test-branch)
+  |/
+  o  75d69cba5402 C-G (default)
+  |
+  | o  833be552cfe6 C-H (my-first-test-branch)
+  |/
+  o  d9e379a8c432 C-F (default)
+  |
+  o  51c544a58128 C-C (default)
+  |
+  | o  d603e2c0cdd7 C-E (default)
+  |/
+  o  98217d5a1659 C-A (default)
+  |
+  | o  59e76faf78bd C-D (default)
+  | |
+  | o  a9149a1428e2 C-B (default)
+  |/
+  @  842e2fac6304 C-ROOT (default)
+  
+
+Creating changesets
+
+(merges heads)
+
+  $ hg -R client-other/ up 'desc("C-E")'
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg -R client-other/ merge 'desc("C-D")'
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg -R client-other/ commit -m "C-K"
+
+(update one head)
+
+  $ hg -R client-racy/ up 'desc("C-D")'
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo bbb >> client-racy/b
+  $ hg -R client-racy/ commit -m "C-L"
+
+Pushing
+
+  $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
+
+  $ waiton $TESTTMP/readyfile
+
+  $ hg -R client-other push -fr 'tip' --new-branch
+  pushing to ssh://user@dummy/server
+  searching for changes
+  remote: adding changesets
+  remote: adding manifests
+  remote: adding file changes
+  remote: added 1 changesets with 0 changes to 0 files (-1 heads)
+
+  $ release $TESTTMP/watchfile
+
+Check the result of the push
+
+  $ cat ./push-log
+  pushing to ssh://user@dummy/server
+  searching for changes
+  wrote ready: $TESTTMP/readyfile
+  waiting on: $TESTTMP/watchfile
+  abort: push failed:
+  'repository changed while pushing - please try again'
+
+  $ hg -R server graph
+  o    be705100c623 C-K (default)
+  |\
+  | o  d603e2c0cdd7 C-E (default)
+  | |
+  o |  59e76faf78bd C-D (default)
+  | |
+  | | o  89420bf00fae C-J (default)
+  | | |
+  | | | o  b35ed749f288 C-I (my-second-test-branch)
+  | | |/
+  | | o  75d69cba5402 C-G (default)
+  | | |
+  | | | o  833be552cfe6 C-H (my-first-test-branch)
+  | | |/
+  | | o  d9e379a8c432 C-F (default)
+  | | |
+  | | o  51c544a58128 C-C (default)
+  | |/
+  o |  a9149a1428e2 C-B (default)
+  | |
+  | o  98217d5a1659 C-A (default)
+  |/
+  @  842e2fac6304 C-ROOT (default)
+