[MediaWiki-commits] [Gerrit] Add unit tests for HttpConfigurationObserver - change (operations...pybal)
Giuseppe Lavagetto has submitted this change and it was merged. Change subject: Add unit tests for HttpConfigurationObserver .. Add unit tests for HttpConfigurationObserver Change-Id: I695ce5352de1b35ac47848a075d7d09d0ba67833 --- M pybal/test/fixtures.py M pybal/test/test_config.py 2 files changed, 68 insertions(+), 3 deletions(-) Approvals: Giuseppe Lavagetto: Looks good to me, approved diff --git a/pybal/test/fixtures.py b/pybal/test/fixtures.py index ab480f8..76b4bbc 100644 --- a/pybal/test/fixtures.py +++ b/pybal/test/fixtures.py @@ -11,7 +11,7 @@ import pybal.util import twisted.test.proto_helpers import twisted.trial.unittest - +from twisted.internet import defer class ServerStub(object): Test stub for `pybal.Server`. @@ -64,6 +64,24 @@ self.configuration = configuration +class MockClientGetPage(object): +def __init__(self, data): +self.return_value = data + +def getPage(self, url): +d = defer.Deferred() +d.callback(self.return_value) +return d + +def addErr(self, msg): +self.errMsg = ValueError(msg) + +def getPageError(self, url): +d = defer.Deferred() +d.errback(self.errMsg) +return d + + class PyBalTestCase(twisted.trial.unittest.TestCase): Base class for PyBal test cases. diff --git a/pybal/test/test_config.py b/pybal/test/test_config.py index 2e77801..29dfa68 100644 --- a/pybal/test/test_config.py +++ b/pybal/test/test_config.py @@ -12,10 +12,11 @@ import pybal import pybal.config +import json -from .fixtures import PyBalTestCase - +from .fixtures import PyBalTestCase, MockClientGetPage +from twisted.python.failure import Failure class DummyConfigurationObserver(pybal.config.ConfigurationObserver): urlScheme = 'dummy://' @@ -115,3 +116,49 @@ # Needed for nose to pass... it doesn't really get raised self.assertEquals(self.observer.parseLegacyConfig(invalid_config), {}) self.flushLoggedErrors(KeyError) + + +class HttpConfigurationObserverTestCase(PyBalTestCase): +data = +{ +mw1200: { enabled: true, weight: 10 }, +mw1201: {enabled: false, weight: 1 } +} + + +def setUp(self): +super(HttpConfigurationObserverTestCase, self).setUp() +self.observer = self.getObserver() + +def getObserver(self, url='http://example.com/pybal-config/example.json'): +return pybal.config.HttpConfigurationObserver( +self.coordinator, url) + +def testReloadConfig(self): +Test `HttpConfigurationObserver.reloadConfig` +m = MockClientGetPage(self.data) +with mock.patch('twisted.web.client.getPage', m.getPage): +self.observer.reloadConfig() +self.assertEquals(self.coordinator.config, json.loads(self.data)) + +errMsg = 'Hamsters!' +m.addErr(errMsg) +self.observer.logError = mock.MagicMock() +with mock.patch('twisted.web.client.getPage', m.getPageError): +self.observer.reloadConfig() +# Configuration hasn't changed +self.assertEquals(self.coordinator.config, json.loads(self.data)) +# Error was logged +self.assertTrue(self.observer.logError.called) + +def testOnConfigReceived(self): +Test `HttpConfigurationObserver.OnConfigReceived` +self.observer.lastConfig = json.loads(self.data) +self.coordinator.config = None +# No change in config means no onConfigUpdate +self.observer.onConfigReceived(self.data) +self.assertEquals(self.coordinator.config, None) +# Config gets updated +self.observer.lastConfig['mw1201'][enabled] = True +self.observer.onConfigReceived(self.data) +self.assertEquals(self.coordinator.config, json.loads(self.data)) -- To view, visit https://gerrit.wikimedia.org/r/234253 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I695ce5352de1b35ac47848a075d7d09d0ba67833 Gerrit-PatchSet: 2 Gerrit-Project: operations/debs/pybal Gerrit-Branch: master Gerrit-Owner: Giuseppe Lavagetto glavage...@wikimedia.org Gerrit-Reviewer: Giuseppe Lavagetto glavage...@wikimedia.org Gerrit-Reviewer: jenkins-bot ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Add unit tests for HttpConfigurationObserver - change (operations...pybal)
Giuseppe Lavagetto has uploaded a new change for review. https://gerrit.wikimedia.org/r/234253 Change subject: Add unit tests for HttpConfigurationObserver .. Add unit tests for HttpConfigurationObserver Change-Id: I695ce5352de1b35ac47848a075d7d09d0ba67833 --- M pybal/test/fixtures.py M pybal/test/test_config.py 2 files changed, 68 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/debs/pybal refs/changes/53/234253/1 diff --git a/pybal/test/fixtures.py b/pybal/test/fixtures.py index ab480f8..76b4bbc 100644 --- a/pybal/test/fixtures.py +++ b/pybal/test/fixtures.py @@ -11,7 +11,7 @@ import pybal.util import twisted.test.proto_helpers import twisted.trial.unittest - +from twisted.internet import defer class ServerStub(object): Test stub for `pybal.Server`. @@ -64,6 +64,24 @@ self.configuration = configuration +class MockClientGetPage(object): +def __init__(self, data): +self.return_value = data + +def getPage(self, url): +d = defer.Deferred() +d.callback(self.return_value) +return d + +def addErr(self, msg): +self.errMsg = ValueError(msg) + +def getPageError(self, url): +d = defer.Deferred() +d.errback(self.errMsg) +return d + + class PyBalTestCase(twisted.trial.unittest.TestCase): Base class for PyBal test cases. diff --git a/pybal/test/test_config.py b/pybal/test/test_config.py index 2e77801..bc86edb 100644 --- a/pybal/test/test_config.py +++ b/pybal/test/test_config.py @@ -12,10 +12,11 @@ import pybal import pybal.config +import json -from .fixtures import PyBalTestCase - +from .fixtures import PyBalTestCase, MockClientGetPage +from twisted.python.failure import Failure class DummyConfigurationObserver(pybal.config.ConfigurationObserver): urlScheme = 'dummy://' @@ -115,3 +116,49 @@ # Needed for nose to pass... it doesn't really get raised self.assertEquals(self.observer.parseLegacyConfig(invalid_config), {}) self.flushLoggedErrors(KeyError) + + +class HttpConfigurationObserverTestCase(PyBalTestCase): +data = +{ +mw1200: { enabled: true, weight: 10 }, +mw1201: {enabled: false, weight: 1 } +} + + +def setUp(self): +super(HttpConfigurationObserverTestCase, self).setUp() +self.observer = self.getObserver() + +def getObserver(self, url='http://example.com/pybal-config/example.json'): +return pybal.config.HttpConfigurationObserver( +self.coordinator, url) + +def testReloadConfig(self): +Test `HttpConfigurationObserver.reloadConfig` +m = MockClientGetPage(self.data) +with mock.patch('twisted.web.client.getPage', m.getPage): +self.observer.reloadConfig() +self.assertEquals(self.coordinator.config, json.loads(self.data)) + +errMsg = 'Hamsters!' +m.addErr(errMsg) +self.observer.logError = mock.MagicMock() +with mock.patch('twisted.web.client.getPage', m.getPageError): +self.observer.reloadConfig() +# Configuration hasn't changed +self.assertEquals(self.coordinator.config, json.loads(self.data)) +# Error was logged +self.observer.logError.assert_called() + +def testOnConfigReceived(self): +Test `HttpConfigurationObserver.OnConfigReceived` +self.observer.lastConfig = json.loads(self.data) +self.coordinator.config = None +# No change in config means no onConfigUpdate +self.observer.onConfigReceived(self.data) +self.assertEquals(self.coordinator.config, None) +# Config gets updated +self.observer.lastConfig['mw1201'][enabled] = True +self.observer.onConfigReceived(self.data) +self.assertEquals(self.coordinator.config, json.loads(self.data)) -- To view, visit https://gerrit.wikimedia.org/r/234253 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I695ce5352de1b35ac47848a075d7d09d0ba67833 Gerrit-PatchSet: 1 Gerrit-Project: operations/debs/pybal Gerrit-Branch: master Gerrit-Owner: Giuseppe Lavagetto glavage...@wikimedia.org ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits