diff options
author | Eric Hartmann <hartmann.eric@gmail.com> | 2017-09-05 10:46:34 +0200 |
---|---|---|
committer | Eric Hartmann <hartmann.eric@gmail.Com> | 2017-09-14 18:18:20 +0200 |
commit | 9a4c4e50641c73064fef10fa4c2073439bc38651 (patch) | |
tree | 8284093da88dd9125e015bdee2ec202a13f9d793 /tests | |
parent | f8d11ce6dea055ea75ab7d325fb1530c0e98612a (diff) | |
download | sonarqube-9a4c4e50641c73064fef10fa4c2073439bc38651.tar.gz sonarqube-9a4c4e50641c73064fef10fa4c2073439bc38651.zip |
SONAR-9760 Throw an exception when indexation is failing
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/test/java/org/sonarqube/tests/analysis/AnalysisEsResilienceTest.java | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/tests/src/test/java/org/sonarqube/tests/analysis/AnalysisEsResilienceTest.java b/tests/src/test/java/org/sonarqube/tests/analysis/AnalysisEsResilienceTest.java index 6d6adeb2030..b522d311f74 100644 --- a/tests/src/test/java/org/sonarqube/tests/analysis/AnalysisEsResilienceTest.java +++ b/tests/src/test/java/org/sonarqube/tests/analysis/AnalysisEsResilienceTest.java @@ -22,6 +22,9 @@ package org.sonarqube.tests.analysis; import com.sonar.orchestrator.Orchestrator; import com.sonar.orchestrator.build.BuildResult; import com.sonar.orchestrator.build.SonarScanner; +import com.sonar.orchestrator.util.NetworkUtils; +import java.net.InetAddress; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; @@ -36,6 +39,7 @@ import org.sonarqube.tests.Tester; import org.sonarqube.ws.Issues; import org.sonarqube.ws.Organizations.Organization; import org.sonarqube.ws.QualityProfiles.CreateWsResponse.QualityProfile; +import org.sonarqube.ws.WsCe; import org.sonarqube.ws.WsProjects; import org.sonarqube.ws.WsUsers.CreateWsResponse.User; import org.sonarqube.ws.client.component.SuggestionsWsRequest; @@ -45,6 +49,7 @@ import util.ItUtils; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; import static org.sonarqube.tests.Byteman.Process.CE; +import static org.sonarqube.ws.WsCe.TaskStatus.FAILED; import static util.ItUtils.projectDir; public class AnalysisEsResilienceTest { @@ -52,12 +57,14 @@ public class AnalysisEsResilienceTest { @ClassRule public static final Orchestrator orchestrator; private static final Byteman byteman; + private static final int esHttpPort = NetworkUtils.getNextAvailablePort(InetAddress.getLoopbackAddress()); static { byteman = new Byteman(Orchestrator.builderEnv(), CE); orchestrator = byteman .getOrchestratorBuilder() .addPlugin(ItUtils.xooPlugin()) + .setServerProperty("sonar.search.httpPort", "" + esHttpPort) .build(); } @@ -67,6 +74,9 @@ public class AnalysisEsResilienceTest { @After public void after() throws Exception { byteman.deactivateAllRules(); + for (String index : Arrays.asList("issues", "rules", "users", "components", "views", "tests", "projectmeasures")) { + tester.elasticsearch().unlockWrites(index); + } } @Test @@ -117,6 +127,27 @@ public class AnalysisEsResilienceTest { tuple(file3Key, "OPEN")); } + @Test + public void compute_engine_task_must_be_red_when_es_is_not_available() throws Exception { + Organization organization = tester.organizations().generate(); + User orgAdministrator = tester.users().generateAdministrator(organization); + WsProjects.CreateWsResponse.Project project = tester.projects().generate(organization); + String projectKey = project.getKey(); + String fileKey = projectKey + ":src/main/xoo/sample/Sample.xoo"; + + QualityProfile profile = tester.qProfiles().createXooProfile(organization); + tester.qProfiles() + .activateRule(profile, "xoo:OneIssuePerFile") + .assignQProfileToProject(profile, project); + + tester.elasticsearch().lockWrites("issues"); + + String analysisKey = executeAnalysis(projectKey, organization, orgAdministrator, "analysis/resilience/resilience-sample-v1"); + WsCe.TaskResponse task = tester.wsClient().ce().task(analysisKey); + + assertThat(task.getTask().getStatus()).isEqualTo(FAILED); + } + private List<Issues.Issue> searchIssues(String projectKey) { SearchWsRequest request = new SearchWsRequest() .setProjectKeys(Collections.singletonList(projectKey)); @@ -146,5 +177,4 @@ public class AnalysisEsResilienceTest { "sonar.password", orgAdministrator.getLogin())); return ItUtils.extractCeTaskId(buildResult); } - } |