From 805786a8378f40c16a00b18f0b000d5146a05bc6 Mon Sep 17 00:00:00 2001 From: John Bodley <4567245+john-bodley@users.noreply.github.com> Date: Wed, 4 Apr 2018 17:16:53 -0700 Subject: [PATCH] [druid] Excluding refreshing verbose name (#4761) (cherry picked from commit df4ff05441eaac7ca99f5725956f500344bc257d) --- superset/connectors/druid/models.py | 2 +- tests/druid_tests.py | 49 +++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/superset/connectors/druid/models.py b/superset/connectors/druid/models.py index 0137f4bbca81c..2ad25b67ce648 100644 --- a/superset/connectors/druid/models.py +++ b/superset/connectors/druid/models.py @@ -370,7 +370,7 @@ def refresh_metrics(self): for metric in metrics.values(): dbmetric = dbmetrics.get(metric.metric_name) if dbmetric: - for attr in ['json', 'metric_type', 'verbose_name']: + for attr in ['json', 'metric_type']: setattr(dbmetric, attr, getattr(metric, attr)) else: with db.session.no_autoflush: diff --git a/tests/druid_tests.py b/tests/druid_tests.py index 7406dacbc31e8..b0d9caff76b70 100644 --- a/tests/druid_tests.py +++ b/tests/druid_tests.py @@ -376,13 +376,19 @@ def test_refresh_metadata(self, PyDruid): 'double{}'.format(agg.capitalize()), ) - # Augment a metric. - metadata = SEGMENT_METADATA[:] - metadata[0]['columns']['metric1']['type'] = 'LONG' - instance = PyDruid.return_value - instance.segment_metadata.return_value = metadata - cluster.refresh_datasources() + @patch('superset.connectors.druid.models.PyDruid') + def test_refresh_metadata_augment_type(self, PyDruid): + self.login(username='admin') + cluster = self.get_cluster(PyDruid) + cluster.refresh_datasources() + metadata = SEGMENT_METADATA[:] + metadata[0]['columns']['metric1']['type'] = 'LONG' + instance = PyDruid.return_value + instance.segment_metadata.return_value = metadata + cluster.refresh_datasources() + + for i, datasource in enumerate(cluster.datasources): metrics = ( db.session.query(DruidMetric) .filter(DruidMetric.datasource_id == datasource.id) @@ -397,6 +403,37 @@ def test_refresh_metadata(self, PyDruid): 'long{}'.format(agg.capitalize()), ) + @patch('superset.connectors.druid.models.PyDruid') + def test_refresh_metadata_augment_verbose_name(self, PyDruid): + self.login(username='admin') + cluster = self.get_cluster(PyDruid) + cluster.refresh_datasources() + + for i, datasource in enumerate(cluster.datasources): + metrics = ( + db.session.query(DruidMetric) + .filter(DruidMetric.datasource_id == datasource.id) + .filter(DruidMetric.metric_name.like('%__metric1')) + ) + + for metric in metrics: + metric.verbose_name = metric.metric_name + + db.session.commit() + + # The verbose name should not change during a refresh. + cluster.refresh_datasources() + + for i, datasource in enumerate(cluster.datasources): + metrics = ( + db.session.query(DruidMetric) + .filter(DruidMetric.datasource_id == datasource.id) + .filter(DruidMetric.metric_name.like('%__metric1')) + ) + + for metric in metrics: + self.assertEqual(metric.verbose_name, metric.metric_name) + def test_urls(self): cluster = self.get_test_cluster_obj() self.assertEquals(