Opened at 2011-12-29T03:00:14Z
Last modified at 2011-12-29T03:02:26Z
#1646 new defect
nondeterministic failure of mydata.test.test_runner.RunNode.test_introducer — at Initial Version
Reported by: | davidsarah | Owned by: | davidsarah |
---|---|---|---|
Priority: | major | Milestone: | undecided |
Component: | code | Version: | 1.9.0 |
Keywords: | test heisenbug introducer | Cc: | |
Launchpad Bug: |
Description
allmydata.test.test_runner.RunNode.test_introducer sometimes fails with the following error:
RunNode test_introducer ... Traceback (most recent call last): File "/home/bb-tahoe/bb-tahoe/sickness-openbsd-x86-py2.7/build/src/allmydata/test/test_runner.py", line 441, in _check_same_furl_and_port self.failUnlessEqual(self.furl, fileutil.read(INTRODUCER_FURL_FILE)) twisted.trial.unittest.FailTest: not equal: a = '' b = 'pb://w6x2bwklda63sm26ki7tqhieri5fl3fz@192.168.0.120:30549,127.0.0.1:30549/introducer\n' [FAIL]
I believe the problem is due to an incorrect assumption in the test, that introducer.furl will be written before node.url. In fact they may be written in either order, because the init_introducer method of IntroducerNode writes introducer.furl concurrently with the init_web method of the same class (indirectly) writing node.url.
test_runner.py is prone to race conditions because we don't have a particularly reliable way to determine that a node has started, and so these tests rely on implementation details of when files ware created during the startup process.