Browse Source

SONAR-6787 FeedPeriodsStep should use project settings

and not server settings because differential period properties can be defined at project/view level
tags/5.2-RC1
Sébastien Lesaint 8 years ago
parent
commit
90dbd308f0

+ 7
- 5
server/sonar-server/src/main/java/org/sonar/server/computation/step/FeedPeriodsStep.java View File

@@ -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<Period> 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;

+ 9
- 8
server/sonar-server/src/test/java/org/sonar/server/computation/step/FeedPeriodsStepTest.java View File

@@ -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<Period> periods = periodsHolder.getPeriods();

Loading…
Cancel
Save