]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10134 Fix ITs on quality gates by setting organization
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 12 Dec 2017 13:48:23 +0000 (14:48 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 14 Dec 2017 16:03:35 +0000 (17:03 +0100)
server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/QGateTester.java
tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateForSmallChangesetsTest.java
tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateTest.java

index 3383f355d09b45c63b5ade5e845dffc332846897..8860d32eb2bce411931d6a9eaa2ef080169b090a 100644 (file)
@@ -24,7 +24,10 @@ import com.google.gson.annotations.SerializedName;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Consumer;
 import java.util.stream.Collectors;
+import javax.annotation.Nullable;
+import org.sonarqube.ws.Organizations;
 import org.sonarqube.ws.Projects.CreateWsResponse.Project;
 import org.sonarqube.ws.client.qualitygates.CreateRequest;
 import org.sonarqube.ws.client.qualitygates.DestroyRequest;
@@ -33,6 +36,7 @@ import org.sonarqube.ws.client.qualitygates.QualitygatesService;
 import org.sonarqube.ws.client.qualitygates.SelectRequest;
 import org.sonarqube.ws.client.qualitygates.SetAsDefaultRequest;
 
+import static java.util.Arrays.stream;
 import static org.sonarqube.ws.Qualitygates.CreateResponse;
 import static org.sonarqube.ws.Qualitygates.ListWsResponse;
 
@@ -63,12 +67,28 @@ public class QGateTester {
   }
 
   public CreateResponse generate() {
+    return generate(null);
+  }
+
+  @SafeVarargs
+  public final CreateResponse generate(@Nullable Organizations.Organization organization, Consumer<CreateRequest>... populators) {
     int id = ID_GENERATOR.getAndIncrement();
-    return session.wsClient().qualitygates().create(new CreateRequest().setName("QualityGate" + id));
+    CreateRequest request = new CreateRequest()
+      .setName("QualityGate " + id)
+      .setOrganization(organization != null ? organization.getKey() : null);
+    stream(populators).forEach(p -> p.accept(request));
+    return session.wsClient().qualitygates().create(request);
   }
 
   public void associateProject(CreateResponse qualityGate, Project project) {
-    service().select(new SelectRequest().setGateId(String.valueOf(qualityGate.getId())).setProjectKey(project.getKey()));
+    associateProject(null, qualityGate, project);
+  }
+
+  public void associateProject(@Nullable Organizations.Organization organization, CreateResponse qualityGate, Project project) {
+    service().select(new SelectRequest()
+      .setOrganization(organization != null ? organization.getKey() : null)
+      .setGateId(String.valueOf(qualityGate.getId()))
+      .setProjectKey(project.getKey()));
   }
 
   public static class ListResponse {
index d0f2190c111f301e34e9489f1db23bc9fef56b3d..717e26d888f6eb142da31344e58070e3dadd260e 100644 (file)
@@ -59,9 +59,10 @@ public class OrganizationQualityGateForSmallChangesetsTest {
   public void do_not_fail_quality_gate_with_poor_LEAK_coverage_and_a_max_of_19_lines_of_NEW_code() throws Exception {
     Organizations.Organization organization = tester.organizations().generate();
     Project project = tester.projects().provision(organization);
-    Qualitygates.CreateResponse qualityGate = tester.qGates().generate();
-    tester.qGates().associateProject(qualityGate, project);
+    Qualitygates.CreateResponse qualityGate = tester.qGates().generate(organization);
+    tester.qGates().associateProject(organization, qualityGate, project);
     Qualitygates.CreateConditionResponse condition = tester.wsClient().qualitygates().createCondition(new CreateConditionRequest()
+      .setOrganization(organization.getKey())
       .setGateId(String.valueOf(qualityGate.getId()))
       .setMetric("new_coverage")
       .setOp("LT")
@@ -86,7 +87,7 @@ public class OrganizationQualityGateForSmallChangesetsTest {
       .setDebugLogs(true);
     orchestrator.executeBuild(analysis);
     assertThat(getMeasure(orchestrator, project.getKey(), "alert_status").getValue()).isEqualTo("OK");
-    assertIgnoredConditions("qualitygate/small-changesets/v1-1000-lines", false);
+    assertIgnoredConditions(organization,"qualitygate/small-changesets/v1-1000-lines", false);
 
     // small leak => ignore coverage warning or error
     SonarScanner analysis2 = SonarScanner
@@ -101,10 +102,11 @@ public class OrganizationQualityGateForSmallChangesetsTest {
       .setDebugLogs(true);
     orchestrator.executeBuild(analysis2);
     assertThat(getMeasure(orchestrator, project.getKey(), "alert_status").getValue()).isEqualTo("OK");
-    assertIgnoredConditions("qualitygate/small-changesets/v2-1019-lines", true);
+    assertIgnoredConditions(organization, "qualitygate/small-changesets/v2-1019-lines", true);
 
     // small leak => if coverage is OK anyways, we do not have to ignore anything
     tester.wsClient().qualitygates().updateCondition(new UpdateConditionRequest()
+      .setOrganization(organization.getKey())
       .setId(String.valueOf(condition.getId()))
       .setMetric("new_coverage")
       .setOp("LT")
@@ -123,10 +125,11 @@ public class OrganizationQualityGateForSmallChangesetsTest {
       .setDebugLogs(true);
     orchestrator.executeBuild(analysis3);
     assertThat(getMeasure(orchestrator, project.getKey(), "alert_status").getValue()).isEqualTo("OK");
-    assertIgnoredConditions("qualitygate/small-changesets/v2-1019-lines", false);
+    assertIgnoredConditions(organization, "qualitygate/small-changesets/v2-1019-lines", false);
 
     // big leak => use usual behaviour
     tester.wsClient().qualitygates().updateCondition(new UpdateConditionRequest()
+      .setOrganization(organization.getKey())
       .setId(String.valueOf(condition.getId()))
       .setMetric("new_coverage")
       .setOp("LT")
@@ -145,13 +148,13 @@ public class OrganizationQualityGateForSmallChangesetsTest {
       .setDebugLogs(true);
     orchestrator.executeBuild(analysis4);
     assertThat(getMeasure(orchestrator, project.getKey(), "alert_status").getValue()).isEqualTo("ERROR");
-    assertIgnoredConditions("qualitygate/small-changesets/v2-1020-lines", false);
+    assertIgnoredConditions(organization, "qualitygate/small-changesets/v2-1020-lines", false);
   }
 
-  private void assertIgnoredConditions(String projectDir, boolean expected) throws IOException {
+  private void assertIgnoredConditions(Organizations.Organization organization, String projectDir, boolean expected) throws IOException {
     String analysisId = getAnalysisId(getTaskIdInLocalReport(projectDir(projectDir)));
     boolean ignoredConditions = tester.wsClient().qualitygates()
-      .projectStatus(new ProjectStatusRequest().setAnalysisId(analysisId))
+      .projectStatus(new ProjectStatusRequest().setOrganization(organization.getKey()).setAnalysisId(analysisId))
       .getProjectStatus()
       .getIgnoredConditions();
     assertThat(ignoredConditions).isEqualTo(expected);
index bfaba6cc19bb2a941cb3eb7af7cf8df35251d490..155ba21efaa3ccbf7346638c5606c1825ef46c94 100644 (file)
@@ -47,12 +47,13 @@ public class OrganizationQualityGateTest {
   public Tester tester = new Tester(orchestrator);
 
   @Test
-  public void always_display_current_quality_gate_in_effect() throws Exception {
+  public void always_display_current_quality_gate_in_effect() {
     Organization organization = tester.organizations().generate();
     Project project = tester.projects().provision(organization);
-    Qualitygates.CreateResponse qualityGate = tester.qGates().generate();
-    tester.qGates().associateProject(qualityGate, project);
+    Qualitygates.CreateResponse qualityGate = tester.qGates().generate(organization);
+    tester.qGates().associateProject(organization, qualityGate, project);
     tester.wsClient().qualitygates().createCondition(new CreateConditionRequest()
+      .setOrganization(organization.getKey())
       .setGateId(String.valueOf(qualityGate.getId()))
       .setMetric("new_coverage")
       .setOp("LT")
@@ -80,9 +81,10 @@ public class OrganizationQualityGateTest {
     Map currentQualityGate2 = (Map) ItUtils.jsonToMap(response2.content()).get("qualityGate");
     assertThat((long) (double) (Double) currentQualityGate2.get("key")).isEqualTo(qualityGate.getId());
 
-    Qualitygates.CreateResponse qualityGate2 = tester.qGates().generate();
-    tester.qGates().associateProject(qualityGate2, project);
+    Qualitygates.CreateResponse qualityGate2 = tester.qGates().generate(organization);
+    tester.qGates().associateProject(organization, qualityGate2, project);
     tester.wsClient().qualitygates().createCondition(new CreateConditionRequest()
+      .setOrganization(organization.getKey())
       .setGateId(String.valueOf(qualityGate2.getId()))
       .setMetric("new_coverage")
       .setOp("LT")