diff --git a/vumi/transports/vumi_bridge/tests/test_vumi_bridge.py b/vumi/transports/vumi_bridge/tests/test_vumi_bridge.py index 23773a705..9d8e1255e 100644 --- a/vumi/transports/vumi_bridge/tests/test_vumi_bridge.py +++ b/vumi/transports/vumi_bridge/tests/test_vumi_bridge.py @@ -29,7 +29,7 @@ def setUp(self): self.add_cleanup(self.finish_requests) @inlineCallbacks - def get_transport(self, **config): + def get_transport(self, start=True, **config): defaults = { 'account_key': 'account-key', 'conversation_key': 'conversation-key', @@ -39,7 +39,8 @@ def get_transport(self, **config): defaults.update(config) transport = yield self.tx_helper.get_transport(defaults, start=False) transport.agent_factory = self.fake_http.get_agent - yield transport.startWorker() + if start: + yield transport.startWorker() returnValue(transport) @inlineCallbacks @@ -66,8 +67,8 @@ class TestGoConversationTransport(TestGoConversationTransportBase): def test_server_settings_without_configs(self): return self.assertFailure(self.get_transport(), ConfigError) - def get_configured_transport(self): - return self.get_transport(web_path='test', web_port='0') + def get_configured_transport(self, start=True): + return self.get_transport(start=start, web_path='test', web_port='0') def post_msg(self, url, msg_json): data = msg_json.encode('utf-8') @@ -232,3 +233,8 @@ def test_sending_bad_messages(self): self.assertEquals(status['type'], 'bad_request') self.assertEquals(status['message'], 'Message submission rejected by Vumi Go') + + @inlineCallbacks + def test_teardown_before_start(self): + transport = yield self.get_configured_transport(start=False) + yield transport.teardown_transport() diff --git a/vumi/transports/vumi_bridge/vumi_bridge.py b/vumi/transports/vumi_bridge/vumi_bridge.py index e977ca264..9818ec6e5 100644 --- a/vumi/transports/vumi_bridge/vumi_bridge.py +++ b/vumi/transports/vumi_bridge/vumi_bridge.py @@ -199,6 +199,9 @@ class GoConversationTransport(GoConversationTransportBase): CONFIG_CLASS = VumiBridgeTransportConfig + redis = None + web_resource = None + @inlineCallbacks def setup_transport(self): self.setup_cacerts() @@ -215,8 +218,12 @@ def setup_transport(self): ], config.web_port) self.status_detect = StatusEdgeDetector() + @inlineCallbacks def teardown_transport(self): - return self.web_resource.loseConnection() + if self.web_resource is not None: + yield self.web_resource.loseConnection() + if self.redis is not None: + self.redis.close_manager() def setup_cacerts(self): # TODO: This installs an older CA certificate chain that allows