Search in sources :

Example 6 with QualityGate

use of org.sonar.wsclient.qualitygate.QualityGate in project sonarqube by SonarSource.

the class QualityGateTest method test_status_ok.

@Test
public void test_status_ok() throws IOException {
    QualityGate simple = qgClient().create("SimpleWithHighThreshold");
    qgClient().setDefault(simple.id());
    qgClient().createCondition(NewCondition.create(simple.id()).metricKey("ncloc").operator("GT").warningThreshold("40"));
    try {
        SonarScanner build = SonarScanner.create(projectDir("qualitygate/xoo-sample"));
        BuildResult buildResult = orchestrator.executeBuild(build);
        verifyQGStatusInPostTask(buildResult, TASK_STATUS_SUCCESS, QG_STATUS_OK);
        assertThat(getGateStatusMeasure().getValue()).isEqualTo("OK");
    } finally {
        qgClient().unsetDefault();
        qgClient().destroy(simple.id());
    }
}
Also used : BuildResult(com.sonar.orchestrator.build.BuildResult) QualityGate(org.sonar.wsclient.qualitygate.QualityGate) SonarScanner(com.sonar.orchestrator.build.SonarScanner) Test(org.junit.Test)

Example 7 with QualityGate

use of org.sonar.wsclient.qualitygate.QualityGate in project sonarqube by SonarSource.

the class ProjectQualityGatePageTest method should_set_default.

@Test
public void should_set_default() {
    QualityGate customQualityGate = createCustomQualityGate("should_set_default");
    qualityGateClient().setDefault(customQualityGate.id());
    ProjectQualityGatePage page = openPage();
    page.setQualityGate(customQualityGate.name());
    SelenideElement selectedQualityGate = page.getSelectedQualityGate();
    selectedQualityGate.should(Condition.hasText("Default"));
    selectedQualityGate.should(Condition.hasText(customQualityGate.name()));
}
Also used : SelenideElement(com.codeborne.selenide.SelenideElement) ProjectQualityGatePage(pageobjects.ProjectQualityGatePage) QualityGate(org.sonar.wsclient.qualitygate.QualityGate) Test(org.junit.Test)

Example 8 with QualityGate

use of org.sonar.wsclient.qualitygate.QualityGate in project sonarqube by SonarSource.

the class QualityGateTest method conditions_on_multiple_metric_types.

@Test
public void conditions_on_multiple_metric_types() throws IOException {
    QualityGate allTypes = qgClient().create("AllMetricTypes");
    qgClient().createCondition(NewCondition.create(allTypes.id()).metricKey("ncloc").operator("GT").warningThreshold("10"));
    qgClient().createCondition(NewCondition.create(allTypes.id()).metricKey("duplicated_lines_density").operator("GT").warningThreshold("20"));
    qgClient().setDefault(allTypes.id());
    try {
        SonarScanner build = SonarScanner.create(projectDir("qualitygate/xoo-sample")).setProperty("sonar.cpd.xoo.minimumLines", "2").setProperty("sonar.cpd.xoo.minimumTokens", "5");
        BuildResult buildResult = orchestrator.executeBuild(build);
        verifyQGStatusInPostTask(buildResult, TASK_STATUS_SUCCESS, QG_STATUS_WARN);
        Measure alertStatus = getGateStatusMeasure();
        assertThat(alertStatus.getValue()).isEqualTo("WARN");
        String qualityGateDetailJson = ItUtils.getMeasure(orchestrator, PROJECT_KEY, "quality_gate_details").getValue();
        assertThat(QualityGateDetails.parse(qualityGateDetailJson).getConditions()).extracting(QualityGateDetails.Conditions::getMetric, QualityGateDetails.Conditions::getOp, QualityGateDetails.Conditions::getWarning).contains(tuple("ncloc", "GT", "10"), tuple("duplicated_lines_density", "GT", "20"));
    } finally {
        qgClient().unsetDefault();
        qgClient().destroy(allTypes.id());
    }
}
Also used : BuildResult(com.sonar.orchestrator.build.BuildResult) Measure(org.sonarqube.ws.WsMeasures.Measure) ItUtils.getMeasure(util.ItUtils.getMeasure) QualityGate(org.sonar.wsclient.qualitygate.QualityGate) SonarScanner(com.sonar.orchestrator.build.SonarScanner) Test(org.junit.Test)

Example 9 with QualityGate

use of org.sonar.wsclient.qualitygate.QualityGate in project sonarqube by SonarSource.

the class QualityGateTest method test_status_warning.

@Test
public void test_status_warning() throws IOException {
    QualityGate simple = qgClient().create("SimpleWithLowThreshold");
    qgClient().setDefault(simple.id());
    qgClient().createCondition(NewCondition.create(simple.id()).metricKey("ncloc").operator("GT").warningThreshold("10"));
    try {
        SonarScanner build = SonarScanner.create(projectDir("qualitygate/xoo-sample"));
        BuildResult buildResult = orchestrator.executeBuild(build);
        verifyQGStatusInPostTask(buildResult, TASK_STATUS_SUCCESS, QG_STATUS_WARN);
        assertThat(getGateStatusMeasure().getValue()).isEqualTo("WARN");
    } finally {
        qgClient().unsetDefault();
        qgClient().destroy(simple.id());
    }
}
Also used : BuildResult(com.sonar.orchestrator.build.BuildResult) QualityGate(org.sonar.wsclient.qualitygate.QualityGate) SonarScanner(com.sonar.orchestrator.build.SonarScanner) Test(org.junit.Test)

Example 10 with QualityGate

use of org.sonar.wsclient.qualitygate.QualityGate in project sonarqube by SonarSource.

the class QualityGateTest method status_ok_if_empty_gate.

@Test
public void status_ok_if_empty_gate() throws IOException {
    QualityGate empty = qgClient().create("Empty");
    qgClient().setDefault(empty.id());
    try {
        SonarScanner build = SonarScanner.create(projectDir("qualitygate/xoo-sample"));
        BuildResult buildResult = orchestrator.executeBuild(build);
        verifyQGStatusInPostTask(buildResult, TASK_STATUS_SUCCESS, QG_STATUS_OK);
        assertThat(getGateStatusMeasure().getValue()).isEqualTo("OK");
    } finally {
        qgClient().unsetDefault();
        qgClient().destroy(empty.id());
    }
}
Also used : BuildResult(com.sonar.orchestrator.build.BuildResult) QualityGate(org.sonar.wsclient.qualitygate.QualityGate) SonarScanner(com.sonar.orchestrator.build.SonarScanner) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)14 QualityGate (org.sonar.wsclient.qualitygate.QualityGate)14 SonarScanner (com.sonar.orchestrator.build.SonarScanner)8 BuildResult (com.sonar.orchestrator.build.BuildResult)7 ProjectQualityGatePage (pageobjects.ProjectQualityGatePage)5 SelenideElement (com.codeborne.selenide.SelenideElement)4 File (java.io.File)1 Date (java.util.Date)1 MimeMessage (javax.mail.internet.MimeMessage)1 Ignore (org.junit.Ignore)1 QualityGateClient (org.sonar.wsclient.qualitygate.QualityGateClient)1 QualityGateCondition (org.sonar.wsclient.qualitygate.QualityGateCondition)1 Measure (org.sonarqube.ws.WsMeasures.Measure)1 ProjectStatusWsResponse (org.sonarqube.ws.WsQualityGates.ProjectStatusWsResponse)1 PostRequest (org.sonarqube.ws.client.PostRequest)1 WsClient (org.sonarqube.ws.client.WsClient)1 ProjectStatusWsRequest (org.sonarqube.ws.client.qualitygate.ProjectStatusWsRequest)1 WiserMessage (org.subethamail.wiser.WiserMessage)1 ProjectActivityPage (pageobjects.ProjectActivityPage)1 ItUtils.getMeasure (util.ItUtils.getMeasure)1