Пример #1
0
    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()
Пример #2
0
    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()
Пример #3
0
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()
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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):