Пример #1
0
 def test_4_async_call(self):
     """send a bunch of requests and then wait for responses
     """
     num_calls = 9999
     old_blocking = self._client_sock.setblocking(0)
     try:
         e = rpc.EndPoint(self._client_sock)
         s = set()
         for i in range(1, num_calls + 1):
             s.add(e.send_request("resp", [i]))
         sum = 0
         while s:
             e.block()
             e.process()
             done = set()
             for x in s:
                 r = e.get_response(x)
                 if r is None:
                     continue
                 res, error = r
                 assert error is None
                 sum += res
                 done.add(x)
             assert done.issubset(s)
             s -= done
         assert sum == (1 + num_calls) * num_calls / 2
     finally:
         self._client_sock.setblocking(old_blocking)
Пример #2
0
 def peer_accept_handler(self, new_sock, addr):
     peer = Peer(self._rpc_events)
     table = {
         rpc.MessageType.REQUEST: peer._handle_vrrp_request,
     }
     peer._endpoint = rpc.EndPoint(new_sock, disp_table=table)
     self._peers.append(peer)
     hub.spawn(self._peer_loop_thread, peer)
Пример #3
0
 def setUp(self):
     self._server_sock, self._client_sock = socket.socketpair()
     table = {
         rpc.MessageType.REQUEST: self._handle_request,
         rpc.MessageType.RESPONSE: self._handle_response,
         rpc.MessageType.NOTIFY: self._handle_notification
     }
     self._requests = set()
     self._server_sock.setblocking(0)
     self._server_endpoint = rpc.EndPoint(self._server_sock,
                                          disp_table=table)
     self._server_thread = hub.spawn(self._server_endpoint.serve)
Пример #4
0
 def test_4_async_call2(self):
     """both sides act as rpc client and server
     """
     assert not self._requests
     num_calls = 100
     old_blocking = self._client_sock.setblocking(0)
     try:
         e = rpc.EndPoint(self._client_sock)
         s = set()
         for i in range(1, num_calls + 1):
             s.add(e.send_request("callback", [i, "ourcallback", 0]))
         sum = 0
         while s:
             e.block()
             e.process()
             done = set()
             for x in s:
                 r = e.get_response(x)
                 if r is None:
                     continue
                 res, error = r
                 assert error is None
                 sum += res
                 done.add(x)
             assert done.issubset(s)
             s -= done
             r = e.get_request()
             if not r is None:
                 msgid, method, params = r
                 assert method == "ourcallback"
                 omsgid, n, cb, v = params
                 assert omsgid in s
                 assert cb == "ourcallback"
                 assert n > 0
                 e.send_response(msgid, result=[omsgid, n - 1, cb, v + 1])
         assert sum == (1 + num_calls) * num_calls / 2
     finally:
         self._client_sock.setblocking(old_blocking)
     assert not self._requests