Преглед изворни кода

Add tests for config reloading error conditions

Mike Naberezny пре 11 година
родитељ
комит
435a97a1ce
2 измењених фајлова са 79 додато и 4 уклоњено
  1. 6 0
      supervisor/tests/base.py
  2. 73 4
      supervisor/tests/test_supervisorctl.py

+ 6 - 0
supervisor/tests/base.py

@@ -867,6 +867,10 @@ class DummySupervisorRPCNamespace:
             raise Fault(xmlrpc.Faults.ALREADY_ADDED, '')
         if name == 'BAD_NAME':
             raise Fault(xmlrpc.Faults.BAD_NAME, '')
+        if name == 'FAILED':
+            raise Fault(xmlrpc.Faults.FAILED, '')
+        if name == 'SHUTDOWN_STATE':
+            raise Fault(xmlrpc.Faults.SHUTDOWN_STATE, '')
         if hasattr(self, 'processes'):
             self.processes.append(name)
         else:
@@ -878,6 +882,8 @@ class DummySupervisorRPCNamespace:
             raise Fault(xmlrpc.Faults.STILL_RUNNING, '')
         if name == 'BAD_NAME':
             raise Fault(xmlrpc.Faults.BAD_NAME, '')
+        if name == 'FAILED':
+            raise Fault(xmlrpc.Faults.FAILED, '')
         self.processes.remove(name)
 
     def clearProcessStdoutLog(self, name):

+ 73 - 4
supervisor/tests/test_supervisorctl.py

@@ -955,7 +955,7 @@ class TestDefaultControllerPlugin(unittest.TestCase):
         plugin = self._makeOne()
         from supervisor import xmlrpc
 
-        def raise_fault(*arg, **kw):     
+        def raise_fault(*arg, **kw):
             raise xmlrpclib.Fault(xmlrpc.Faults.SHUTDOWN_STATE, 'bye')
         plugin.ctl.options._server.supervisor.shutdown = raise_fault
 
@@ -1037,16 +1037,34 @@ class TestDefaultControllerPlugin(unittest.TestCase):
         self.assertEqual(result, None)
         self.assertEqual(calls[0], [['added'], ['changed'], ['removed']])
 
-    def test_reread_Fault(self):
+    def test_reread_cant_reread(self):
         plugin = self._makeOne()
         from supervisor import xmlrpc
-        def raise_fault(*arg, **kw):
+        def reloadConfig(*arg, **kw):
             raise xmlrpclib.Fault(xmlrpc.Faults.CANT_REREAD, 'cant')
-        plugin.ctl.options._server.supervisor.reloadConfig = raise_fault
+        plugin.ctl.options._server.supervisor.reloadConfig = reloadConfig
         plugin.do_reread(None)
         self.assertEqual(plugin.ctl.stdout.getvalue(),
                          'ERROR: cant\n')
 
+    def test_reread_shutdown_state(self):
+        plugin = self._makeOne()
+        from supervisor import xmlrpc
+        def reloadConfig(*arg, **kw):
+            raise xmlrpclib.Fault(xmlrpc.Faults.SHUTDOWN_STATE, '')
+        plugin.ctl.options._server.supervisor.reloadConfig = reloadConfig
+        plugin.do_reread(None)
+        self.assertEqual(plugin.ctl.stdout.getvalue(),
+                         'ERROR: supervisor shutting down\n')
+
+    def test_reread_reraises_other_faults(self):
+        plugin = self._makeOne()
+        from supervisor import xmlrpc
+        def reloadConfig(*arg, **kw):
+            raise xmlrpclib.Fault(xmlrpc.Faults.FAILED, '')
+        plugin.ctl.options._server.supervisor.reloadConfig = reloadConfig
+        self.assertRaises(xmlrpclib.Fault, plugin.do_reread, '')
+
     def test__formatConfigInfo(self):
         info = { 'group': 'group1',
                  'name': 'process1',
@@ -1087,6 +1105,31 @@ class TestDefaultControllerPlugin(unittest.TestCase):
         result = plugin.do_avail('')
         self.assertEqual(result, None)
 
+    def test_avail_shutdown_state(self):
+        plugin = self._makeOne()
+        supervisor = plugin.ctl.options._server.supervisor
+
+        def getAllConfigInfo():
+            from supervisor import xmlrpc
+            raise xmlrpclib.Fault(xmlrpc.Faults.SHUTDOWN_STATE, '')
+        supervisor.getAllConfigInfo = getAllConfigInfo
+
+        result = plugin.do_avail('')
+        self.assertEqual(result, None)
+        self.assertEqual(plugin.ctl.stdout.getvalue(),
+                         'ERROR: supervisor shutting down\n')
+
+    def test_avail_reraises_other_faults(self):
+        plugin = self._makeOne()
+        supervisor = plugin.ctl.options._server.supervisor
+
+        def getAllConfigInfo():
+            from supervisor import xmlrpc
+            raise xmlrpclib.Fault(xmlrpc.Faults.FAILED, '')
+        supervisor.getAllConfigInfo = getAllConfigInfo
+
+        self.assertRaises(xmlrpclib.Fault, plugin.do_avail, '')
+
     def test_add_help(self):
         plugin = self._makeOne()
         plugin.help_add()
@@ -1114,6 +1157,17 @@ class TestDefaultControllerPlugin(unittest.TestCase):
         self.assertEqual(plugin.ctl.stdout.getvalue(),
                          'ERROR: no such process/group: BAD_NAME\n')
 
+    def test_add_shutdown_state(self):
+        plugin = self._makeOne()
+        result = plugin.do_add('SHUTDOWN_STATE')
+        self.assertEqual(result, None)
+        self.assertEqual(plugin.ctl.stdout.getvalue(),
+                         'ERROR: shutting down\n')
+
+    def test_add_reraises_other_faults(self):
+        plugin = self._makeOne()
+        self.assertRaises(xmlrpclib.Fault, plugin.do_add, 'FAILED')
+
     def test_remove_help(self):
         plugin = self._makeOne()
         plugin.help_remove()
@@ -1146,6 +1200,10 @@ class TestDefaultControllerPlugin(unittest.TestCase):
         self.assertEqual(plugin.ctl.stdout.getvalue(),
                          'ERROR: process/group still running: STILL_RUNNING\n')
 
+    def test_remove_reraises_other_faults(self):
+        plugin = self._makeOne()
+        self.assertRaises(xmlrpclib.Fault, plugin.do_remove, 'FAILED')
+
     def test_update_help(self):
         plugin = self._makeOne()
         plugin.help_update()
@@ -1301,6 +1359,17 @@ class TestDefaultControllerPlugin(unittest.TestCase):
         plugin.do_update('')
         self.assertEqual(supervisor.processes, ['removed_group'])
 
+    def test_update_reraises_other_faults(self):
+        plugin = self._makeOne()
+        supervisor = plugin.ctl.options._server.supervisor
+
+        def reloadConfig():
+            from supervisor import xmlrpc
+            raise xmlrpclib.Fault(xmlrpc.Faults.FAILED, 'FAILED')
+        supervisor.reloadConfig = reloadConfig
+
+        self.assertRaises(xmlrpclib.Fault, plugin.do_update, '')
+
     def test_pid_help(self):
         plugin = self._makeOne()
         plugin.help_pid()