def serve_thrift(handler, server_span_observer=None): # create baseplate root baseplate = Baseplate() if server_span_observer: class TestBaseplateObserver(BaseplateObserver): def on_server_span_created(self, context, server_span): server_span.register(server_span_observer) baseplate.register(TestBaseplateObserver()) # set up the server's processor logger = mock.Mock(spec=logging.Logger) edge_context_factory = make_edge_context_factory() processor = TestService.Processor(handler) processor = baseplateify_processor(processor, logger, baseplate, edge_context_factory) # bind a server socket on an available port server_bind_endpoint = config.Endpoint("127.0.0.1:0") listener = make_listener(server_bind_endpoint) server = make_server({"max_concurrency": "100"}, listener, processor) # figure out what port the server ended up on server_address = listener.getsockname() server.endpoint = config.Endpoint(f"{server_address[0]}:{server_address[1]}") # run the server until our caller is done with it server_greenlet = gevent.spawn(server.serve_forever) try: yield server finally: server_greenlet.kill()
def test_endpoint_unix(self): result = config.Endpoint("/this/is/a/path.sock") self.assertEqual(result.family, socket.AF_UNIX) self.assertEqual(result.address, "/this/is/a/path.sock")
def test_endpoint_inet_invalid(self): with self.assertRaises(ValueError): config.Endpoint("localhost")
def test_endpoint_inet(self): result = config.Endpoint("localhost:1234") self.assertEqual(result.family, socket.AF_INET) self.assertEqual(result.address, ("localhost", 1234))
def test_endpoint_empty(self): with self.assertRaises(ValueError): config.Endpoint("")