def init_server(self): # an example response of how one might create the deferred def example_response(datagram): key = (key for key,value in TESTPACKETS.items() if value==datagram).next() return TESTRESPONSES[key] from twisted.test import proto_helpers self.echo_proto = ServerFactory('udp', lambda: Deferred()) self.proto = ServerFactory('udp', lambda: Deferred().addCallback(example_response)) self.tr = proto_helpers.FakeDatagramTransport() for pr in [self.echo_proto, self.proto]: pr.transport = self.tr pr.startProtocol()
def init_server(self): # an example response of how one might create the deferred def example_response(datagram): key = (key for key, value in TESTPACKETS.items() if value == datagram).next() return TESTRESPONSES[key] from twisted.test import proto_helpers self.echo_proto = ServerFactory('udp', lambda: Deferred()) self.proto = ServerFactory( 'udp', lambda: Deferred().addCallback(example_response)) self.tr = proto_helpers.FakeDatagramTransport() for pr in [self.echo_proto, self.proto]: pr.transport = self.tr pr.startProtocol()
def engage(proto='udp'): ''' Fire thrusters. ''' from ironman.server import ServerFactory from twisted.internet import reactor from twisted.internet.defer import Deferred getattr(reactor, 'listen{0:s}'.format(proto.upper()))(8888, ServerFactory( proto, Deferred)) reactor.run()
class TestIPBus: @pytest.fixture(autouse=True) def init_server(self): # an example response of how one might create the deferred def example_response(datagram): key = (key for key, value in TESTPACKETS.items() if value == datagram).next() return TESTRESPONSES[key] from twisted.test import proto_helpers self.echo_proto = ServerFactory('udp', lambda: Deferred()) self.proto = ServerFactory( 'udp', lambda: Deferred().addCallback(example_response)) self.tr = proto_helpers.FakeDatagramTransport() for pr in [self.echo_proto, self.proto]: pr.transport = self.tr pr.startProtocol() @pytest.mark.parametrize("inbound", [ (TESTPACKETS['big-endian']), (TESTPACKETS['little-endian']), ]) def test_echo(self, inbound): address, port = '127.0.0.1', 55555 assert len(self.tr.written) == 0 self.echo_proto.datagramReceived(inbound, (address, port)) msg, addr = self.tr.written[0] assert msg == inbound assert addr[1] == port @pytest.mark.parametrize("inbound,expected", [ (TESTPACKETS['big-endian'], TESTRESPONSES['big-endian']), (TESTPACKETS['little-endian'], TESTRESPONSES['little-endian']), ]) def test_command(self, inbound, expected): address, port = '127.0.0.1', 55556 assert len(self.tr.written) == 0 self.proto.datagramReceived(inbound, (address, port)) msg, addr = self.tr.written[0] assert msg == expected assert addr[1] == port
class TestIPBus: @pytest.fixture(autouse=True) def init_server(self): # an example response of how one might create the deferred def example_response(datagram): key = (key for key,value in TESTPACKETS.items() if value==datagram).next() return TESTRESPONSES[key] from twisted.test import proto_helpers self.echo_proto = ServerFactory('udp', lambda: Deferred()) self.proto = ServerFactory('udp', lambda: Deferred().addCallback(example_response)) self.tr = proto_helpers.FakeDatagramTransport() for pr in [self.echo_proto, self.proto]: pr.transport = self.tr pr.startProtocol() @pytest.mark.parametrize("inbound", [ (TESTPACKETS['big-endian']), (TESTPACKETS['little-endian']), ]) def test_echo(self, inbound): address, port = '127.0.0.1', 55555 assert len(self.tr.written) == 0 self.echo_proto.datagramReceived(inbound, (address, port)) msg, addr = self.tr.written[0] assert msg == inbound assert addr[1] == port @pytest.mark.parametrize("inbound,expected", [ (TESTPACKETS['big-endian'], TESTRESPONSES['big-endian']), (TESTPACKETS['little-endian'], TESTRESPONSES['little-endian']), ]) def test_command(self, inbound, expected): address, port = '127.0.0.1', 55556 assert len(self.tr.written) == 0 self.proto.datagramReceived(inbound, (address, port)) msg, addr = self.tr.written[0] assert msg == expected assert addr[1] == port
from ironman.history import History h = History() from ironman.server import ServerFactory from ironman.packet import IPBusPacket from twisted.internet import reactor from twisted.internet.defer import Deferred def deferredGenerator(): return Deferred().addCallback(IPBusPacket).addCallback(j).addCallback( buildResponsePacket) #.addCallback(h.record) reactor.listenUDP(8888, ServerFactory('udp', deferredGenerator)) '''set up a web server from top level: http://imgur.com/jCQlfrm''' # Site, an IProtocolFactory which glues a listening server port (IListeningPort) to the HTTPChannel implementation from twisted.web.server import Site # File, an IResource which glues the HTTP protocol implementation to the filesystem from twisted.web.static import File reactor.listenTCP(8000, Site(File("/"))) '''set up a mirror web server for IPBus requests''' from twisted.web.resource import Resource # deferred responses from twisted.web.server import NOT_DONE_YET # return json import json class HTTPIPBusRoot(Resource):