3 from zope.interface import implements
4 from twisted.trial import unittest
5 from twisted.internet import defer
6 from twisted.python import log
8 from foolscap import Tub, Referenceable
9 from foolscap.eventual import fireEventually, flushEventualQueue
10 from twisted.application import service
12 from allmydata.node import Node, formatTimeTahoeStyle
13 from allmydata.util import testutil, fileutil
14 from allmydata import logpublisher
16 class LoggingMultiService(service.MultiService):
17 def log(self, msg, **kw):
21 CERTFILE='DEFAULT_CERTFILE_BLANK'
22 PORTNUMFILE='DEFAULT_PORTNUMFILE_BLANK'
24 class TestCase(unittest.TestCase, testutil.SignalMixin):
26 self.parent = LoggingMultiService()
27 self.parent.startService()
29 log.msg("%s.tearDown" % self.__class__.__name__)
30 d = defer.succeed(None)
31 d.addCallback(lambda res: self.parent.stopService())
32 d.addCallback(flushEventualQueue)
35 def test_advertised_ip_addresses(self):
36 basedir = "test_node/test_advertised_ip_addresses"
37 fileutil.make_dirs(basedir)
38 f = open(os.path.join(basedir, 'advertised_ip_addresses'),'w')
43 n.setServiceParent(self.parent)
44 d = n.when_tub_ready()
46 def _check_addresses(ignored_result):
47 furl = n.tub.registerReference(n)
48 self.failUnless("1.2.3.4:5" in furl, furl)
50 d.addCallback(_check_addresses)
53 def test_timestamp(self):
54 # this modified logger doesn't seem to get used during the tests,
55 # probably because we don't modify the LogObserver that trial
56 # installs (only the one that twistd installs). So manually exercise
58 t = formatTimeTahoeStyle("ignored", time.time())
59 self.failUnless("Z" in t)
60 t2 = formatTimeTahoeStyle("ignored", int(time.time()))
61 self.failUnless("Z" in t2)
63 class Gatherer(Referenceable):
64 implements(logpublisher.RILogGatherer)
65 def remote_logport(self, nodeid, logport):
66 d = logport.callRemote("get_versions")
67 d.addCallback(self.d.callback)
69 class LogObserver(Referenceable):
70 implements(logpublisher.RILogObserver)
73 def remote_msg(self, d):
74 self.messages.append(d)