def test_furl(self): basedir = "introducer.IntroducerNode.test_furl" os.mkdir(basedir) public_fn = os.path.join(basedir, "introducer.furl") private_fn = os.path.join(basedir, "private", "introducer.furl") q1 = create_introducer(basedir) del q1 # new nodes create unguessable furls in private/introducer.furl ifurl = fileutil.read(private_fn) self.failUnless(ifurl) ifurl = ifurl.strip() self.failIf(ifurl.endswith("/introducer"), ifurl) # old nodes created guessable furls in BASEDIR/introducer.furl guessable = ifurl[:ifurl.rfind("/")] + "/introducer" fileutil.write(public_fn, guessable + "\n", mode="w") # text # if we see both files, throw an error self.failUnlessRaises(FurlFileConflictError, create_introducer, basedir) # when we see only the public one, move it to private/ and use # the existing furl instead of creating a new one os.unlink(private_fn) q2 = create_introducer(basedir) del q2 self.failIf(os.path.exists(public_fn)) ifurl2 = fileutil.read(private_fn) self.failUnless(ifurl2) self.failUnlessEqual(ifurl2.strip(), guessable)
def test_create(self): """ A brand new introducer creates its config dir """ basedir = "introducer.IntroducerNode.test_create" yield create_introducer(basedir) self.assertTrue(os.path.exists(basedir))
def _create_introducer(self): """ :returns: (via Deferred) an Introducer instance """ iv_dir = self.getdir("introducer") if not os.path.isdir(iv_dir): _, web_port_endpoint = self.port_assigner.assign(reactor) main_location_hint, main_port_endpoint = self.port_assigner.assign( reactor) introducer_config = ( u"[node]\n" u"nickname = introducer \N{BLACK SMILING FACE}\n" + u"web.port = {}\n".format(web_port_endpoint) + u"tub.port = {}\n".format(main_port_endpoint) + u"tub.location = {}\n".format(main_location_hint) ).encode("utf-8") fileutil.make_dirs(iv_dir) fileutil.write( os.path.join(iv_dir, 'tahoe.cfg'), introducer_config, ) if SYSTEM_TEST_CERTS: os.mkdir(os.path.join(iv_dir, "private")) f = open(os.path.join(iv_dir, "private", "node.pem"), "w") f.write(SYSTEM_TEST_CERTS[0]) f.close() return create_introducer(basedir=iv_dir)
def test_web_static(self): basedir = u"introducer.Node.test_web_static" create_node_dir(basedir, "testing") fileutil.write(os.path.join(basedir, "tahoe.cfg"), "[node]\n" + "web.port = tcp:0:interface=127.0.0.1\n" + "web.static = relative\n") c = yield create_introducer(basedir) w = c.getServiceNamed("webish") abs_basedir = fileutil.abspath_expanduser_unicode(basedir) expected = fileutil.abspath_expanduser_unicode(u"relative", abs_basedir) self.failUnlessReallyEqual(w.staticdir, expected)
def test_port_none_introducer(self): basedir = "test_node/test_port_none_introducer" create_node_dir(basedir, "testing") with open(os.path.join(basedir, 'tahoe.cfg'), 'wt') as f: f.write("[node]\n") f.write("tub.port = disabled\n") f.write("tub.location = disabled\n") with self.assertRaises(ValueError) as ctx: yield create_introducer(basedir) self.assertIn( "we are Introducer, but tub is not listening", str(ctx.exception), )