From d891213ff2a2e204d5b4f45b845fa46f23168d3d Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Thu, 6 Aug 2015 09:38:43 +0200 Subject: [PATCH] fix RegisterMetrics, duplicated disabled metrics when it actually should enable and update them --- .../sonar/server/startup/RegisterMetrics.java | 2 +- .../server/startup/RegisterMetricsTest.java | 18 ++++++++++++++++++ .../enable_disabled_metric-result.xml | 9 +++++++++ .../enable_disabled_metric.xml | 9 +++++++++ .../java/org/sonar/db/metric/MetricDao.java | 4 ++++ .../java/org/sonar/db/metric/MetricMapper.java | 2 ++ .../org/sonar/db/metric/MetricMapper.xml | 7 +++++++ .../org/sonar/db/metric/MetricDaoTest.java | 7 +++++++ 8 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 server/sonar-server/src/test/resources/org/sonar/server/startup/RegisterMetricsTest/enable_disabled_metric-result.xml create mode 100644 server/sonar-server/src/test/resources/org/sonar/server/startup/RegisterMetricsTest/enable_disabled_metric.xml diff --git a/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterMetrics.java b/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterMetrics.java index ffc0b047bf3..9f3746bf464 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterMetrics.java +++ b/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterMetrics.java @@ -83,7 +83,7 @@ public class RegisterMetrics { private void save(DbSession session, Iterable metrics) { Map basesByKey = new HashMap<>(); - for (MetricDto base : from(dbClient.metricDao().selectEnabled(session)).toList()) { + for (MetricDto base : from(dbClient.metricDao().selectAll(session)).toList()) { basesByKey.put(base.getKey(), base); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterMetricsTest.java b/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterMetricsTest.java index 524c30c6aff..6f6a63bfa85 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterMetricsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterMetricsTest.java @@ -102,6 +102,24 @@ public class RegisterMetricsTest { dbTester.assertDbUnit(getClass(), "disable_undefined_metrics-result.xml", "metrics"); } + @Test + public void enable_disabled_metrics() { + dbTester.prepareDbUnit(getClass(), "enable_disabled_metric.xml"); + + RegisterMetrics register = new RegisterMetrics(dbClient); + Metric m1 = new Metric.Builder("m1", "New name", Metric.ValueType.FLOAT) + .setDescription("new description") + .setDirection(-1) + .setQualitative(true) + .setDomain("new domain") + .setUserManaged(false) + .setHidden(true) + .create(); + register.register(asList(m1)); + + dbTester.assertDbUnit(getClass(), "enable_disabled_metric-result.xml", "metrics"); + } + @Test public void insert_core_metrics() { dbTester.truncateTables(); diff --git a/server/sonar-server/src/test/resources/org/sonar/server/startup/RegisterMetricsTest/enable_disabled_metric-result.xml b/server/sonar-server/src/test/resources/org/sonar/server/startup/RegisterMetricsTest/enable_disabled_metric-result.xml new file mode 100644 index 00000000000..1f4be94dde4 --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/startup/RegisterMetricsTest/enable_disabled_metric-result.xml @@ -0,0 +1,9 @@ + + + diff --git a/server/sonar-server/src/test/resources/org/sonar/server/startup/RegisterMetricsTest/enable_disabled_metric.xml b/server/sonar-server/src/test/resources/org/sonar/server/startup/RegisterMetricsTest/enable_disabled_metric.xml new file mode 100644 index 00000000000..ad7f1e33933 --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/startup/RegisterMetricsTest/enable_disabled_metric.xml @@ -0,0 +1,9 @@ + + + diff --git a/sonar-db/src/main/java/org/sonar/db/metric/MetricDao.java b/sonar-db/src/main/java/org/sonar/db/metric/MetricDao.java index 1037ae9d331..b61e7443b6d 100644 --- a/sonar-db/src/main/java/org/sonar/db/metric/MetricDao.java +++ b/sonar-db/src/main/java/org/sonar/db/metric/MetricDao.java @@ -65,6 +65,10 @@ public class MetricDao implements Dao { return metric; } + public List selectAll(DbSession session) { + return mapper(session).selectAll(); + } + public List selectEnabled(DbSession session) { return mapper(session).selectAllEnabled(); } diff --git a/sonar-db/src/main/java/org/sonar/db/metric/MetricMapper.java b/sonar-db/src/main/java/org/sonar/db/metric/MetricMapper.java index fb5bafdce52..b724c5f3841 100644 --- a/sonar-db/src/main/java/org/sonar/db/metric/MetricMapper.java +++ b/sonar-db/src/main/java/org/sonar/db/metric/MetricMapper.java @@ -36,6 +36,8 @@ public interface MetricMapper { List selectByKeys(@Param("keys") List keys); + List selectAll(); + List selectAllEnabled(); List selectAllEnabled(Map properties, RowBounds rowBounds); diff --git a/sonar-db/src/main/resources/org/sonar/db/metric/MetricMapper.xml b/sonar-db/src/main/resources/org/sonar/db/metric/MetricMapper.xml index ca4a79a3a82..adf0d7544cb 100644 --- a/sonar-db/src/main/resources/org/sonar/db/metric/MetricMapper.xml +++ b/sonar-db/src/main/resources/org/sonar/db/metric/MetricMapper.xml @@ -30,6 +30,13 @@ + +