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

Change subject: Expand test coverage of server.py
......................................................................

Expand test coverage of server.py

Change-Id: I56c521a1a4f24c73839f76bcf52afb11efa739e1
---
M pybal/test/test_server.py
1 file changed, 52 insertions(+), 4 deletions(-)


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

diff --git a/pybal/test/test_server.py b/pybal/test/test_server.py
index 01da0d9..e6d6bc1 100644
--- a/pybal/test/test_server.py
+++ b/pybal/test/test_server.py
@@ -9,12 +9,12 @@
 
 import mock
 
-import pybal.coordinator
+import pybal.server
 
 from twisted.python import failure
 from twisted.internet.reactor import getDelayedCalls
 
-from .fixtures import PyBalTestCase
+from .fixtures import PyBalTestCase, StubLVSService
 
 class ServerTestCase(PyBalTestCase):
     """Test case for `pybal.server.Server`."""
@@ -23,9 +23,10 @@
         super(ServerTestCase, self).setUp()
 
         self.server = pybal.server.Server(
-            'example.com', mock.MagicMock())
+            'example.com', self.lvsservice)
 
         self.mockMonitor = mock.MagicMock()
+        self.mockCoordinator = mock.MagicMock()
         self.server.addMonitor(self.mockMonitor)
 
         self.exampleConfigDict = {
@@ -40,6 +41,26 @@
         for call in getDelayedCalls():
             if call.func.func_name == 'maybeParseConfig':
                 call.cancel()
+
+    def testEq(self):
+        self.assertEquals(self.server, self.server)
+
+        # Create a Server instance with different hostname
+        otherServer = pybal.server.Server('other.example.com', self.lvsservice)
+        self.assertNotEqual(self.server, otherServer)
+
+        # Create a Server instance with equal hostname but different LVSService
+        otherLVSService = StubLVSService(
+            'otherservice',
+            (self.protocol, self.ip, self.port, self.scheduler),
+            self.config)
+        otherServer = pybal.server.Server('example.com', otherLVSService)
+        self.assertNotEqual(self.server, otherServer)
+
+    def testHash(self):
+        # Create a Server instance with different hostname
+        otherServer = pybal.server.Server('other.example.com', self.lvsservice)
+        self.assertNotEqual(hash(self.server), hash(otherServer))
 
     def testAddMonitor(self):
         self.assertIn(self.mockMonitor, self.server.monitors)
@@ -68,9 +89,31 @@
             self.assertEquals(self.server.ready, result)
 
         self.server.createMonitoringInstances = mock.MagicMock()
-        deferred = self.server.initialize(coordinator=mock.MagicMock())
+        deferred = self.server.initialize(self.mockCoordinator)
         deferred.addCallback(callback)
         return deferred
+
+    @mock.patch('pybal.server.Server.createMonitoringInstances')
+    def testReady(self, mock_createMonitoringInstances):
+        r = self.server._ready(True, self.mockCoordinator)
+        self.assertTrue(r)
+        self.assertTrue(self.server.ready)
+        mock_createMonitoringInstances.assert_called()
+
+    def testInitFailed(self):
+        r = self.server._initFailed(failure.Failure(Exception("Fake failure")))
+        self.assertFalse(r)
+        self.assertFalse(self.server.ready)
+
+    def testCreateMonitoringInstances(self):
+        assert 'monitors' not in self.config
+        self.assertRaises(KeyError,
+            self.server.createMonitoringInstances, self.mockCoordinator)
+
+        self.config['monitors'] = "[ \"NonexistentMonitor\" ]"
+        self.server.createMonitoringInstances(self.mockCoordinator)
+
+        # TODO: test creation of a (mock) monitor
 
     def testCalcStatus(self):
         self.mockMonitor.up = True
@@ -95,6 +138,11 @@
         self.assertFalse(self.server.calcStatus())
         self.assertTrue(self.server.calcPartialStatus())
 
+    def testTextStatus(self):
+        textStatus = self.server.textStatus()
+        self.assertTrue(isinstance(textStatus, str))
+        self.assertEquals(len(textStatus.split('/')), 3)
+
     def testMaintainState(self):
         self.server.pooled = True
         self.server.enabled = False

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I56c521a1a4f24c73839f76bcf52afb11efa739e1
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