diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2016-08-17 17:39:39 +0200 |
---|---|---|
committer | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2016-08-22 10:25:43 +0200 |
commit | 786a99c5e17606169f2a9c2784582f367d9084ac (patch) | |
tree | 78d1ec931e2806e4ef42c99858b47b52129c7eb5 /server | |
parent | e9ac521dd1204c523dc0e497f141529e6abd4e3f (diff) | |
download | sonarqube-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.java | 2 | ||||
-rw-r--r-- | server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java | 10 | ||||
-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.java | 2 |
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() { |