aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2016-08-17 17:39:39 +0200
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>2016-08-22 10:25:43 +0200
commit786a99c5e17606169f2a9c2784582f367d9084ac (patch)
tree78d1ec931e2806e4ef42c99858b47b52129c7eb5 /server
parente9ac521dd1204c523dc0e497f141529e6abd4e3f (diff)
downloadsonarqube-786a99c5e17606169f2a9c2784582f367d9084ac.tar.gz
sonarqube-786a99c5e17606169f2a9c2784582f367d9084ac.zip
SONAR-7844 persist scanner context in DB instead of logging it
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistScannerContextStep.java (renamed from server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/LogScannerContextStep.java)30
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationSteps.java2
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java10
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/PersistScannerContextStepTest.java (renamed from server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/LogScannerContextStepTest.java)28
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationStepsTest.java2
5 files changed, 48 insertions, 24 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/LogScannerContextStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistScannerContextStep.java
index 868107ffe7c..5a49cff1e88 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/LogScannerContextStep.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistScannerContextStep.java
@@ -19,36 +19,38 @@
*/
package org.sonar.server.computation.task.projectanalysis.step;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
import org.sonar.core.util.CloseableIterator;
+import org.sonar.db.DbClient;
+import org.sonar.db.DbSession;
+import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder;
import org.sonar.server.computation.task.projectanalysis.batch.BatchReportReader;
import org.sonar.server.computation.task.step.ComputationStep;
-public class LogScannerContextStep implements ComputationStep {
-
- private static final Logger LOGGER = Loggers.get(LogScannerContextStep.class);
-
+public class PersistScannerContextStep implements ComputationStep {
private final BatchReportReader reportReader;
+ private final AnalysisMetadataHolder analysisMetadataHolder;
+ private final DbClient dbClient;
- public LogScannerContextStep(BatchReportReader reportReader) {
+ public PersistScannerContextStep(BatchReportReader reportReader, AnalysisMetadataHolder analysisMetadataHolder, DbClient dbClient) {
this.reportReader = reportReader;
+ this.analysisMetadataHolder = analysisMetadataHolder;
+ this.dbClient = dbClient;
}
@Override
public void execute() {
- CloseableIterator<String> logs = reportReader.readScannerLogs();
- try {
- while (logs.hasNext()) {
- LOGGER.debug(logs.next());
+ try (CloseableIterator<String> logsIterator = reportReader.readScannerLogs()) {
+ if (logsIterator.hasNext()) {
+ try (DbSession dbSession = dbClient.openSession(false)) {
+ dbClient.scannerContextDao().insert(dbSession, analysisMetadataHolder.getUuid(), logsIterator);
+ dbSession.commit();
+ }
}
- } finally {
- logs.close();
}
}
@Override
public String getDescription() {
- return "Log scanner context";
+ return "Persist scanner context";
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationSteps.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationSteps.java
index 6c244f5d007..217d4cc4505 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationSteps.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationSteps.java
@@ -38,7 +38,6 @@ public class ReportComputationSteps extends AbstractComputationSteps {
private static final List<Class<? extends ComputationStep>> STEPS = Arrays.asList(
ExtractReportStep.class,
- LogScannerContextStep.class,
GenerateAnalysisUuid.class,
// Builds Component tree
@@ -97,6 +96,7 @@ public class ReportComputationSteps extends AbstractComputationSteps {
PersistFileSourcesStep.class,
PersistTestsStep.class,
PersistCrossProjectDuplicationIndexStep.class,
+ PersistScannerContextStep.class,
EnableAnalysisStep.class,
UpdateQualityProfilesLastUsedDateStep.class,
diff --git a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java
index 7ed877581dc..5a9e1893a73 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java
@@ -24,6 +24,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.api.utils.System2;
+import org.sonar.core.util.CloseableIterator;
import org.sonar.core.util.Protobuf;
import org.sonar.db.DbTester;
import org.sonar.db.ce.CeActivityDto;
@@ -39,6 +40,7 @@ import org.sonar.server.ws.WsActionTester;
import org.sonarqube.ws.MediaTypes;
import org.sonarqube.ws.WsCe;
+import static java.util.Collections.singleton;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.core.permission.GlobalPermissions.PROVISIONING;
import static org.sonar.core.permission.GlobalPermissions.SCAN_EXECUTION;
@@ -293,9 +295,15 @@ public class TaskActionTest {
dbTester.commit();
}
- private void persist(CeActivityDto activityDto) {
+ private CeActivityDto persist(CeActivityDto activityDto) {
dbTester.getDbClient().ceActivityDao().insert(dbTester.getSession(), activityDto);
dbTester.commit();
+ return activityDto;
+ }
+
+ private void persistScannerContext(String analysisUuid, String scannerContext) {
+ dbTester.getDbClient().scannerContextDao().insert(dbTester.getSession(), analysisUuid, CloseableIterator.from(singleton(scannerContext).iterator()));
+ dbTester.commit();
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/LogScannerContextStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/PersistScannerContextStepTest.java
index 9627e664b17..0dafc137499 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/LogScannerContextStepTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/PersistScannerContextStepTest.java
@@ -19,24 +19,37 @@
*/
package org.sonar.server.computation.task.projectanalysis.step;
+import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
-import org.sonar.api.utils.log.LogTester;
-import org.sonar.api.utils.log.LoggerLevel;
+import org.sonar.api.utils.System2;
+import org.sonar.db.DbClient;
+import org.sonar.db.DbTester;
+import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule;
import org.sonar.server.computation.task.projectanalysis.batch.BatchReportReaderRule;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
-public class LogScannerContextStepTest {
+public class PersistScannerContextStepTest {
+ private static final String ANALYSIS_UUID = "UUID";
+
+ @ClassRule
+ public static final DbTester dbTester = DbTester.create(System2.INSTANCE);
@Rule
public BatchReportReaderRule reportReader = new BatchReportReaderRule();
-
@Rule
- public LogTester logTester = new LogTester();
+ public AnalysisMetadataHolderRule analysisMetadataHolder = new AnalysisMetadataHolderRule()
+ .setUuid(ANALYSIS_UUID);
+
+ private DbClient dbClient = dbTester.getDbClient();
+ private PersistScannerContextStep underTest = new PersistScannerContextStep(reportReader, analysisMetadataHolder, dbClient);
- LogScannerContextStep underTest = new LogScannerContextStep(reportReader);
+ @Test
+ public void getDescription() {
+ assertThat(underTest.getDescription()).isEqualTo("Persist scanner context");
+ }
@Test
public void log_scanner_logs() {
@@ -44,7 +57,8 @@ public class LogScannerContextStepTest {
underTest.execute();
- assertThat(logTester.logs(LoggerLevel.DEBUG)).containsExactly("log1", "log2");
+ assertThat(dbClient.scannerContextDao().selectScannerContext(dbTester.getSession(), ANALYSIS_UUID))
+ .contains("log1" + '\n' + "log2");
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationStepsTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationStepsTest.java
index da6a95418fb..f8ff545f980 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationStepsTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationStepsTest.java
@@ -52,7 +52,7 @@ public class ReportComputationStepsTest {
@Test
public void instances_throws_ISE_if_container_does_not_have_second_step() throws Exception {
expectedException.expect(IllegalStateException.class);
- expectedException.expectMessage("Component not found: class org.sonar.server.computation.task.projectanalysis.step.LogScannerContextStep");
+ expectedException.expectMessage("Component not found: class org.sonar.server.computation.task.projectanalysis.step.GenerateAnalysisUuid");
final ExtractReportStep reportExtractionStep = mock(ExtractReportStep.class);
ComponentContainer componentContainer = new ComponentContainer() {