aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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
-rw-r--r--sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java21
6 files changed, 63 insertions, 30 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() {
diff --git a/sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java b/sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java
index 885d9b11ed2..fed7575080f 100644
--- a/sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java
@@ -22,13 +22,14 @@ package org.sonar.db.ce;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Strings;
-import com.google.common.collect.FluentIterable;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nonnull;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.utils.internal.TestSystem2;
+import org.sonar.core.util.CloseableIterator;
+import org.sonar.core.util.stream.Collectors;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
@@ -42,13 +43,13 @@ public class CeActivityDaoTest {
private static final String AN_ANALYSIS_UUID = "U1";
- TestSystem2 system2 = new TestSystem2().setNow(1_450_000_000_000L);
+ private TestSystem2 system2 = new TestSystem2().setNow(1_450_000_000_000L);
@Rule
public DbTester db = DbTester.create(system2);
- DbSession dbSession = db.getSession();
- CeActivityDao underTest = new CeActivityDao(system2);
+ private DbSession dbSession = db.getSession();
+ private CeActivityDao underTest = new CeActivityDao(system2);
@Test
public void test_insert() {
@@ -330,7 +331,7 @@ public class CeActivityDaoTest {
return dto;
}
- private void insertWithCreationDate(String uuid, long date) {
+ private CeActivityDto insertWithCreationDate(String uuid, long date) {
CeQueueDto queueDto = new CeQueueDto();
queueDto.setUuid(uuid);
queueDto.setTaskType("fake");
@@ -339,10 +340,18 @@ public class CeActivityDaoTest {
dto.setStatus(CeActivityDto.Status.SUCCESS);
system2.setNow(date);
underTest.insert(db.getSession(), dto);
+ return dto;
+ }
+
+ private void insertScannerContext(String analysisUuid) {
+ db.getDbClient().scannerContextDao().insert(dbSession, analysisUuid, CloseableIterator.from(singletonList("scanner context of " + analysisUuid).iterator()));
+ dbSession.commit();
}
private List<String> selectPageOfUuids(int offset, int pageSize) {
- return FluentIterable.from(underTest.selectByQuery(db.getSession(), new CeTaskQuery(), offset, pageSize)).transform(CeActivityToUuid.INSTANCE).toList();
+ return underTest.selectByQuery(db.getSession(), new CeTaskQuery(), offset, pageSize).stream()
+ .map(CeActivityToUuid.INSTANCE::apply)
+ .collect(Collectors.toList());
}
private enum CeActivityToUuid implements Function<CeActivityDto, String> {