Ema has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/404704 )
Change subject: Add unit test cases for Server ...................................................................... Add unit test cases for Server Basic test cases for most of the Server class, with the notable exception of method createMonitoringInstances. Change-Id: Icdc4f9753e95859623b512634c314649fcfda56d --- A pybal/test/test_server.py 1 file changed, 128 insertions(+), 0 deletions(-) Approvals: Ema: Looks good to me, approved jenkins-bot: Verified diff --git a/pybal/test/test_server.py b/pybal/test/test_server.py new file mode 100644 index 0000000..3eefca4 --- /dev/null +++ b/pybal/test/test_server.py @@ -0,0 +1,128 @@ +# -*- coding: utf-8 -*- +""" + PyBal unit tests + ~~~~~~~~~~~~~~~~ + + This module contains tests for `pybal.coordinator.Server`. + +""" + +import mock + +import pybal.coordinator + +from twisted.python import failure +from twisted.internet.reactor import getDelayedCalls + +from .fixtures import PyBalTestCase + +class ServerTestCase(PyBalTestCase): + """Test case for `pybal.coordinator.Server`.""" + + def setUp(self): + super(ServerTestCase, self).setUp() + + self.server = pybal.coordinator.Server( + 'example.com', mock.MagicMock()) + + self.mockMonitor = mock.MagicMock() + self.server.addMonitor(self.mockMonitor) + + self.exampleConfigDict = { + 'host': "example1.example.com", + 'weight': 66, + 'enabled': True, + # FIXME: bug in Server.merge + #'rogue': "this attribute should not be merged" + } + + def tearDown(self): + for call in getDelayedCalls(): + if call.func.func_name == 'maybeParseConfig': + call.cancel() + + def testAddMonitor(self): + self.assertIn(self.mockMonitor, self.server.monitors) + + def testRemoveMonitors(self): + self.server.removeMonitors() + self.assertEqual(len(self.server.monitors), 0) + self.mockMonitor.stop.assert_called() + + def testResolveHostname(self): + def callback(result): + self.assertTrue((result == True or isinstance(result, failure.Failure))) + + deferred = self.server.resolveHostname() + deferred.addCallback(callback) + return deferred + + def testDestroy(self): + self.server.destroy() + self.assertFalse(self.server.enabled) + self.assertEqual(len(self.server.monitors), 0) + + def testInitialize(self): + def callback(result): + self.assertTrue(isinstance(result, bool)) + self.assertEquals(self.server.ready, result) + + self.server.createMonitoringInstances = mock.MagicMock() + deferred = self.server.initialize(coordinator=mock.MagicMock()) + deferred.addCallback(callback) + return deferred + + def testCalcStatus(self): + self.mockMonitor.up = True + self.assertTrue(self.server.calcStatus()) + self.assertTrue(self.server.calcPartialStatus()) + + m = mock.MagicMock() + m.up = True + self.server.addMonitor(m) + self.assertTrue(self.server.calcStatus()) + self.assertTrue(self.server.calcPartialStatus()) + + m.up = False + self.assertFalse(self.server.calcStatus()) + self.assertTrue(self.server.calcPartialStatus()) + + self.mockMonitor.up = False + self.assertFalse(self.server.calcPartialStatus()) + + # Currently, no monitors implies False Status + self.server.removeMonitors() + self.assertFalse(self.server.calcStatus()) + self.assertTrue(self.server.calcPartialStatus()) + + def testMaintainState(self): + self.server.pooled = True + self.server.enabled = False + self.server.maintainState() + self.assertFalse(self.server.pooled) + + self.server.pooled = False + self.server.enabled = True + self.server.maintainState() + self.assertFalse(self.server.up) + + def testMerge(self): + self.server.merge(self.exampleConfigDict) + self.assertEquals(self.server.host, self.exampleConfigDict['host']) + self.assertEquals(self.server.weight, self.exampleConfigDict['weight']) + self.assertEquals(self.server.enabled, self.exampleConfigDict['enabled']) + self.assertDictContainsSubset(self.exampleConfigDict, self.server.__dict__) + + def testDumpState(self): + state = self.server.dumpState() + self.assertLessEqual( + {'pooled', 'weight', 'up', 'enabled'}, + set(state.keys())) + + def testBuildServer(self): + server = self.server.buildServer( + hostName=self.exampleConfigDict['host'], + configuration=self.exampleConfigDict, + lvsservice=mock.MagicMock()) + self.assertTrue(isinstance(server, pybal.coordinator.Server)) + self.assertFalse(server.modified) -- To view, visit https://gerrit.wikimedia.org/r/404704 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Icdc4f9753e95859623b512634c314649fcfda56d Gerrit-PatchSet: 3 Gerrit-Project: operations/debs/pybal Gerrit-Branch: master Gerrit-Owner: Mark Bergsma <m...@wikimedia.org> Gerrit-Reviewer: Ema <e...@wikimedia.org> Gerrit-Reviewer: Giuseppe Lavagetto <glavage...@wikimedia.org> Gerrit-Reviewer: Volans <rcocci...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits