def make_factory(self, rpc_service=None): listener = FakePostgresListenerService() factory = WebSocketFactory(listener) if rpc_service is None: rpc_service = MagicMock() self.patch(services, "getServiceNamed").return_value = rpc_service return factory
def make_webapp(self): listener = FakePostgresListenerService() service = webapp.WebApplicationService(0, listener, sentinel.status_worker) mock_makeEndpoint = self.patch(service, "_makeEndpoint") mock_makeEndpoint.return_value = TCP4ServerEndpoint( reactor, 0, interface="localhost") return service
def make_webapp(self): listener = FakePostgresListenerService() service_endpoint = self.make_endpoint() service = webapp.WebApplicationService( service_endpoint, listener, sentinel.status_worker) # Patch the getServiceNamed so the WebSocketFactory does not # error trying to register for events from the RPC service. In this # test the RPC service is not started. self.patch(eventloop.services, "getServiceNamed") return service
def test_make_WebApplicationService(self): service = eventloop.make_WebApplicationService( FakePostgresListenerService(), sentinel.status_worker) self.assertThat(service, IsInstance(webapp.WebApplicationService)) # The port is set to port 5243 on localhost. self.assertThat(service.port, Equals(DEFAULT_PORT)) # It is registered as a factory in RegionEventLoop. self.assertIs(eventloop.make_WebApplicationService, eventloop.loop.factories["web"]["factory"]) # Has a dependency of postgres-listener. self.assertEquals(["postgres-listener-worker", "status-worker"], eventloop.loop.factories["web"]["requires"]) self.assertFalse(eventloop.loop.factories["web"]["only_on_master"])
def make_protocol(self, patch_authenticate=True, transport_uri=''): listener = FakePostgresListenerService() factory = WebSocketFactory(listener) self.patch(factory, "registerRPCEvents") self.patch(factory, "unregisterRPCEvents") factory.startFactory() self.addCleanup(factory.stopFactory) protocol = factory.buildProtocol(None) protocol.transport = MagicMock() protocol.transport.cookies = b"" protocol.transport.uri = transport_uri if patch_authenticate: self.patch(protocol, "authenticate") return protocol, factory
def test_make_RackControllerService(self): service = eventloop.make_RackControllerService( FakePostgresListenerService(), sentinel.rpc_advertise) self.assertThat(service, IsInstance(rack_controller.RackControllerService)) # It is registered as a factory in RegionEventLoop. self.assertIs(eventloop.make_RackControllerService, eventloop.loop.factories["rack-controller"]["factory"]) # Has a dependency of ipc-worker and postgres-listener. self.assertEquals( ["ipc-worker", "postgres-listener-worker"], eventloop.loop.factories["rack-controller"]["requires"]) self.assertFalse( eventloop.loop.factories["rack-controller"]["only_on_master"])
def test_make_WebApplicationService(self): service = eventloop.make_WebApplicationService( FakePostgresListenerService(), sentinel.status_worker) self.assertThat(service, IsInstance(webapp.WebApplicationService)) # The endpoint is set to port 5243 on localhost. self.assertThat( service.endpoint, MatchesStructure.byEquality(reactor=reactor, addressFamily=socket.AF_INET6)) self.assertThat(service.endpoint.port, Equals(DEFAULT_PORT)) # IPv6 address is: (host, port, flowinfo, scopeid) self.assertThat(service.endpoint.socket.getsockname(), Equals(("::", DEFAULT_PORT, 0, 0))) # It is registered as a factory in RegionEventLoop. self.assertIs(eventloop.make_WebApplicationService, eventloop.loop.factories["web"]["factory"]) # Has a dependency of postgres-listener. self.assertEquals(["postgres-listener-worker", "status-worker"], eventloop.loop.factories["web"]["requires"]) self.assertFalse(eventloop.loop.factories["web"]["only_on_master"])
def make_protocol(self, patch_authenticate=True, transport_uri=""): listener = FakePostgresListenerService() factory = WebSocketFactory(listener) self.patch(factory, "registerRPCEvents") self.patch(factory, "unregisterRPCEvents") factory.startFactory() self.addCleanup(factory.stopFactory) protocol = factory.buildProtocol(None) protocol.transport = MagicMock() protocol.transport.cookies = b"" protocol.transport.uri = transport_uri protocol.transport.host = random.choice([ maastesting_factory.make_ipv4_address() + ":%d" % maastesting_factory.pick_port(), "[" + maastesting_factory.make_ipv6_address() + "]:%d" % maastesting_factory.pick_port(), ]) protocol.request = HttpRequest() if patch_authenticate: self.patch(protocol, "authenticate") return protocol, factory