Patchwork [8,of,9] test: add a push race case where non-contiguous branch head are created

login
register
mail settings
Submitter Pierre-Yves David
Date May 28, 2017, 11:11 p.m.
Message ID <6153e3ecb9b1e9278161.1496013090@nodosa.octopoid.net>
Download mbox | patch
Permalink /patch/21021/
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 1495916861 -7200
#      Sat May 27 22:27:41 2017 +0200
# Node ID 6153e3ecb9b1e92781612965984319ee2a1d4a08
# Parent  7442115e83609c6e95a9c65ff91a4fcdbf002c8b
# 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 6153e3ecb9b1
test: add a push race case where non-contiguous branch head are created

We check case where the raced push an update to branch default head while the
racing push update that same head but through another named branch.

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
@@ -895,3 +895,180 @@  Check the result of the push
   |/
   @  842e2fac6304 C-ROOT (default)
   
+
+racing commit push a new head behind another named branch
+---------------------------------------------------------
+
+non-continuous branch are valid case, we tests for them.
+
+#  b (branch default)
+#  |
+#  o (branch foo)
+#  |
+#  | a (raced, branch default)
+#  |/
+#  * (branch foo)
+#  |
+#  * (branch default)
+
+(resync-all + other branch)
+
+  $ hg -R ./server pull ./client-racy
+  pulling from ./client-racy
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 0 changes to 0 files
+  (run 'hg update' to get a working copy)
+
+(creates named branch on head)
+
+  $ hg -R ./server/ up 'desc("C-N")'
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg -R ./server/ branch other
+  marked working directory as branch other
+  $ hg -R ./server/ ci -m "C-Z"
+  $ hg -R ./server/ up null
+  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
+
+(sync client)
+
+  $ hg -R ./client-other pull
+  pulling from ssh://user@dummy/server
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 0 changes to 0 files
+  (run 'hg update' to get a working copy)
+  $ hg -R ./client-racy pull
+  pulling from ssh://user@dummy/server
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 1 changes to 1 files (+1 heads)
+  (run 'hg heads .' to see heads, 'hg merge' to merge)
+
+  $ hg -R server graph
+  o  55a6f1c01b48 C-Z (other)
+  |
+  o    866a66e18630 C-N (default)
+  |\
+  +---o  6fd3090135df C-M (default)
+  | |
+  | o  cac2cead0ff0 C-L (default)
+  | |
+  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)
+  |/
+  o  842e2fac6304 C-ROOT (default)
+  
+
+Creating changesets
+
+(update default head through another named branch one)
+
+  $ hg -R client-other/ up 'desc("C-Z")'
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ echo aaa >> client-other/a
+  $ hg -R client-other/ commit -m "C-O"
+  $ echo aaa >> client-other/a
+  $ hg -R client-other/ branch --force default
+  marked working directory as branch default
+  $ hg -R client-other/ commit -m "C-P"
+  created new head
+
+(update default head)
+
+  $ hg -R client-racy/ up 'desc("C-Z")'
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ echo bbb >> client-other/a
+  $ hg -R client-racy/ branch --force default
+  marked working directory as branch default
+  $ hg -R client-racy/ commit -m "C-Q"
+  created new head
+
+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 2 changesets with 1 changes to 1 files
+
+  $ 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  1b58ee3f79e5 C-P (default)
+  |
+  o  d0a85b2252a9 C-O (other)
+  |
+  o  55a6f1c01b48 C-Z (other)
+  |
+  o    866a66e18630 C-N (default)
+  |\
+  +---o  6fd3090135df C-M (default)
+  | |
+  | o  cac2cead0ff0 C-L (default)
+  | |
+  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)
+  |/
+  o  842e2fac6304 C-ROOT (default)
+