[druid] Excluding refreshing verbose name (#4761)

This commit is contained in:
John Bodley 2018-04-04 17:16:53 -07:00 committed by GitHub
parent 68999b1407
commit df4ff05441
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 7 deletions

View File

@ -372,7 +372,7 @@ class DruidColumn(Model, BaseColumn):
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:

View File

@ -376,13 +376,19 @@ class DruidTests(SupersetTestCase):
'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 @@ class DruidTests(SupersetTestCase):
'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(