Mark Bergsma has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/405297 )

Change subject: Add unit testing of monitor creation/loading
......................................................................

Add unit testing of monitor creation/loading

Add a mock monitor to aid unit testing

Change-Id: I8e0c21605f7c130426d61ebef72afc1f1a4bc208
---
M pybal/monitors/__init__.py
M pybal/test/test_server.py
2 files changed, 16 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/debs/pybal 
refs/changes/97/405297/1

diff --git a/pybal/monitors/__init__.py b/pybal/monitors/__init__.py
index d0743a7..d64e73e 100644
--- a/pybal/monitors/__init__.py
+++ b/pybal/monitors/__init__.py
@@ -5,4 +5,4 @@
 The monitors package contains all (complete) monitoring implementations of 
PyBal
 """
 
-__all__ = [ 'proxyfetch', 'idleconnection', 'runcommand', 'dnsquery' ]
+__all__ = [ 'proxyfetch', 'idleconnection', 'runcommand', 'dnsquery', 'mock' ]
diff --git a/pybal/test/test_server.py b/pybal/test/test_server.py
index 3d62f83..1df0121 100644
--- a/pybal/test/test_server.py
+++ b/pybal/test/test_server.py
@@ -13,7 +13,7 @@
 import pybal.server
 
 from twisted.python import failure
-from twisted.internet.reactor import getDelayedCalls
+from twisted.internet import reactor
 
 from .fixtures import PyBalTestCase, StubLVSService
 
@@ -38,7 +38,7 @@
         }
 
     def tearDown(self):
-        for call in getDelayedCalls():
+        for call in reactor.getDelayedCalls():
             if call.func.func_name == 'maybeParseConfig':
                 call.cancel()
 
@@ -131,7 +131,19 @@
         self.config['monitors'] = "[ \"NonexistentMonitor\" ]"
         self.server.createMonitoringInstances(self.mockCoordinator)
 
-        # TODO: test creation of a (mock) monitor
+    def testCreateMockMonitoringInstance(self):
+        self.config['monitors'] = "[ \"Mock\" ]"
+        self.server.createMonitoringInstances(self.mockCoordinator)
+        self.assertTrue(self.server.monitors)
+        self.assertTrue(all({m.active for m in self.server.monitors}))
+
+    @mock.patch('twisted.internet.reactor.stop')
+    @mock.patch('importlib.import_module')
+    def testCreateFailingMockMonitoringInstance(self, mocked_import_module, 
mock_reactor):
+        mocked_import_module.side_effect = RuntimeError("Similating runtime 
error to aid unit testing")
+        self.config['monitors'] = "[ \"Mock\" ]"
+        self.server.createMonitoringInstances(self.mockCoordinator)
+        self.assertTrue(mock_reactor.assert_called)
 
     def testCalcStatus(self):
         self.mockMonitor.up = True

-- 
To view, visit https://gerrit.wikimedia.org/r/405297
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8e0c21605f7c130426d61ebef72afc1f1a4bc208
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/pybal
Gerrit-Branch: master
Gerrit-Owner: Mark Bergsma <m...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to