示例#1
0
    def test_async_rpc_success(self):
        handler_results = []
        sender_results = []

        def handler(x):
            handler_results.append(x)
            return x**2

        self.peer.accept_rpc("service", 0, 0, "method", handler)

        backend.pause_for(TIMEOUT)

        rpcs = []

        rpcs.append(self.sender.send_rpc("service", 0, "method", (1, ), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (2, ), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (3, ), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (4, ), {}))

        while rpcs:
            rpc = junction.wait_any(rpcs, TIMEOUT)
            rpcs.remove(rpc)
            sender_results.append(rpc.value)

        self.assertEqual(handler_results, [1, 2, 3, 4])
        self.assertEqual(sender_results, [1, 4, 9, 16])
示例#2
0
    def test_async_rpc_success(self):
        handler_results = []
        sender_results = []

        def handler(x):
            handler_results.append(x)
            return x ** 2

        self.peer.accept_rpc("service", 0, 0, "method", handler)

        for i in xrange(4):
            greenhouse.pause()

        rpcs = []

        rpcs.append(self.sender.send_rpc("service", 0, "method", (1,), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (2,), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (3,), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (4,), {}))

        while rpcs:
            rpc = junction.wait_any(rpcs, TIMEOUT)
            rpcs.remove(rpc)
            sender_results.append(rpc.value)

        self.assertEqual(rpcs, [])
        self.assertEqual(handler_results, [1, 2, 3, 4])
        self.assertEqual(sender_results, [1, 4, 9, 16])
示例#3
0
def main():
    peer_addr = RELAY_ADDR if '-r' in sys.argv else SERVICE_ADDR

    client = junction.Client(peer_addr)

    client.connect()
    if not client.wait_connected(timeout=3):
        raise RuntimeError("connection timeout")

    print client.rpc(SERVICE, 0, "echo", ('one',), {})

    rpcs = map(lambda msg: client.send_rpc(SERVICE, 0, "echo", (msg,), {}),
            ('two', 'three', 'four', 'five'))
    while rpcs:
        rpc = junction.wait_any(rpcs)
        rpcs.remove(rpc)
        print rpc.value
示例#4
0
def main():
    peer_addr = RELAY_ADDR if '-r' in sys.argv else SERVICE_ADDR

    client = junction.Client(peer_addr)

    client.connect()
    if not client.wait_connected(timeout=3):
        raise RuntimeError("connection timeout")

    print client.rpc(SERVICE, 0, "echo", ('one', ), {})

    rpcs = map(lambda msg: client.send_rpc(SERVICE, 0, "echo", (msg, ), {}),
               ('two', 'three', 'four', 'five'))
    while rpcs:
        rpc = junction.wait_any(rpcs)
        rpcs.remove(rpc)
        print rpc.value
示例#5
0
def main():
    client = junction.Client(("localhost", SERVICE_PORT))
    client.connect()
    client.wait_connected()

    print "wait 2"
    client.rpc(WAIT_SERVICE, 0, "wait", (2,))

    rpcs = []
    for i in xrange(5):
        wait = random.random() * 5
        rpc = client.send_rpc(WAIT_SERVICE, 0, "wait", (wait,))
        rpc.counter = i
        rpcs.append(rpc)
        print "queued a wait %r: %r" % (rpcs[-1].counter, wait)

    while rpcs:
        rpc = junction.wait_any(rpcs)
        print "got back %r" % rpc.counter
        rpcs.remove(rpc)
示例#6
0
def main():
    peer_addr = RELAY_ADDR if '-r' in sys.argv else SERVICE_ADDR

    client = junction.Client(peer_addr)

    client.connect()
    if not client.wait_connected(timeout=3):
        raise RuntimeError("connection timeout")

    print client.rpc(SERVICE, 0, "echo", ('one',), {})

    rpcs = map(lambda num: client.send_rpc(SERVICE, 0, "echo", (num,)),
            ('two', 'three', 'four', 'five'))

    dependents = [
            rpc.after(functools.partial(second_call, client)).after(third_call)
            for rpc in rpcs]

    while dependents:
        dep = junction.wait_any(dependents)
        dependents.remove(dep)
        print dep.value
示例#7
0
def main():
    peer_addr = RELAY_ADDR if '-r' in sys.argv else SERVICE_ADDR

    client = junction.Client(peer_addr)

    client.connect()
    if not client.wait_connected(timeout=3):
        raise RuntimeError("connection timeout")

    print client.rpc(SERVICE, 0, "echo", ('one', ), {})

    rpcs = map(lambda num: client.send_rpc(SERVICE, 0, "echo", (num, )),
               ('two', 'three', 'four', 'five'))

    dependents = [
        rpc.after(functools.partial(second_call, client)).after(third_call)
        for rpc in rpcs
    ]

    while dependents:
        dep = junction.wait_any(dependents)
        dependents.remove(dep)
        print dep.value