示例#1
0
    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)
示例#2
0
 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))
示例#3
0
    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)
示例#4
0
 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)
示例#5
0
 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),
     )
示例#6
0
 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),
     )