From 90dbd308f09cd6a42c040a12f78ba8472529373a Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Mon, 17 Aug 2015 16:57:48 +0200 Subject: [PATCH] SONAR-6787 FeedPeriodsStep should use project settings and not server settings because differential period properties can be defined at project/view level --- .../computation/step/FeedPeriodsStep.java | 12 +++++++----- .../computation/step/FeedPeriodsStepTest.java | 17 +++++++++-------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/step/FeedPeriodsStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/step/FeedPeriodsStep.java index 2e36dcfa3ae..cb842073f50 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/step/FeedPeriodsStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/step/FeedPeriodsStep.java @@ -45,6 +45,7 @@ import org.sonar.db.component.SnapshotQuery; import org.sonar.server.computation.analysis.AnalysisMetadataHolder; import org.sonar.server.computation.component.Component; import org.sonar.server.computation.component.DepthTraversalTypeAwareCrawler; +import org.sonar.server.computation.component.SettingsRepository; import org.sonar.server.computation.component.TreeRootHolder; import org.sonar.server.computation.period.Period; import org.sonar.server.computation.period.PeriodsHolderImpl; @@ -70,15 +71,15 @@ public class FeedPeriodsStep implements ComputationStep { private static final int NUMBER_OF_PERIODS = 5; private final DbClient dbClient; - private final Settings settings; + private final SettingsRepository settingsRepository; private final TreeRootHolder treeRootHolder; private final AnalysisMetadataHolder analysisMetadataHolder; private final PeriodsHolderImpl periodsHolder; - public FeedPeriodsStep(DbClient dbClient, Settings settings, TreeRootHolder treeRootHolder, AnalysisMetadataHolder analysisMetadataHolder, + public FeedPeriodsStep(DbClient dbClient, SettingsRepository settingsRepository, TreeRootHolder treeRootHolder, AnalysisMetadataHolder analysisMetadataHolder, PeriodsHolderImpl periodsHolder) { this.dbClient = dbClient; - this.settings = settings; + this.settingsRepository = settingsRepository; this.treeRootHolder = treeRootHolder; this.analysisMetadataHolder = analysisMetadataHolder; this.periodsHolder = periodsHolder; @@ -120,9 +121,10 @@ public class FeedPeriodsStep implements ComputationStep { isReportType ? projectOrView.getReportAttributes().getVersion() : null, isReportType ? Qualifiers.PROJECT : Qualifiers.VIEW); + Settings settings = settingsRepository.getSettings(projectOrView); List periods = new ArrayList<>(5); for (int index = 1; index <= NUMBER_OF_PERIODS; index++) { - Period period = periodResolver.resolve(index); + Period period = periodResolver.resolve(index, settings); // SONAR-4700 Add a past snapshot only if it exists if (period != null) { periods.add(period); @@ -149,7 +151,7 @@ public class FeedPeriodsStep implements ComputationStep { } @CheckForNull - public Period resolve(int index) { + public Period resolve(int index, Settings settings) { String propertyValue = getPropertyValue(qualifier, settings, index); if (StringUtils.isBlank(propertyValue)) { return null; diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/FeedPeriodsStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/FeedPeriodsStepTest.java index f8803cd7754..5b5938b91e3 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/FeedPeriodsStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/FeedPeriodsStepTest.java @@ -38,12 +38,15 @@ import org.sonar.server.computation.analysis.MutableAnalysisMetadataHolderRule; import org.sonar.server.computation.batch.TreeRootHolderRule; import org.sonar.server.computation.component.Component; import org.sonar.server.computation.component.ReportComponent; +import org.sonar.server.computation.component.SettingsRepository; import org.sonar.server.computation.period.Period; import org.sonar.server.computation.period.PeriodsHolderImpl; import org.sonar.test.DbTests; import static com.google.common.collect.Lists.newArrayList; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; @Category(DbTests.class) public class FeedPeriodsStepTest extends BaseStepTest { @@ -53,21 +56,17 @@ public class FeedPeriodsStepTest extends BaseStepTest { @Rule public DbTester dbTester = DbTester.create(System2.INSTANCE); - @Rule public TreeRootHolderRule treeRootHolder = new TreeRootHolderRule(); - @Rule public MutableAnalysisMetadataHolderRule analysisMetadataHolder = new MutableAnalysisMetadataHolderRule(); - @Rule public LogTester logTester = new LogTester(); PeriodsHolderImpl periodsHolder = new PeriodsHolderImpl(); - DbClient dbClient = dbTester.getDbClient(); - Settings settings = new Settings(); + SettingsRepository settingsRepository = mock(SettingsRepository.class); FeedPeriodsStep underTest; @@ -80,9 +79,11 @@ public class FeedPeriodsStepTest extends BaseStepTest { public void setUp() throws Exception { analysisMetadataHolder.setAnalysisDate(DATE_FORMAT.parse("2008-11-30")); - treeRootHolder.setRoot(ReportComponent.builder(Component.Type.PROJECT, 1).setUuid("ABCD").setKey(PROJECT_KEY).setVersion("1.1").build()); + ReportComponent root = ReportComponent.builder(Component.Type.PROJECT, 1).setUuid("ABCD").setKey(PROJECT_KEY).setVersion("1.1").build(); + treeRootHolder.setRoot(root); + when(settingsRepository.getSettings(root)).thenReturn(settings); - underTest = new FeedPeriodsStep(dbClient, settings, treeRootHolder, analysisMetadataHolder, periodsHolder); + underTest = new FeedPeriodsStep(dbClient, settingsRepository, treeRootHolder, analysisMetadataHolder, periodsHolder); } @Test @@ -353,7 +354,7 @@ public class FeedPeriodsStepTest extends BaseStepTest { settings.setProperty("sonar.timemachine.period2", "10"); // Analysis from 2008-11-20 should be returned settings.setProperty("sonar.timemachine.period3", "previous_analysis"); // Analysis from 2008-11-29 should be returned settings.setProperty("sonar.timemachine.period4", "previous_version"); // Analysis from 2008-11-12 should be returned - settings.setProperty("sonar.timemachine.period5", "0.9"); // Anaylsis from 2008-11-11 + settings.setProperty("sonar.timemachine.period5", "0.9"); // Analysis from 2008-11-11 underTest.execute(); List periods = periodsHolder.getPeriods(); -- 2.39.5