aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2016-01-27 18:24:56 +0100
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>2016-01-28 14:55:17 +0100
commite2f26c73c3a2fe0fd1f3d14c9d737c919874cad1 (patch)
tree7dffd44f2b8b1e308605409216c2388fc866583d /server
parent299ac619ca27b929904b8cb46ef512118bd858cb (diff)
downloadsonarqube-e2f26c73c3a2fe0fd1f3d14c9d737c919874cad1.tar.gz
sonarqube-e2f26c73c3a2fe0fd1f3d14c9d737c919874cad1.zip
SONAR-7166 fail when projectKey in report is not the component key
failure implemented as early as possible
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStep.java13
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStepTest.java49
2 files changed, 52 insertions, 10 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStep.java
index 283085f695b..f3596cc2557 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStep.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStep.java
@@ -22,16 +22,21 @@ package org.sonar.server.computation.step;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.computation.analysis.MutableAnalysisMetadataHolder;
import org.sonar.server.computation.batch.BatchReportReader;
+import org.sonar.server.computation.queue.CeTask;
+
+import static com.google.common.base.Preconditions.checkState;
/**
* Feed analysis metadata holder with metadata from the analysis report.
*/
public class LoadReportAnalysisMetadataHolderStep implements ComputationStep {
+ private final CeTask ceTask;
private final BatchReportReader reportReader;
private final MutableAnalysisMetadataHolder mutableAnalysisMetadataHolder;
- public LoadReportAnalysisMetadataHolderStep(BatchReportReader reportReader, MutableAnalysisMetadataHolder mutableAnalysisMetadataHolder) {
+ public LoadReportAnalysisMetadataHolderStep(CeTask ceTask, BatchReportReader reportReader, MutableAnalysisMetadataHolder mutableAnalysisMetadataHolder) {
+ this.ceTask = ceTask;
this.reportReader = reportReader;
this.mutableAnalysisMetadataHolder = mutableAnalysisMetadataHolder;
}
@@ -39,6 +44,12 @@ public class LoadReportAnalysisMetadataHolderStep implements ComputationStep {
@Override
public void execute() {
BatchReport.Metadata reportMetadata = reportReader.readMetadata();
+ checkState(
+ ceTask.getComponentKey().equals(reportMetadata.getProjectKey()),
+ "ProjectKey in report (%s) is not consistent with projectKey under which the report as been submitted (%s)",
+ reportMetadata.getProjectKey(),
+ ceTask.getComponentKey());
+
mutableAnalysisMetadataHolder.setRootComponentRef(reportMetadata.getRootComponentRef());
mutableAnalysisMetadataHolder.setBranch(reportMetadata.hasBranch() ? reportMetadata.getBranch() : null);
mutableAnalysisMetadataHolder.setAnalysisDate(reportMetadata.getAnalysisDate());
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStepTest.java
index bd226fc8cbf..9d4032fcde6 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStepTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStepTest.java
@@ -21,30 +21,37 @@ package org.sonar.server.computation.step;
import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.computation.analysis.MutableAnalysisMetadataHolderRule;
import org.sonar.server.computation.batch.BatchReportReaderRule;
+import org.sonar.server.computation.queue.CeTask;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
public class LoadReportAnalysisMetadataHolderStepTest {
+ public static final String PROJECT_KEY = "project_key";
static long ANALYSIS_DATE = 123456789L;
static String BRANCH = "origin/master";
@Rule
public BatchReportReaderRule reportReader = new BatchReportReaderRule();
-
@Rule
public MutableAnalysisMetadataHolderRule analysisMetadataHolder = new MutableAnalysisMetadataHolderRule();
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
- ComputationStep underTest = new LoadReportAnalysisMetadataHolderStep(reportReader, analysisMetadataHolder);
+ private CeTask ceTask = createCeTask(PROJECT_KEY);
+ private ComputationStep underTest = new LoadReportAnalysisMetadataHolderStep(ceTask, reportReader, analysisMetadataHolder);
@Test
public void set_root_component_ref() throws Exception {
reportReader.setMetadata(
- BatchReport.Metadata.newBuilder()
+ newBatchReportBuilder()
.setRootComponentRef(1)
.build());
@@ -56,7 +63,7 @@ public class LoadReportAnalysisMetadataHolderStepTest {
@Test
public void set_analysis_date() throws Exception {
reportReader.setMetadata(
- BatchReport.Metadata.newBuilder()
+ newBatchReportBuilder()
.setAnalysisDate(ANALYSIS_DATE)
.build());
@@ -68,7 +75,7 @@ public class LoadReportAnalysisMetadataHolderStepTest {
@Test
public void set_branch() throws Exception {
reportReader.setMetadata(
- BatchReport.Metadata.newBuilder()
+ newBatchReportBuilder()
.setBranch(BRANCH)
.build());
@@ -80,7 +87,7 @@ public class LoadReportAnalysisMetadataHolderStepTest {
@Test
public void set_null_branch_when_nothing_in_the_report() throws Exception {
reportReader.setMetadata(
- BatchReport.Metadata.newBuilder()
+ newBatchReportBuilder()
.build());
underTest.execute();
@@ -91,7 +98,7 @@ public class LoadReportAnalysisMetadataHolderStepTest {
@Test
public void set_cross_project_duplication_to_true() throws Exception {
reportReader.setMetadata(
- BatchReport.Metadata.newBuilder()
+ newBatchReportBuilder()
.setCrossProjectDuplicationActivated(true)
.build());
@@ -103,7 +110,7 @@ public class LoadReportAnalysisMetadataHolderStepTest {
@Test
public void set_cross_project_duplication_to_false() throws Exception {
reportReader.setMetadata(
- BatchReport.Metadata.newBuilder()
+ newBatchReportBuilder()
.setCrossProjectDuplicationActivated(false)
.build());
@@ -115,7 +122,7 @@ public class LoadReportAnalysisMetadataHolderStepTest {
@Test
public void set_cross_project_duplication_to_false_when_nothing_in_the_report() throws Exception {
reportReader.setMetadata(
- BatchReport.Metadata.newBuilder()
+ newBatchReportBuilder()
.build());
underTest.execute();
@@ -123,4 +130,28 @@ public class LoadReportAnalysisMetadataHolderStepTest {
assertThat(analysisMetadataHolder.isCrossProjectDuplicationEnabled()).isEqualTo(false);
}
+ @Test
+ public void execute_fails_with_ISE_when_projectKey_in_report_is_different_from_componentKey_in_CE_task() {
+ reportReader.setMetadata(
+ BatchReport.Metadata.newBuilder()
+ .setProjectKey("some other key")
+ .build());
+
+ expectedException.expect(IllegalStateException.class);
+ expectedException.expectMessage("ProjectKey in report (some other key) is not consistent with projectKey under which the report as been submitted (" + PROJECT_KEY + ")");
+
+ underTest.execute();
+ }
+
+ private static BatchReport.Metadata.Builder newBatchReportBuilder() {
+ return BatchReport.Metadata.newBuilder()
+ .setProjectKey(PROJECT_KEY);
+ }
+
+ private CeTask createCeTask(String projectKey) {
+ CeTask res = mock(CeTask.class);
+ when(res.getComponentKey()).thenReturn(projectKey);
+ return res;
+ }
+
}