]> source.dussan.org Git - sonarqube.git/commitdiff
fix RegisterMetrics, duplicated disabled metrics
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Thu, 6 Aug 2015 07:38:43 +0000 (09:38 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Thu, 6 Aug 2015 15:30:17 +0000 (17:30 +0200)
when it actually should enable and update them

server/sonar-server/src/main/java/org/sonar/server/startup/RegisterMetrics.java
server/sonar-server/src/test/java/org/sonar/server/startup/RegisterMetricsTest.java
server/sonar-server/src/test/resources/org/sonar/server/startup/RegisterMetricsTest/enable_disabled_metric-result.xml [new file with mode: 0644]
server/sonar-server/src/test/resources/org/sonar/server/startup/RegisterMetricsTest/enable_disabled_metric.xml [new file with mode: 0644]
sonar-db/src/main/java/org/sonar/db/metric/MetricDao.java
sonar-db/src/main/java/org/sonar/db/metric/MetricMapper.java
sonar-db/src/main/resources/org/sonar/db/metric/MetricMapper.xml
sonar-db/src/test/java/org/sonar/db/metric/MetricDaoTest.java

index ffc0b047bf313a75766b5b6b630bcc0becdeeaf5..9f3746bf4642cd5657e6a1df0fcd37a2ea0f357b 100644 (file)
@@ -83,7 +83,7 @@ public class RegisterMetrics {
 
   private void save(DbSession session, Iterable<Metric> metrics) {
     Map<String, MetricDto> 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);
     }
 
index 524c30c6aff9e4fbb98584aabbbc4a1f083ab8ad..6f6a63bfa858969b39d0a5e8a5ea3e3c7a3f2e0a 100644 (file)
@@ -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 (file)
index 0000000..1f4be94
--- /dev/null
@@ -0,0 +1,9 @@
+<dataset>
+
+  <metrics delete_historical_data="[false]" id="1" name="m1" val_type="FLOAT" description="new description" domain="new domain"
+           short_name="New name" qualitative="[true]" user_managed="[false]"
+           enabled="[true]"
+           worst_value="[null]"
+           optimized_best_value="[false]" best_value="[null]" direction="-1" hidden="[true]"/>
+
+</dataset>
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 (file)
index 0000000..ad7f1e3
--- /dev/null
@@ -0,0 +1,9 @@
+<dataset>
+
+  <metrics delete_historical_data="[false]" id="1" name="m1" val_type="FLOAT" description="desc1" domain="domain1"
+           short_name="One" qualitative="[true]" user_managed="[false]"
+           enabled="[false]"
+           worst_value="[null]"
+           optimized_best_value="[false]" best_value="[null]" direction="1" hidden="[false]"/>
+
+</dataset>
index 1037ae9d331e5b63d796004a4568f5870b6f893a..b61e7443b6dcc1209b579dbe3ebb39a14fcd85f1 100644 (file)
@@ -65,6 +65,10 @@ public class MetricDao implements Dao {
     return metric;
   }
 
+  public List<MetricDto> selectAll(DbSession session) {
+    return mapper(session).selectAll();
+  }
+
   public List<MetricDto> selectEnabled(DbSession session) {
     return mapper(session).selectAllEnabled();
   }
index fb5bafdce526cba62f5d4238b32a0365659f43ef..b724c5f384189033b7adb4df9822f123294d8b59 100644 (file)
@@ -36,6 +36,8 @@ public interface MetricMapper {
 
   List<MetricDto> selectByKeys(@Param("keys") List<String> keys);
 
+  List<MetricDto> selectAll();
+
   List<MetricDto> selectAllEnabled();
 
   List<MetricDto> selectAllEnabled(Map<String, Object> properties, RowBounds rowBounds);
index ca4a79a3a8225304790531a824133336d1b035b2..adf0d7544cb067844b2cfd7cdff3ca4bd1100b44 100644 (file)
     </where>
   </select>
 
+  <select id="selectAll" resultType="org.sonar.db.metric.MetricDto">
+    SELECT
+    <include refid="metricColumns"/>
+    FROM metrics m
+    ORDER BY UPPER(m.short_name), m.short_name
+  </select>
+
   <select id="selectAllEnabled" parameterType="map" resultType="org.sonar.db.metric.MetricDto">
     SELECT
     <include refid="metricColumns"/>
index ca6767e670252414bf7dc0560f5cb15db116df6c..eb3940fa9aec59ca5bfff2a2dcc89a8b3512f10e 100644 (file)
@@ -123,6 +123,13 @@ public class MetricDaoTest {
     assertThat(underTest.selectEnabled(session)).hasSize(2);
   }
 
+  @Test
+  public void find_all() {
+    dbTester.prepareDbUnit(getClass(), "shared.xml");
+
+    assertThat(underTest.selectAll(session)).extracting("id").containsExactly(2, 3, 1);
+  }
+
   @Test
   public void insert() {
     underTest.insert(session, new MetricDto()