[MediaWiki-commits] [Gerrit] Add unit tests for HttpConfigurationObserver - change (operations...pybal)

2015-08-27 Thread Giuseppe Lavagetto (Code Review)
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)

2015-08-27 Thread Giuseppe Lavagetto (Code Review)
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