summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gear/__init__.py14
-rw-r--r--gear/tests/test_gear.py5
2 files changed, 14 insertions, 5 deletions
diff --git a/gear/__init__.py b/gear/__init__.py
index a4b8e23..7fccc34 100644
--- a/gear/__init__.py
+++ b/gear/__init__.py
@@ -1105,11 +1105,15 @@ class BaseClientServer(object):
The object may no longer be used after shutdown is called.
"""
- self.log.debug("Beginning shutdown")
- self._shutdown()
- self.log.debug("Beginning cleanup")
- self._cleanup()
- self.log.debug("Finished shutdown")
+ if self.running:
+ self.log.debug("Beginning shutdown")
+ self._shutdown()
+ self.log.debug("Beginning cleanup")
+ self._cleanup()
+ self.log.debug("Finished shutdown")
+ else:
+ self.log.warning("Shutdown called when not currently running. "
+ "Ignoring.")
def _shutdown(self):
# The first part of the shutdown process where all threads
diff --git a/gear/tests/test_gear.py b/gear/tests/test_gear.py
index d90d99e..6398b9e 100644
--- a/gear/tests/test_gear.py
+++ b/gear/tests/test_gear.py
@@ -287,6 +287,11 @@ class TestClient(tests.BaseTestCase):
acl.revokeGrant('manager')
self.assertFalse(acl.canGrant('manager'))
+ def test_double_shutdown(self):
+ client = gear.Client()
+ client.shutdown()
+ client.shutdown()
+
def load_tests(loader, in_tests, pattern):
return testscenarios.load_tests_apply_scenarios(loader, in_tests, pattern)