return d
test_introducer.timeout = 240 # This hit the 120-second timeout on "François Lenny-armv5tel"
- def test_client_no_noise(self):
- self.skip_on_cygwin()
- if not os.path.exists(bintahoe):
- raise unittest.SkipTest("The bin/tahoe script isn't to be found in the expected location, and I don't want to test a 'tahoe' executable that I find somewhere else, in case it isn't the right executable for this version of tahoe.")
- basedir = self.workdir("test_client_no_noise")
- c1 = os.path.join(basedir, "c1")
- HOTLINE_FILE = os.path.join(c1, "suicide_prevention_hotline")
- TWISTD_PID_FILE = os.path.join(c1, "twistd.pid")
- PORTNUMFILE = os.path.join(c1, "client.port")
-
- d = utils.getProcessOutputAndValue(bintahoe, args=["--quiet", "create-client", "--basedir", c1, "--webport", "0"], env=os.environ)
- def _cb(res):
- out, err, rc_or_sig = res
- errstr = "cc=%d, OUT: '%s', ERR: '%s'" % (rc_or_sig, out, err)
- assert rc_or_sig == 0, errstr
- self.failUnlessEqual(rc_or_sig, 0)
- # By writing this file, we get forty seconds before the client will exit. This insures
- # that even if the 'stop' command doesn't work (and the test fails), the client should
- # still terminate.
- open(HOTLINE_FILE, "w").write("")
- open(os.path.join(c1, "introducer.furl"), "w").write("pb://xrndsskn2zuuian5ltnxrte7lnuqdrkz@127.0.0.1:55617/introducer\n")
- # now it's safe to start the node
- d.addCallback(_cb)
-
- def _start(res):
- return utils.getProcessOutputAndValue(bintahoe, args=["--quiet", "start", c1], env=os.environ)
- d.addCallback(_start)
-
- def _cb2(res):
- out, err, rc_or_sig = res
- errstr = "cc=%d, OUT: '%s', ERR: '%s'" % (rc_or_sig, out, err)
- open(HOTLINE_FILE, "w").write("")
- self.failUnlessEqual(rc_or_sig, 0, errstr)
- self.failUnlessEqual(out, "", errstr) # If you emit noise, you fail this test.
- self.failUnlessEqual(err, "", errstr)
-
- # the parent (twistd) has exited. However, twistd writes the pid
- # from the child, not the parent, so we can't expect twistd.pid
- # to exist quite yet.
-
- # the node is running, but it might not have made it past the
- # first reactor turn yet, and if we kill it too early, it won't
- # remove the twistd.pid file. So wait until it does something
- # that we know it won't do until after the first turn.
- d.addCallback(_cb2)
-
- def _node_has_started():
- return os.path.exists(PORTNUMFILE)
- d.addCallback(lambda res: self.poll(_node_has_started))
-
- # now we can kill it. TODO: On a slow machine, the node might kill
- # itself before we get a chance too, especially if spawning the
- # 'tahoe stop' command takes a while.
- def _stop(res):
- self.failUnless(os.path.exists(TWISTD_PID_FILE), (TWISTD_PID_FILE, os.listdir(os.path.dirname(TWISTD_PID_FILE))))
- return utils.getProcessOutputAndValue(bintahoe, args=["--quiet", "stop", c1], env=os.environ)
- d.addCallback(_stop)
- return d
- test_client_no_noise.todo = "We submitted a patch to Nevow to silence this warning: http://divmod.org/trac/ticket/2830"
-
def test_client(self):
self.skip_on_cygwin()
if not os.path.exists(bintahoe):