예제 #1
0
 def test_bind_error(self):
     first_listener = self.Listener('SomeService', ('localhost', 59357))
     second_listener = self.Listener('SomeService', ('localhost', 59357))
     with self.assertRaises(BindError):
         with start_stop_ctx(first_listener):
             with start_stop_ctx(second_listener):
                 pass
예제 #2
0
 def test_bind_from_pool(self):
     self.app.port_range = (59000, 59100)
     first_listener = self.Listener('SomeService', ('localhost', None))
     second_listener = self.Listener('SomeService', ('localhost', None))
     with start_stop_ctx(first_listener):
         with start_stop_ctx(second_listener):
             self.assertEqual(1, second_listener.port - first_listener.port)
예제 #3
0
 def check_request(self, worker):
     connection, data, request_id = Mock(), StringIO(''), 1
     with start_stop_ctx(worker):
         producer = worker.create_producer(self.service_name)
         producer(connection, data, request_id)
         self.wait_for_predicate(lambda: not connection.ready.called)
         self.assertEqual(1, self.processor.process.call_count)
         self.assertEqual(1, connection.ready.call_count)
         self.assertEqual((True, '', 1), connection.ready.call_args[0])
예제 #4
0
 def maybe_connect(self, source, acceptor):
     client = socket.socket()
     client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
     source.bind(('localhost', 0))
     source.listen(0)
     with closing(source), closing(client), start_stop_ctx(acceptor):
         client.settimeout(TIMEOUT)
         client.connect(source.getsockname())
         self.wakeup_loop()
         yield client
예제 #5
0
 def maybe_connect(self, source, acceptor):
     client = socket.socket()
     client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
     source.bind(('localhost', 0))
     source.listen(0)
     with closing(source), closing(client), start_stop_ctx(acceptor):
         client.settimeout(TIMEOUT)
         client.connect(source.getsockname())
         self.wakeup_loop()
         yield client
예제 #6
0
 def test_producer(self):
     connection, data, request_id = \
         object(), object(), object()
     with start_stop_ctx(self.create_worker()) as worker:
         producer = worker.create_producer(self.service_name)
         producer(connection, data, request_id)
         consumer = worker.consumer
         self.assertEqual(1, consumer.call_count)
         args, kwargs = consumer.call_args
         self.assertEqual(2, len(args))
         self.assertTrue(callable(args[0]))
         self.assertTrue(callable(args[1]))
예제 #7
0
 def test_producer(self):
     connection, data, request_id = \
         object(), object(), object()
     with start_stop_ctx(self.create_worker()) as worker:
         producer = worker.create_producer(self.service_name)
         producer(connection, data, request_id)
         consumer = worker.consumer
         self.assertEqual(1, consumer.call_count)
         args, kwargs = consumer.call_args
         self.assertEqual(2, len(args))
         self.assertTrue(callable(args[0]))
         self.assertTrue(callable(args[1]))
예제 #8
0
 def test_callback(self):
     connection, data, request_id, result = \
         Mock(), object(), object(), (None, object())
     connection.is_waiting.return_value = True
     with start_stop_ctx(self.create_worker()) as worker:
         request = self.Worker.Request(self.loop, connection, data,
                                       request_id, self.service_name)
         request.execute(Mock(return_value=result))
         callback = worker.create_callback()
         callback(request, result)
         self.assertEqual(1, connection.ready.call_count)
         args, kwargs = connection.ready.call_args
         self.assertTrue(args[0])
         self.assertIs(result[1], args[1])
         self.assertIs(request_id, args[2])
예제 #9
0
 def test_callback(self):
     connection, data, request_id, result = \
         Mock(), object(), object(), (None, object())
     connection.is_waiting.return_value = True
     with start_stop_ctx(self.create_worker()) as worker:
         request = self.Worker.Request(
             self.loop, connection, data, request_id, self.service_name)
         request.execute(Mock(return_value=result))
         callback = worker.create_callback()
         callback(request, result)
         self.assertEqual(1, connection.ready.call_count)
         args, kwargs = connection.ready.call_args
         self.assertTrue(args[0])
         self.assertIs(result[1], args[1])
         self.assertIs(request_id, args[2])
예제 #10
0
 def test_register(self):
     acceptors = self.Acceptors()
     sock = socket.socket()
     sock.bind(('localhost', 0))
     sock.listen(0)
     with closing(sock), start_stop_ctx(acceptors):
         acceptors.register(sock.fileno(), self.service_name)
         self.wakeup_loop()
         registered_acceptors = list(acceptors)
         self.assertEqual(1, len(registered_acceptors))
         acceptor = registered_acceptors[0]
         self.assertFalse(acceptor.active)
         acceptors.start_by_name(self.service_name)
         self.wakeup_loop()
         self.wait_for_predicate(lambda: not acceptor.active)
         self.assertTrue(acceptor.active)
     self.assertFalse(acceptor.active)
예제 #11
0
 def test_start_stop(self):
     listener = self.Listener('SomeService', ('localhost', 0))
     with start_stop_ctx(listener):
         self.assertLess(0, listener.port)
         self.assertEqual(socket.gethostbyname('localhost'), listener.host)
         self.assertFalse(listener.channel.closed)
예제 #12
0
 def context(self):
     hub = self.hub
     return start_stop_ctx(hub)
예제 #13
0
 def context(self):
     hub = self.hub
     return start_stop_ctx(hub)