twisted: split allocate_ports() out to util.py

so it can be used by downstream projects
This commit is contained in:
Brian Warner 2015-06-21 21:04:33 -07:00
parent eb18b1359e
commit dc65b4354d
2 changed files with 23 additions and 21 deletions

View File

@ -1,34 +1,15 @@
import json import json
from twisted.trial import unittest from twisted.trial import unittest
from twisted.internet import defer, protocol, endpoints, reactor from twisted.internet import defer
from twisted.application import service from twisted.application import service
from ..servers.relay import RelayServer from ..servers.relay import RelayServer
from ..twisted.transcribe import SymmetricWormhole, UsageError from ..twisted.transcribe import SymmetricWormhole, UsageError
from ..twisted.util import allocate_ports
from .. import __version__ from .. import __version__
#from twisted.python import log #from twisted.python import log
#import sys #import sys
#log.startLogging(sys.stdout) #log.startLogging(sys.stdout)
def allocate_port():
ep = endpoints.serverFromString(reactor, "tcp:0:interface=127.0.0.1")
d = ep.listen(protocol.Factory())
def _listening(lp):
port = lp.getHost().port
d2 = lp.stopListening()
d2.addCallback(lambda _: port)
return d2
d.addCallback(_listening)
return d
def allocate_ports():
d = defer.DeferredList([allocate_port(), allocate_port()])
def _done(results):
port1 = results[0][1]
port2 = results[1][1]
return (port1, port2)
d.addCallback(_done)
return d
class Basic(unittest.TestCase): class Basic(unittest.TestCase):
def setUp(self): def setUp(self):
self.sp = service.MultiService() self.sp = service.MultiService()

View File

@ -0,0 +1,21 @@
from twisted.internet import defer, protocol, endpoints, reactor
def allocate_port():
ep = endpoints.serverFromString(reactor, "tcp:0:interface=127.0.0.1")
d = ep.listen(protocol.Factory())
def _listening(lp):
port = lp.getHost().port
d2 = lp.stopListening()
d2.addCallback(lambda _: port)
return d2
d.addCallback(_listening)
return d
def allocate_ports():
d = defer.DeferredList([allocate_port(), allocate_port()])
def _done(results):
port1 = results[0][1]
port2 = results[1][1]
return (port1, port2)
d.addCallback(_done)
return d