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