From be51fc46e6b615295dfa843573932881e8a59f60 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Wed, 28 Nov 2012 18:51:20 +0100 Subject: [PATCH] SONAR-1352 update backup with new alert period property --- .../sensors/CheckAlertThresholdsTest.java | 2 +- .../server/configuration/ProfilesBackup.java | 22 +++++++++-- .../server/configuration/BackupTest.java | 38 ++++++++++++++++--- .../BackupTest/backup-restore-valid.xml | 8 ++++ .../configuration/BackupTest/backup-valid.xml | 8 ++++ 5 files changed, 69 insertions(+), 9 deletions(-) diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/CheckAlertThresholdsTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/CheckAlertThresholdsTest.java index d79934da594..90d1ce756e5 100644 --- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/CheckAlertThresholdsTest.java +++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/CheckAlertThresholdsTest.java @@ -66,6 +66,7 @@ public class CheckAlertThresholdsTest { context = mock(DecoratorContext.class); periods = mock(Periods.class); i18n = mock(I18n.class); + when(i18n.message(Mockito.any(Locale.class), Mockito.eq("variation"), Mockito.isNull(String.class))).thenReturn("variation"); measureClasses = new Measure(CoreMetrics.CLASSES, 20d); measureCoverage = new Measure(CoreMetrics.COVERAGE, 35d); @@ -242,7 +243,6 @@ public class CheckAlertThresholdsTest { measureClasses.setVariation1(40d); when(i18n.message(Mockito.any(Locale.class), Mockito.eq("metric.classes.name"), Mockito.isNull(String.class))).thenReturn("Classes"); - when(i18n.message(Mockito.any(Locale.class), Mockito.eq("variation"), Mockito.isNull(String.class))).thenReturn("variation"); when(periods.getLabel(1)).thenReturn("since someday"); when(profile.getAlerts()).thenReturn(Arrays.asList( diff --git a/sonar-server/src/main/java/org/sonar/server/configuration/ProfilesBackup.java b/sonar-server/src/main/java/org/sonar/server/configuration/ProfilesBackup.java index 804f6cc54eb..c15ec5b0f30 100644 --- a/sonar-server/src/main/java/org/sonar/server/configuration/ProfilesBackup.java +++ b/sonar-server/src/main/java/org/sonar/server/configuration/ProfilesBackup.java @@ -26,15 +26,25 @@ import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import org.apache.commons.collections.CollectionUtils; +import org.codehaus.plexus.util.StringUtils; import org.slf4j.LoggerFactory; import org.sonar.api.database.DatabaseSession; import org.sonar.api.measures.Metric; import org.sonar.api.profiles.Alert; import org.sonar.api.profiles.RulesProfile; -import org.sonar.api.rules.*; +import org.sonar.api.rules.ActiveRule; +import org.sonar.api.rules.ActiveRuleParam; +import org.sonar.api.rules.Rule; +import org.sonar.api.rules.RuleParam; +import org.sonar.api.rules.RulePriority; import org.sonar.jpa.dao.RulesDao; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; public class ProfilesBackup implements Backupable { @@ -161,13 +171,19 @@ public class ProfilesBackup implements Backupable { writeNode(writer, "operator", alert.getOperator()); writeNode(writer, "value-error", alert.getValueError()); writeNode(writer, "value-warning", alert.getValueWarning()); + writeNode(writer, "period", alert.getPeriod() != null ? Integer.toString(alert.getPeriod()) : ""); writeNode(writer, "metric-key", alert.getMetric().getKey()); } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { Map values = readNode(reader); - return new Alert(null, new Metric(values.get("metric-key")), values.get("operator"), values.get("value-error"), + Alert alert = new Alert(null, new Metric(values.get("metric-key")), values.get("operator"), values.get("value-error"), values.get("value-warning")); + String periodText = values.get("period"); + if (StringUtils.isNotEmpty(periodText)) { + alert.setPeriod(Integer.parseInt(periodText)); + } + return alert; } public boolean canConvert(Class type) { diff --git a/sonar-server/src/test/java/org/sonar/server/configuration/BackupTest.java b/sonar-server/src/test/java/org/sonar/server/configuration/BackupTest.java index 13ac73eb6eb..bbb88cd7633 100644 --- a/sonar-server/src/test/java/org/sonar/server/configuration/BackupTest.java +++ b/sonar-server/src/test/java/org/sonar/server/configuration/BackupTest.java @@ -31,18 +31,30 @@ import org.sonar.api.database.configuration.Property; import org.sonar.api.measures.Metric; import org.sonar.api.profiles.Alert; import org.sonar.api.profiles.RulesProfile; -import org.sonar.api.rules.*; +import org.sonar.api.rules.ActiveRule; +import org.sonar.api.rules.ActiveRuleParam; +import org.sonar.api.rules.Rule; +import org.sonar.api.rules.RuleParam; +import org.sonar.api.rules.RulePriority; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; +import java.util.List; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.nullValue; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -133,14 +145,23 @@ public class BackupTest { assertNotNull(testActiveRuleParam.getRuleParam()); assertEquals("test param key", testActiveRuleParam.getRuleParam().getKey()); - assertEquals(1, testProfile.getAlerts().size()); + assertEquals(2, testProfile.getAlerts().size()); Alert testAlert = testProfile.getAlerts().get(0); assertEquals(Alert.OPERATOR_GREATER, testAlert.getOperator()); assertEquals("testError", testAlert.getValueError()); assertEquals("testWarn", testAlert.getValueWarning()); + assertThat(testAlert.getPeriod(), nullValue()); assertNotNull(testAlert.getMetric()); assertEquals("test key", testAlert.getMetric().getKey()); + Alert testAlert2 = testProfile.getAlerts().get(1); + assertEquals(Alert.OPERATOR_SMALLER, testAlert2.getOperator()); + assertEquals("testError2", testAlert2.getValueError()); + assertEquals("testWarn2", testAlert2.getValueWarning()); + assertThat(testAlert2.getPeriod(), is(1)); + assertNotNull(testAlert2.getMetric()); + assertEquals("test key2", testAlert2.getMetric().getKey()); + // Child profile testProfile = profilesIter.next(); assertEquals("test2 name", testProfile.getName()); @@ -150,6 +171,7 @@ public class BackupTest { Collection rules = sonarConfig.getRules(); assertThat(rules.size(), is(1)); + Rule rule = rules.iterator().next(); assertThat(rule.getParent().getRepositoryKey(), is("test plugin")); assertThat(rule.getParent().getKey(), is("test key")); @@ -160,6 +182,7 @@ public class BackupTest { assertThat(rule.getDescription(), is("test description")); assertThat(rule.getSeverity(), is(RulePriority.INFO)); assertThat(rule.getParams().size(), is(1)); + RuleParam param = rule.getParams().get(0); assertThat(param.getKey(), is("test param key")); assertThat(param.getDefaultValue(), is("test param value")); @@ -282,7 +305,12 @@ public class BackupTest { activeRule2.setParameter("test param key", "test value"); activeRule2.setInheritance(ActiveRule.OVERRIDES); - profiles.get(0).getAlerts().add(new Alert(null, new Metric("test key"), Alert.OPERATOR_GREATER, "testError", "testWarn")); + Alert alert1 = new Alert(null, new Metric("test key"), Alert.OPERATOR_GREATER, "testError", "testWarn"); + Alert alert2 = new Alert(null, new Metric("test key2"), Alert.OPERATOR_SMALLER, "testError2", "testWarn2", 1); + + List alerts = profiles.get(0).getAlerts(); + alerts.add(alert1); + alerts.add(alert2); return profiles; } diff --git a/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-restore-valid.xml b/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-restore-valid.xml index f61e6e67c4b..ed5f21bb768 100644 --- a/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-restore-valid.xml +++ b/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-restore-valid.xml @@ -55,8 +55,16 @@ ]]> + + + + + + + + diff --git a/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-valid.xml b/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-valid.xml index 45ce8b1876b..8af076dc208 100644 --- a/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-valid.xml +++ b/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-valid.xml @@ -57,8 +57,16 @@ ]]> + + + + + + + + -- 2.39.5