sapling/eden/scm/tests/test-commitcloud-sync-race.t
Zeyi (Rice) Fan 92f6f35e7a mark all tests requiring Python 2
Summary:
This diff marks **ALL** mercurial tests requiring Python 2 feature.

After you fixes some tests, simply remove the `py2` feature requirement and that tests will be continuously run after your diff is landed.

To bypass this feature requirement, run the tests command with `HGTEST_FORCE_PY2=1`. For example:

```
HGTEST_FORCE_PY2=1 buck test //eden/scm/tests:hg_run_tests
```

or

```
HGTEST_FORCE_PY2=1 python run-tests.py
```

----

Basically this diff are created with the following commands:

```
$ sed -i 's/import feature\(.*\)$/import feature\1\n\nfeature.require(["py2"])/' test-*-t.py
$ sed -i '1s/^/#require py2\n/' test-*.t
$ ls | grep -P "^test.*(?<\!-t)\.py$" > list && vim -p $(cat list)
# manually adding feature requires for these Python tests.
```

(Note: this ignores all push blocking failures!)

ignore-conflict-markers

Reviewed By: singhsrb

Differential Revision: D19655148

fbshipit-source-id: 985e3ccb4010cc559049f1d89f8909bc2d9b5e20
2020-01-30 18:49:21 -08:00

145 lines
5.5 KiB
Perl

#require py2
#chg-compatible
$ enable commitcloud infinitepush amend rebase remotenames
$ setconfig ui.ssh="python \"$TESTDIR/dummyssh\""
$ setconfig commitcloud.hostname=testhost
$ setconfig remotefilelog.reponame=testrepo
$ setconfig mutation.record=true mutation.enabled=true
$ disable treemanifest
$ setconfig experimental.narrow-heads=true
$ setconfig visibility.enabled=true
$ newrepo server
$ setconfig infinitepush.server=yes infinitepush.reponame=testrepo
$ setconfig infinitepush.indextype=disk infinitepush.storetype=disk
$ setconfig treemanifest.server=True
$ touch base
$ hg commit -Aqm base
$ hg phase -p .
(phases are now managed by remotenames and heads; manully editing phases is a no-op)
$ hg bookmark master
$ cd ..
$ hg clone ssh://user@dummy/server client1 -q
$ cd client1
$ setconfig commitcloud.servicetype=local
$ setconfig commitcloud.servicelocation="$TESTTMP"
$ setconfig commitcloud.user_token_path="$TESTTMP"
$ setconfig extensions.extralog="$TESTDIR/extralog.py"
$ setconfig extralog.events="visibility, commitcloud_sync"
$ setconfig extensions.lockdelay="$TESTDIR/lockdelay.py"
$ hg cloud auth -t XXXXXX
setting authentication token
authentication successful
$ hg cloud join
commitcloud: this repository is now connected to the 'user/test/default' workspace for the 'testrepo' repo
visibility: read 1 heads: df4f53cec30a
commitcloud: synchronizing 'testrepo' with 'user/test/default'
commitcloud_sync: synced to workspace user/test/default version 1: 1 heads (0 omitted), 0 bookmarks (0 omitted), 0 remote bookmarks, 0 snapshots
commitcloud: commits synchronized
finished in 0.00 sec
$ cd ..
$ hg clone ssh://user@dummy/server client2 -q
$ cd client2
$ setconfig commitcloud.servicetype=local
$ setconfig commitcloud.servicelocation="$TESTTMP"
$ setconfig commitcloud.user_token_path="$TESTTMP"
$ setconfig extensions.extralog="$TESTDIR/extralog.py"
$ setconfig extralog.events="visibility, commitcloud_sync"
$ setconfig extensions.lockdelay="$TESTDIR/lockdelay.py"
$ hg cloud auth -t XXXXXX
updating authentication token
authentication successful
$ hg cloud join
commitcloud: this repository is now connected to the 'user/test/default' workspace for the 'testrepo' repo
visibility: read 1 heads: df4f53cec30a
commitcloud: synchronizing 'testrepo' with 'user/test/default'
commitcloud_sync: synced to workspace user/test/default version 1: 1 heads (0 omitted), 0 bookmarks (0 omitted), 0 remote bookmarks, 0 snapshots
commitcloud: commits synchronized
finished in 0.00 sec
$ cd ..
$ cd client1
$ touch 1
$ hg commit -Aqm commit1
visibility: read 1 heads: df4f53cec30a
visibility: removed 1 heads [df4f53cec30a]; added 1 heads [79089e97b9e7]
visibility: wrote 1 heads: 79089e97b9e7
$ hg cloud sync
visibility: read 1 heads: 79089e97b9e7
commitcloud: synchronizing 'testrepo' with 'user/test/default'
backing up stack rooted at 79089e97b9e7
remote: pushing 1 commit:
remote: 79089e97b9e7 commit1
commitcloud_sync: synced to workspace user/test/default version 2: 1 heads (0 omitted), 0 bookmarks (0 omitted), 0 remote bookmarks, 0 snapshots
commitcloud: commits synchronized
finished in 0.00 sec
$ cd ../client2
Start a background sync to pull in the changes from the other repo.
$ touch $TESTTMP/wlockpre1
$ HGPREWLOCKFILE=$TESTTMP/wlockpre1 hg cloud sync > $TESTTMP/bgsync.out 2>&1 &
While that is getting started, create a new commit locally.
$ sleep 1
$ touch 2
$ hg commit -Aqm commit2
visibility: read 1 heads: df4f53cec30a
visibility: removed 1 heads [df4f53cec30a]; added 1 heads [1292cc1f1c17]
visibility: wrote 1 heads: 1292cc1f1c17
$ hg up -q 0
visibility: read 1 heads: 1292cc1f1c17
$ tglogp
visibility: read 1 heads: 1292cc1f1c17
o 1: 1292cc1f1c17 draft 'commit2'
|
@ 0: df4f53cec30a public 'base'
Let the background sync we started earlier continue, and start a concurrent cloud sync.
$ rm $TESTTMP/wlockpre1
$ hg cloud sync
visibility: read 1 heads: 1292cc1f1c17
commitcloud: synchronizing 'testrepo' with 'user/test/default'
backing up stack rooted at 1292cc1f1c17
remote: pushing 1 commit:
remote: 1292cc1f1c17 commit2
pulling 79089e97b9e7
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
visibility: removed 0 heads []; added 1 heads [79089e97b9e7]
commitcloud_sync: synced to workspace user/test/default version 2: 1 heads (0 omitted), 0 bookmarks (0 omitted), 0 remote bookmarks, 0 snapshots
commitcloud_sync: synced to workspace user/test/default version 3: 2 heads (0 omitted), 0 bookmarks (0 omitted), 0 remote bookmarks, 0 snapshots
visibility: wrote 2 heads: 79089e97b9e7, 1292cc1f1c17
commitcloud: commits synchronized
finished in 0.00 sec
$ tglogp
visibility: read 2 heads: 79089e97b9e7, 1292cc1f1c17
o 2: 79089e97b9e7 draft 'commit1'
|
| o 1: 1292cc1f1c17 draft 'commit2'
|/
@ 0: df4f53cec30a public 'base'
Wait for the background backup to finish and check its output.
$ hg debugwaitbackup
$ cat $TESTTMP/bgsync.out
visibility: read 1 heads: df4f53cec30a
commitcloud: synchronizing 'testrepo' with 'user/test/default'
visibility: read 1 heads: 1292cc1f1c17
abort: commitcloud: failed to synchronize commits: 'repo changed while backing up'
(please retry 'hg cloud sync')
(please contact the Source Control Team if this error persists)