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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits