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.
This commit is contained in:
Pierre-Yves David 2017-05-27 22:26:51 +02:00
parent 94af527060
commit 2478014ca3

View File

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