Mforns has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/231438

Change subject: Permit custom db param in report config
......................................................................

Permit custom db param in report config

Until now, reportupdater had only used the default db for
all reports. The custom-db-per-report feature was missing.
This patch adds it.

Bug: T107502
Change-Id: I09b557696056b062d3cf46124d0c04b856353600
---
M reportupdater/reader.py
M test/reader_test.py
2 files changed, 35 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/analytics/limn-mobile-data 
refs/changes/38/231438/1

diff --git a/reportupdater/reader.py b/reportupdater/reader.py
index 2cb0ae3..e004d90 100644
--- a/reportupdater/reader.py
+++ b/reportupdater/reader.py
@@ -55,7 +55,7 @@
         report.is_timeboxed = self.get_is_timeboxed(report_config)
         report.is_funnel = self.get_is_funnel(report_config)
         report.first_date = self.get_first_date(report_config, 
report.is_timeboxed)
-        report.db_key = self.get_db_key()
+        report.db_key = self.get_db_key(report_config)
         report.sql_template = self.get_sql_template(report_key)
         report.explode_by = self.get_explode_by(report_config)
         return report
@@ -106,15 +106,18 @@
             return None
 
 
-    def get_db_key(self):
-        if 'defaults' not in self.config:
+    def get_db_key(self, report_config):
+        if 'db' in report_config:
+            db_key = report_config['db']
+        elif 'defaults' not in self.config:
             raise KeyError('Defaults is not in config.')
-        if 'db' not in self.config['defaults']:
+        elif 'db' not in self.config['defaults']:
             raise KeyError('DB default is not in defaults config.')
-        db_key = self.config['defaults']['db']
+        else:
+            db_key = self.config['defaults']['db']
         if not isinstance(db_key, str):
-            raise ValueError('DB default is not a string.')
-        return self.config['defaults']['db']
+            raise ValueError('DB key is not a string.')
+        return db_key
 
 
     def get_sql_template(self, report_key):
diff --git a/test/reader_test.py b/test/reader_test.py
index ec6c3f5..2851132 100644
--- a/test/reader_test.py
+++ b/test/reader_test.py
@@ -137,17 +137,35 @@
         self.assertEqual(result, expected)
 
 
+    def test_get_db_key_when_in_report_config(self):
+        db_key = 'some-db-key'
+        report_config = {'db': db_key}
+        reader = Reader({})
+        result = reader.get_db_key(report_config)
+        self.assertEqual(result, db_key)
+
+
+    def test_get_db_key_when_report_config_db_is_not_a_string(self):
+        db_key = ('not', 'a', 'string')
+        report_config = {'db': db_key}
+        reader = Reader({})
+        with self.assertRaises(ValueError):
+            reader.get_db_key(report_config)
+
+
     def test_get_db_key_when_defaults_is_not_in_config(self):
+        report_config = {}
         reader = Reader({})
         with self.assertRaises(KeyError):
-            reader.get_db_key()
+            reader.get_db_key(report_config)
 
 
     def test_get_db_key_when_defaults_db_is_not_in_config(self):
         config = {'defaults': {}}
+        report_config = {}
         reader = Reader(config)
         with self.assertRaises(KeyError):
-            reader.get_db_key()
+            reader.get_db_key(report_config)
 
 
     def test_get_db_key_when_defaults_db_is_not_a_string(self):
@@ -156,13 +174,15 @@
                 'db': None
             }
         }
+        report_config = {}
         reader = Reader(config)
         with self.assertRaises(ValueError):
-            reader.get_db_key()
+            reader.get_db_key(report_config)
 
 
-    def test_get_db_key(self):
-        result = self.reader.get_db_key()
+    def test_get_db_key_when_in_defaults(self):
+        report_config = {}
+        result = self.reader.get_db_key(report_config)
         expected = self.config['defaults']['db']
         self.assertEqual(result, expected)
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I09b557696056b062d3cf46124d0c04b856353600
Gerrit-PatchSet: 1
Gerrit-Project: analytics/limn-mobile-data
Gerrit-Branch: master
Gerrit-Owner: Mforns <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to