diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2016-08-11 15:36:07 +0200 |
---|---|---|
committer | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2016-08-16 08:20:14 +0200 |
commit | 825c3a67f6e5b7906a6f611201033cc5d1949fcb (patch) | |
tree | fe6c463ef969016bb02bc8cb15620d0b46546927 | |
parent | 38f1c64828b60cbfc9fe0d5c6ddfafc56a02364f (diff) | |
download | sonarqube-825c3a67f6e5b7906a6f611201033cc5d1949fcb.tar.gz sonarqube-825c3a67f6e5b7906a6f611201033cc5d1949fcb.zip |
SONAR-7834 remove internal WS /api/ce/logs
9 files changed, 4 insertions, 413 deletions
diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java index 8c8b06ad653..0146a253f5b 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java @@ -598,7 +598,6 @@ public class ComputeEngineContainerImpl implements ComputeEngineContainer { // JvmPropsMonitor.class, no Monitor in CE, responsibility of Web Server // DatabaseMonitor.class, no Monitor in CE, responsibility of Web Server // MigrateDbAction.class, no Web Service in CE - // LogsAction.class, no Web Service in CE // ChangeLogLevelAction.class, no Web Service in CE // DbMigrationStatusAction.class, no Web Service in CE diff --git a/server/sonar-server/src/main/java/org/sonar/server/ce/ws/CeWsModule.java b/server/sonar-server/src/main/java/org/sonar/server/ce/ws/CeWsModule.java index ac527405405..4b4f73c9ed0 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ce/ws/CeWsModule.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ce/ws/CeWsModule.java @@ -31,7 +31,6 @@ public class CeWsModule extends Module { CancelAction.class, CancelAllAction.class, IsQueueEmptyWs.class, - LogsAction.class, ComponentAction.class, SubmitAction.class, TaskFormatter.class, diff --git a/server/sonar-server/src/main/java/org/sonar/server/ce/ws/LogsAction.java b/server/sonar-server/src/main/java/org/sonar/server/ce/ws/LogsAction.java deleted file mode 100644 index 9b9f744910a..00000000000 --- a/server/sonar-server/src/main/java/org/sonar/server/ce/ws/LogsAction.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.server.ce.ws; - -import com.google.common.base.Optional; -import java.io.File; -import java.io.IOException; -import javax.annotation.CheckForNull; -import javax.annotation.Nullable; -import org.apache.commons.io.FileUtils; -import org.sonar.api.server.ws.Request; -import org.sonar.api.server.ws.Response; -import org.sonar.api.server.ws.WebService; -import org.sonar.api.web.UserRole; -import org.sonar.ce.log.CeLogging; -import org.sonar.ce.log.LogFileRef; -import org.sonar.core.permission.GlobalPermissions; -import org.sonar.core.util.Uuids; -import org.sonar.db.DbClient; -import org.sonar.db.DbSession; -import org.sonar.db.ce.CeActivityDto; -import org.sonar.db.ce.CeQueueDto; -import org.sonar.server.exceptions.NotFoundException; -import org.sonar.server.user.UserSession; -import org.sonarqube.ws.MediaTypes; - -import static java.lang.String.format; - -public class LogsAction implements CeWsAction { - - public static final String ACTION = "logs"; - public static final String PARAM_TASK_UUID = "taskId"; - - private final DbClient dbClient; - private final UserSession userSession; - private final CeLogging ceLogging; - - public LogsAction(DbClient dbClient, UserSession userSession, CeLogging ceLogging) { - this.dbClient = dbClient; - this.userSession = userSession; - this.ceLogging = ceLogging; - } - - @Override - public void define(WebService.NewController controller) { - WebService.NewAction action = controller.createAction(ACTION) - .setDescription("Logs of a task. Format of response is plain text. HTTP code 404 is returned if the task does not exist or if logs are not available. <br/>" + - "Requires system administration permission or project administration permission.") - .setResponseExample(getClass().getResource("logs-example.log")) - .setInternal(true) - .setSince("5.2") - .setHandler(this); - - action - .createParam(PARAM_TASK_UUID) - .setRequired(true) - .setDescription("Id of task") - .setExampleValue(Uuids.UUID_EXAMPLE_01); - } - - @Override - public void handle(Request wsRequest, Response wsResponse) throws Exception { - String taskUuid = wsRequest.mandatoryParam(PARAM_TASK_UUID); - LogFileRefComponentUuidTuple refAndComponentUuid = loadLogRef(taskUuid); - checkPermissions(refAndComponentUuid.componentUuid); - Optional<File> logFile = ceLogging.getFile(refAndComponentUuid.logFileRef); - if (logFile.isPresent()) { - writeFile(logFile.get(), wsResponse); - } else { - throw new NotFoundException(format("Logs of task %s not found", taskUuid)); - } - } - - private void checkPermissions(@Nullable String componentUuid) { - if (componentUuid == null) { - userSession.checkPermission(GlobalPermissions.SYSTEM_ADMIN); - } else { - userSession.checkComponentUuidPermission(UserRole.ADMIN, componentUuid); - } - } - - private LogFileRefComponentUuidTuple loadLogRef(String taskUuid) { - DbSession dbSession = dbClient.openSession(false); - try { - Optional<CeQueueDto> queueDto = dbClient.ceQueueDao().selectByUuid(dbSession, taskUuid); - if (queueDto.isPresent()) { - return new LogFileRefComponentUuidTuple(LogFileRef.from(queueDto.get()), queueDto.get().getComponentUuid()); - } - Optional<CeActivityDto> activityDto = dbClient.ceActivityDao().selectByUuid(dbSession, taskUuid); - if (activityDto.isPresent()) { - return new LogFileRefComponentUuidTuple(LogFileRef.from(activityDto.get()), activityDto.get().getComponentUuid()); - } - throw new NotFoundException(format("Task %s not found", taskUuid)); - - } finally { - dbClient.closeSession(dbSession); - } - } - - private static void writeFile(File file, Response wsResponse) { - try { - Response.Stream stream = wsResponse.stream(); - stream.setMediaType(MediaTypes.TXT); - FileUtils.copyFile(file, stream.output()); - } catch (IOException e) { - throw new IllegalStateException("Fail to copy compute engine log file to HTTP response: " + file.getAbsolutePath(), e); - } - } - - private static class LogFileRefComponentUuidTuple { - private final LogFileRef logFileRef; - @CheckForNull - private final String componentUuid; - - private LogFileRefComponentUuidTuple(LogFileRef logFileRef, @Nullable String componentUuid) { - this.logFileRef = logFileRef; - this.componentUuid = componentUuid; - } - } -} diff --git a/server/sonar-server/src/main/resources/org/sonar/server/ce/ws/logs-example.log b/server/sonar-server/src/main/resources/org/sonar/server/ce/ws/logs-example.log deleted file mode 100644 index 054509ae856..00000000000 --- a/server/sonar-server/src/main/resources/org/sonar/server/ce/ws/logs-example.log +++ /dev/null @@ -1,84 +0,0 @@ -2015.11.02 10:25:16 INFO [o.s.s.c.t.CeWorkerRunnableImpl] Execute task | project=com.sonarsource:java-markdown | id=AVDHg9OnLPOCEbN7mM58 -2015.11.02 10:25:17 INFO [o.s.s.c.s.ExtractReportStep] Analysis report extracted | compressedSize=63 KB -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Extract report | time=75ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] SonarQube plugins: -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - Git 1.0 (scmgit) -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - SVN 1.2 (scmsvn) -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - Java 3.6 (java) -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] Settings for module: com.sonarsource:java-markdown -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.binaries=/Users/teryk/Projects/java-markdown/target/classes -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.core.id=20151102092209 -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.core.startTime=2015-11-02T09:22:09+0100 -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.core.version=5.3-SNAPSHOT -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.host.url=http://localhost:9000 -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.java.binaries=/Users/teryk/Projects/java-markdown/target/classes -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.java.libraries=/Users/teryk/.m2/repository/org/easytesting/fest-assert/1.4/fest-assert-1.4.jar,/Users/teryk/.m2/repository/org/easytesting/fest-util/1.1.6/fest-util-1.1.6.jar -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.java.test.libraries=/Users/teryk/Projects/java-markdown/target/classes,/Users/teryk/.m2/repository/junit/junit/4.11/junit-4.11.jar,/Users/teryk/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar,/Users/teryk/.m2/repository/org/easytesting/fest-assert/1.4/fest-assert-1.4.jar,/Users/teryk/.m2/repository/org/easytesting/fest-util/1.1.6/fest-util-1.1.6.jar -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.libraries=/Users/teryk/.m2/repository/org/easytesting/fest-assert/1.4/fest-assert-1.4.jar,/Users/teryk/.m2/repository/org/easytesting/fest-util/1.1.6/fest-util-1.1.6.jar -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.links.ci= -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.links.homepage=http://maven.apache.org -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.links.issue= -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.links.scm= -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.links.scm_dev= -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.maven.projectDependencies=[{"k":"junit:junit","v":"4.11","s":"test","d":[{"k":"org.hamcrest:hamcrest-core","v":"1.3","s":"test","d":[]}]},{"k":"org.easytesting:fest-assert","v":"1.4","s":"compile","d":[{"k":"org.easytesting:fest-util","v":"1.1.6","s":"compile","d":[]}]}] -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.moduleKey=com.sonarsource:java-markdown -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.mojoUseRunner=true -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.permission.template.default=default_template -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.projectBaseDir=/Users/teryk/Projects/java-markdown -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.projectBuildDir=/Users/teryk/Projects/java-markdown/target -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.projectKey=com.sonarsource:java-markdown -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.projectName=Java Markdown -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.projectVersion=1.0-SNAPSHOT -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.qualitygate=1 -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.sourceEncoding=UTF-8 -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.sources=/Users/teryk/Projects/java-markdown/pom.xml,/Users/teryk/Projects/java-markdown/src/main/java -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.tests=/Users/teryk/Projects/java-markdown/src/test/java -2015.11.02 10:25:17 INFO [o.s.s.c.s.LogScannerContextStep] - sonar.working.directory=/Users/teryk/Projects/java-markdown/target/sonar -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Log scanner context | time=3ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Build tree of components | time=36ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Validate project | time=4ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Load debt model | time=5ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Load quality profiles | time=121ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Load Quality gate | time=8ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Load differential periods | time=30ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Compute size measures | time=29ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Compute new coverage | time=39ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Compute coverage measures | time=11ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Compute comment measures | time=6ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Copy custom measures | time=29ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Compute duplication measures | time=3ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Compute language distribution | time=17ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Compute test measures | time=2ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Compute complexity measures | time=24ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Load measure computers | time=2ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ExecuteVisitorsStep] Execution time for each component visitor: -2015.11.02 10:25:17 INFO [o.s.s.c.s.ExecuteVisitorsStep] - LoadComponentUuidsHavingOpenIssuesVisitor | time=5ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ExecuteVisitorsStep] - IntegrateIssuesVisitor | time=182ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ExecuteVisitorsStep] - CloseIssuesOnRemovedComponentsVisitor | time=0ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ExecuteVisitorsStep] - SqaleMeasuresVisitor | time=4ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ExecuteVisitorsStep] - SqaleNewMeasuresVisitor | time=0ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ExecuteVisitorsStep] - LastCommitVisitor | time=0ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ExecuteVisitorsStep] - MeasureComputersVisitor | time=3ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Execute component visitors | time=198ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Compute measure variations | time=3ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Computes Quality Gate measures | time=6ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Compute Quality profile measures | time=1ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Generate Quality profile events | time=4ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Generate Quality gate events | time=2ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Persist components | time=25ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Persist snapshots | time=26ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Persist measures | time=212ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Persist issues | time=59ms -2015.11.02 10:25:17 INFO [o.s.s.c.s.ComputationStepExecutor] Persist project links | time=6ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Persist events | time=4ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Persist duplications | time=2ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Persist sources | time=286ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Persist tests | time=16ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Enable snapshot | time=8ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Index components | time=60ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Purge db | time=27ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Apply permissions | time=2ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Index issues | time=77ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Index tests | time=50ms -2015.11.02 10:25:18 INFO [o.s.s.c.s.ComputationStepExecutor] Send issue notifications | time=2ms -2015.11.02 10:25:18 INFO [o.s.s.c.t.CeWorkerRunnableImpl] Executed task | project=com.sonarsource:java-markdown | id=AVDHg9OnLPOCEbN7mM58 | time=1706ms diff --git a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityActionTest.java index e2a4792de59..2eb1ce43430 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityActionTest.java @@ -20,13 +20,11 @@ package org.sonar.server.ce.ws; -import com.google.common.base.Optional; import com.google.common.base.Throwables; import java.io.IOException; import java.util.Collections; import java.util.Date; import java.util.List; -import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -34,7 +32,6 @@ import org.sonar.api.server.ws.WebService.Param; import org.sonar.api.utils.System2; import org.sonar.api.web.UserRole; import org.sonar.ce.log.CeLogging; -import org.sonar.ce.log.LogFileRef; import org.sonar.ce.taskprocessor.CeTaskProcessor; import org.sonar.core.permission.GlobalPermissions; import org.sonar.db.DbTester; @@ -56,9 +53,7 @@ import org.sonarqube.ws.client.ce.CeWsParameters; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import static org.sonar.api.utils.DateUtils.formatDate; import static org.sonar.api.utils.DateUtils.formatDateTime; import static org.sonar.db.component.ComponentTesting.newDeveloper; @@ -86,11 +81,6 @@ public class ActivityActionTest { ActivityAction underTest = new ActivityAction(userSession, dbTester.getDbClient(), formatter, new CeTaskProcessor[] {mock(CeTaskProcessor.class)}); WsActionTester ws = new WsActionTester(underTest); - @Before - public void setUp() { - when(ceLogging.getFile(any(LogFileRef.class))).thenReturn(Optional.absent()); - } - @Test public void get_all_past_activity() { globalAdmin(); diff --git a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/CeWsModuleTest.java b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/CeWsModuleTest.java index ddcd9422a37..2049f653d14 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/CeWsModuleTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/CeWsModuleTest.java @@ -30,6 +30,6 @@ public class CeWsModuleTest { public void verify_count_of_added_components() { ComponentContainer container = new ComponentContainer(); new CeWsModule().configure(container); - assertThat(container.size()).isEqualTo(12 + 2 /* injected by ComponentContainer */); + assertThat(container.size()).isEqualTo(11 + 2 /* injected by ComponentContainer */); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ComponentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ComponentActionTest.java index 7be3ae0f6fb..282e87da55f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ComponentActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ComponentActionTest.java @@ -19,15 +19,11 @@ */ package org.sonar.server.ce.ws; -import com.google.common.base.Optional; -import java.io.File; -import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.sonar.api.utils.System2; import org.sonar.api.web.UserRole; import org.sonar.ce.log.CeLogging; -import org.sonar.ce.log.LogFileRef; import org.sonar.core.util.Protobuf; import org.sonar.db.DbTester; import org.sonar.db.ce.CeActivityDto; @@ -40,9 +36,7 @@ import org.sonarqube.ws.MediaTypes; import org.sonarqube.ws.WsCe; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; public class ComponentActionTest { @@ -57,11 +51,6 @@ public class ComponentActionTest { ComponentAction underTest = new ComponentAction(userSession, dbTester.getDbClient(), formatter); WsActionTester tester = new WsActionTester(underTest); - @Before - public void setUp() { - when(ceLogging.getFile(any(LogFileRef.class))).thenReturn(Optional.<File>absent()); - } - @Test public void empty_queue_and_empty_activity() { userSession.addComponentUuidPermission(UserRole.USER, "PROJECT_1", "PROJECT_1"); @@ -109,9 +98,9 @@ public class ComponentActionTest { insertActivity("T5", "PROJECT_1", CeActivityDto.Status.CANCELED); TestResponse wsResponse = tester.newRequest() - .setParam("componentId", "PROJECT_1") - .setMediaType(MediaTypes.PROTOBUF) - .execute(); + .setParam("componentId", "PROJECT_1") + .setMediaType(MediaTypes.PROTOBUF) + .execute(); WsCe.ProjectResponse response = Protobuf.read(wsResponse.getInputStream(), WsCe.ProjectResponse.parser()); assertThat(response.getQueueCount()).isEqualTo(0); diff --git a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/LogsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/LogsActionTest.java deleted file mode 100644 index 7a5277bb522..00000000000 --- a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/LogsActionTest.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.server.ce.ws; - -import com.google.common.base.Optional; -import java.io.File; -import java.io.IOException; -import javax.annotation.Nullable; -import org.apache.commons.io.FileUtils; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.sonar.api.utils.System2; -import org.sonar.api.web.UserRole; -import org.sonar.db.DbTester; -import org.sonar.db.ce.CeQueueDto; -import org.sonar.db.ce.CeTaskTypes; -import org.sonar.ce.log.CeLogging; -import org.sonar.ce.log.LogFileRef; -import org.sonar.server.exceptions.ForbiddenException; -import org.sonar.server.exceptions.NotFoundException; -import org.sonarqube.ws.MediaTypes; -import org.sonar.server.tester.UserSessionRule; -import org.sonar.server.ws.TestResponse; -import org.sonar.server.ws.WsActionTester; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class LogsActionTest { - - @Rule - public UserSessionRule userSession = UserSessionRule.standalone(); - - @Rule - public TemporaryFolder temp = new TemporaryFolder(); - - @Rule - public DbTester dbTester = DbTester.create(System2.INSTANCE); - - CeLogging ceLogging = mock(CeLogging.class); - LogsAction underTest = new LogsAction(dbTester.getDbClient(), userSession, ceLogging); - WsActionTester tester = new WsActionTester(underTest); - - @Test - public void return_task_logs_if_available() throws IOException { - globalAdministrator(); - - // task must exist in database - insert("TASK_1", null); - File logFile = temp.newFile(); - FileUtils.write(logFile, "{logs}"); - when(ceLogging.getFile(new LogFileRef(CeTaskTypes.REPORT, "TASK_1", null))).thenReturn(Optional.of(logFile)); - - TestResponse response = tester.newRequest() - .setParam("taskId", "TASK_1") - .execute(); - - assertThat(response.getMediaType()).isEqualTo(MediaTypes.TXT); - assertThat(response.getInput()).isEqualTo("{logs}"); - } - - @Test - public void return_task_logs_when_project_admin() throws Exception { - userSession.addProjectUuidPermissions(UserRole.ADMIN, "PROJECT_UUID"); - - // task must exist in database - insert("TASK_1", "PROJECT_UUID"); - File logFile = temp.newFile(); - FileUtils.write(logFile, "{logs}"); - when(ceLogging.getFile(new LogFileRef(CeTaskTypes.REPORT, "TASK_1", "PROJECT_UUID"))).thenReturn(Optional.of(logFile)); - - TestResponse response = tester.newRequest() - .setParam("taskId", "TASK_1") - .execute(); - - assertThat(response.getMediaType()).isEqualTo(MediaTypes.TXT); - assertThat(response.getInput()).isEqualTo("{logs}"); - } - - /** - * The parameter taskId is present but empty. It's considered as - * a valid task which does not exist - */ - @Test(expected = NotFoundException.class) - public void return_404_if_task_id_is_empty() { - globalAdministrator(); - tester.newRequest() - .setParam("taskId", "") - .execute(); - } - - @Test(expected = IllegalArgumentException.class) - public void bad_request_if_task_id_is_missing() { - globalAdministrator(); - tester.newRequest() - .execute(); - } - - @Test(expected = NotFoundException.class) - public void return_404_if_task_logs_are_not_available() { - globalAdministrator(); - insert("TASK_1", null); - when(ceLogging.getFile(new LogFileRef(CeTaskTypes.REPORT, "TASK_1", null))).thenReturn(Optional.<File>absent()); - - tester.newRequest() - .setParam("taskId", "TASK_1") - .execute(); - } - - @Test(expected = NotFoundException.class) - public void return_404_if_task_does_not_exist() { - globalAdministrator(); - tester.newRequest() - .setParam("taskId", "TASK_1") - .execute(); - } - - @Test(expected = ForbiddenException.class) - public void require_admin_permission() { - insert("TASK_1", null); - tester.newRequest() - .setParam("taskId", "TASK_1") - .execute(); - } - - private void globalAdministrator() { - userSession.setGlobalPermissions(UserRole.ADMIN); - } - - private CeQueueDto insert(String taskUuid, @Nullable String componentUuid) { - CeQueueDto queueDto = new CeQueueDto(); - queueDto.setTaskType(CeTaskTypes.REPORT); - queueDto.setComponentUuid(componentUuid); - queueDto.setUuid(taskUuid); - queueDto.setStatus(CeQueueDto.Status.IN_PROGRESS); - dbTester.getDbClient().ceQueueDao().insert(dbTester.getSession(), queueDto); - dbTester.getSession().commit(); - return queueDto; - } -} 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 8584d97a4f3..d9cd5ab51eb 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 @@ -19,15 +19,12 @@ */ package org.sonar.server.ce.ws; -import com.google.common.base.Optional; -import java.io.File; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.sonar.api.utils.System2; import org.sonar.ce.log.CeLogging; -import org.sonar.ce.log.LogFileRef; import org.sonar.core.util.Protobuf; import org.sonar.db.DbTester; import org.sonar.db.ce.CeActivityDto; @@ -44,9 +41,7 @@ import org.sonarqube.ws.MediaTypes; import org.sonarqube.ws.WsCe; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import static org.sonar.core.permission.GlobalPermissions.PROVISIONING; import static org.sonar.core.permission.GlobalPermissions.SCAN_EXECUTION; import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN; @@ -75,7 +70,6 @@ public class TaskActionTest { @Before public void setUp() { dbTester.getDbClient().componentDao().insert(dbTester.getSession(), PROJECT); - when(ceLogging.getFile(any(LogFileRef.class))).thenReturn(Optional.<File>absent()); } @Test |