discovery: test coverage for issue4438 / 86c35b7ae300 / 73cfaa348650
The randomness in the discovery protocol made this problem hard to reproduce.
The test mocks random.sample to make sure we hit the problem every time. The
set iteration order also made the output unstable ... but with the issue fixed,
it is stable.
Binary file tests/bundles/issue4438-r1.hg has changed
Binary file tests/bundles/issue4438-r2.hg has changed
--- a/tests/test-setdiscovery.t Tue Nov 04 21:45:26 2014 -0800
+++ b/tests/test-setdiscovery.t Thu Nov 06 01:48:29 2014 +0100
@@ -357,3 +357,52 @@
$ cat errors.log
$ cd ..
+
+
+Issue 4438 - test coverage for 3ef893520a85 issues.
+
+ $ mkdir issue4438
+ $ cd issue4438
+#if false
+generate new bundles:
+ $ hg init r1
+ $ for i in `seq 101`; do hg -R r1 up -qr null && hg -R r1 branch -q b$i && hg -R r1 ci -qmb$i; done
+ $ hg clone -q r1 r2
+ $ for i in `seq 10`; do hg -R r1 up -qr null && hg -R r1 branch -q c$i && hg -R r1 ci -qmc$i; done
+ $ hg -R r2 branch -q r2change && hg -R r2 ci -qmr2change
+ $ hg -R r1 bundle -qa $TESTDIR/bundles/issue4438-r1.hg
+ $ hg -R r2 bundle -qa $TESTDIR/bundles/issue4438-r2.hg
+#else
+use existing bundles:
+ $ hg clone -q $TESTDIR/bundles/issue4438-r1.hg r1
+ $ hg clone -q $TESTDIR/bundles/issue4438-r2.hg r2
+#endif
+
+Set iteration order could cause wrong and unstable results - fixed in 73cfaa348650:
+
+ $ hg -R r1 outgoing r2 -T'{rev} '
+ comparing with r2
+ searching for changes
+ 101 102 103 104 105 106 107 108 109 110 (no-eol)
+
+The case where all the 'initialsamplesize' samples already were common would
+give 'all remote heads known locally' without checking the remaining heads -
+fixed in 86c35b7ae300:
+
+ $ cat >> $TESTTMP/unrandomsample.py << EOF
+ > import random
+ > def sample(population, k):
+ > return sorted(population)[:k]
+ > random.sample = sample
+ > EOF
+
+ $ cat >> r1/.hg/hgrc << EOF
+ > [extensions]
+ > unrandomsample = $TESTTMP/unrandomsample.py
+ > EOF
+
+ $ hg -R r1 outgoing r2 -T'{rev} '
+ comparing with r2
+ searching for changes
+ 101 102 103 104 105 106 107 108 109 110 (no-eol)
+ $ cd ..