get tests to pass
This commit is contained in:
parent
03e8d36e7f
commit
b15e955fec
|
@ -1,69 +1,24 @@
|
|||
# no unicode_literals untill twisted update
|
||||
from twisted.application import service
|
||||
from twisted.internet import defer, task, reactor
|
||||
from twisted.python import log
|
||||
from click.testing import CliRunner
|
||||
import mock
|
||||
from ..cli import cli
|
||||
from ..transit import allocate_tcp_port
|
||||
from ..server.server import RelayServer
|
||||
#from __future__ import unicode_literals
|
||||
from twisted.internet import reactor, endpoints
|
||||
from twisted.internet.defer import inlineCallbacks
|
||||
from ..transit_server import Transit
|
||||
|
||||
class ServerBase:
|
||||
def setUp(self):
|
||||
self._setup_relay(None)
|
||||
self._lp = None
|
||||
self._setup_relay()
|
||||
|
||||
def _setup_relay(self, error, advertise_version=None):
|
||||
self.sp = service.MultiService()
|
||||
self.sp.startService()
|
||||
self.transitport = allocate_tcp_port()
|
||||
# need to talk to twisted team about only using unicode in
|
||||
# endpoints.serverFromString
|
||||
s = RelayServer("tcp:%s:interface=127.0.0.1" % self.transitport,
|
||||
advertise_version=advertise_version,
|
||||
signal_error=error)
|
||||
s.setServiceParent(self.sp)
|
||||
self._relay_server = s
|
||||
self._rendezvous = s._rendezvous
|
||||
self._transit_server = s._transit
|
||||
@inlineCallbacks
|
||||
def _setup_relay(self, blur_usage=None, usage_logfile=None, stats_file=None):
|
||||
ep = endpoints.TCP4ServerEndpoint(reactor, 0, interface="127.0.0.1")
|
||||
self._transit_server = Transit(blur_usage=blur_usage,
|
||||
usage_logfile=usage_logfile,
|
||||
stats_file=stats_file)
|
||||
self._lp = yield ep.listen(self._transit_server)
|
||||
addr = self._lp.getHost()
|
||||
# ws://127.0.0.1:%d/wormhole-relay/ws
|
||||
self.transit = u"tcp:127.0.0.1:%d" % self.transitport
|
||||
self.transit = u"tcp:127.0.0.1:%d" % addr.port
|
||||
|
||||
def tearDown(self):
|
||||
# Unit tests that spawn a (blocking) client in a thread might still
|
||||
# have threads running at this point, if one is stuck waiting for a
|
||||
# message from a companion which has exited with an error. Our
|
||||
# relay's .stopService() drops all connections, which ought to
|
||||
# encourage those threads to terminate soon. If they don't, print a
|
||||
# warning to ease debugging.
|
||||
|
||||
# XXX FIXME there's something in _noclobber test that's not
|
||||
# waiting for a close, I think -- was pretty relieably getting
|
||||
# unclean-reactor, but adding a slight pause here stops it...
|
||||
from twisted.internet import reactor
|
||||
|
||||
tp = reactor.getThreadPool()
|
||||
if not tp.working:
|
||||
d = defer.succeed(None)
|
||||
d.addCallback(lambda _: self.sp.stopService())
|
||||
d.addCallback(lambda _: task.deferLater(reactor, 0.1, lambda: None))
|
||||
return d
|
||||
return self.sp.stopService()
|
||||
# disconnect all callers
|
||||
d = defer.maybeDeferred(self.sp.stopService)
|
||||
wait_d = defer.Deferred()
|
||||
# wait a second, then check to see if it worked
|
||||
reactor.callLater(1.0, wait_d.callback, None)
|
||||
def _later(res):
|
||||
if len(tp.working):
|
||||
log.msg("wormhole.test.common.ServerBase.tearDown:"
|
||||
" I was unable to convince all threads to exit.")
|
||||
tp.dumpStats()
|
||||
print("tearDown warning: threads are still active")
|
||||
print("This test will probably hang until one of the"
|
||||
" clients gives up of their own accord.")
|
||||
else:
|
||||
log.msg("wormhole.test.common.ServerBase.tearDown:"
|
||||
" I convinced all threads to exit.")
|
||||
return d
|
||||
wait_d.addCallback(_later)
|
||||
return wait_d
|
||||
if self._lp:
|
||||
return self._lp.stopListening()
|
||||
|
|
|
@ -3,7 +3,6 @@ from binascii import hexlify
|
|||
from twisted.trial import unittest
|
||||
from twisted.internet import protocol, reactor, defer
|
||||
from twisted.internet.endpoints import clientFromString, connectProtocol
|
||||
from twisted.web import client
|
||||
from .common import ServerBase
|
||||
from .. import transit_server
|
||||
|
||||
|
@ -51,11 +50,6 @@ class Transit(ServerBase, unittest.TestCase):
|
|||
self.failUnlessEqual(blur(1100e6), 1100e6)
|
||||
self.failUnlessEqual(blur(1150e6), 1200e6)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_web_request(self):
|
||||
resp = yield client.getPage('http://127.0.0.1:{}/'.format(self.relayport).encode('ascii'))
|
||||
self.assertEqual('Wormhole Relay'.encode('ascii'), resp.strip())
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_register(self):
|
||||
ep = clientFromString(reactor, self.transit)
|
||||
|
|
|
@ -2,7 +2,6 @@ from __future__ import print_function, unicode_literals
|
|||
import os, re, time, json
|
||||
from twisted.python import log
|
||||
from twisted.internet import protocol
|
||||
from twisted.application import service
|
||||
|
||||
SECONDS = 1.0
|
||||
MINUTE = 60*SECONDS
|
||||
|
@ -222,11 +221,9 @@ class Transit(protocol.ServerFactory):
|
|||
protocol = TransitConnection
|
||||
|
||||
def __init__(self, blur_usage, usage_logfile, stats_file):
|
||||
service.MultiService.__init__(self)
|
||||
self._blur_usage = blur_usage
|
||||
self._log_requests = blur_usage is None
|
||||
if usage_logfile:
|
||||
self._usage_logfile = open(usage_logfile, "a")
|
||||
self._usage_logfile = open(usage_logfile, "a") if usage_logfile else None
|
||||
self._stats_file = stats_file
|
||||
self._pending_requests = {} # token -> set((side, TransitConnection))
|
||||
self._active_connections = set() # TransitConnection
|
||||
|
|
2
tox.ini
2
tox.ini
|
@ -15,7 +15,6 @@ deps =
|
|||
pyflakes >= 1.2.3
|
||||
commands =
|
||||
pyflakes setup.py src
|
||||
wormhole --version
|
||||
python -m twisted.trial {posargs:wormhole_transit_relay}
|
||||
|
||||
[testenv:coverage]
|
||||
|
@ -24,6 +23,5 @@ deps =
|
|||
coverage
|
||||
commands =
|
||||
pyflakes setup.py src
|
||||
wormhole --version
|
||||
coverage run --branch -m twisted.trial {posargs:wormhole_transit_relay}
|
||||
coverage xml
|
||||
|
|
Loading…
Reference in New Issue
Block a user