Control: tags -1 patch
Hi,
On 08.01.2017 18:27, Rebecca N. Palmer wrote:
> (I had never heard of this package before your d-d post: I'm looking at it
> because of the number of to-be-autoremoved reverse dependencies)
(Me too.)
> I can't reproduce any of these test failures:
> dpkg-buildpackage -us -uc -A in a sid/amd64 cowbuilder --login chroot
> (build-deps + ccache eatmydata lintian fakeroot) works for me.
>
> This raises the obvious question of what is different:
> single vs multiple CPU core (this submitter has reported several other
> single-CPU-only FTBFSs [0])? Network (allowed in cowbuilder, blocked on
> buildds)?
I think the answer is that you were lucky. ;)
The problem can be reproduced by running:
$ python -m pytest -v -x -rs testing/test_gateway.py
I did that 100 times and it failed 78 times, working only 22 times.
The failing test contains:
for i in range(10):
status = gw.remote_status()
if status.numexecuting == 0:
break
else:
pytest.fail("did not get correct remote status")
Apparently there is a race condition, so it is tried 10 times.
However, it is tried in a tight loop, thus not much time passes
between the first and the last try. Making it sleep inside the
loop helps.
There is a similar construct in test_status_with_threads,
which fails in a similar way, but after changing both to wait
a bit (with attached patch), the test succeeded 100 times
for 100 tries.
That should be good enough to call this bug fixed.
Best regards,
Andreas
--- a/testing/test_gateway.py
+++ b/testing/test_gateway.py
@@ -2,6 +2,7 @@
mostly functional tests of gateways.
"""
import os
+import time
import py
import pytest
import execnet
@@ -84,6 +85,7 @@ class TestBasicGateway:
status = gw.remote_status()
if status.numexecuting == 0:
break
+ time.sleep(0.1)
else:
pytest.fail("did not get correct remote status")
# race condition
@@ -358,6 +360,7 @@ class TestThreads:
rstatus = gw.remote_status()
if rstatus.numexecuting == 0:
return
+ time.sleep(0.1)
assert 0, "numexecuting didn't drop to zero"