Skip to content

Commit

Permalink
Add getSuites() implementation (#263)
Browse files Browse the repository at this point in the history
Co-authored-by: gongy <[email protected]>
  • Loading branch information
topikachu and gongy authored Nov 25, 2022
1 parent 18aa6d9 commit 9ec3747
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 14 deletions.
12 changes: 6 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>4.50</version>
<version>4.51</version>
<relativePath />
</parent>
<groupId>io.jenkins.plugins</groupId>
Expand All @@ -14,7 +14,7 @@
<properties>
<changelist>999999-SNAPSHOT</changelist>
<gitHubRepo>jenkinsci/junit-sql-storage-plugin</gitHubRepo>
<jenkins.version>2.289.1</jenkins.version>
<jenkins.version>2.346.3</jenkins.version>
<useBeta>true</useBeta>
</properties>
<name>Junit SQL Storage Plugin</name>
Expand All @@ -25,8 +25,8 @@
<dependencies>
<dependency>
<groupId>io.jenkins.tools.bom</groupId>
<artifactId>bom-2.289.x</artifactId>
<version>1117.v62a_f6a_01de98</version>
<artifactId>bom-2.346.x</artifactId>
<version>1706.vc166d5f429f8</version>
<scope>import</scope>
<type>pom</type>
</dependency>
Expand All @@ -42,7 +42,7 @@
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
Expand All @@ -63,7 +63,7 @@
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>junit</artifactId>
<version>1.53</version>
<version>1166.va_436e268e972</version>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins.workflow</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,8 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;

import jenkins.model.Jenkins;
import org.apache.commons.lang3.StringUtils;
import org.jenkinsci.Symbol;
Expand Down Expand Up @@ -668,6 +664,49 @@ public SuiteResult getSuite(String name) {

}

@Override
public Collection<SuiteResult> getSuites() {
return query(connection -> {
try (PreparedStatement statement = connection.prepareStatement("SELECT suite, testname, package, classname, errordetails, skipped, duration, stdout, stderr, stacktrace FROM caseResults WHERE job = ? AND build = ? ORDER BY suite")) {
statement.setString(1, job);
statement.setInt(2, build);
List<SuiteResult> suiteResults = new ArrayList<SuiteResult>();
try (ResultSet result = statement.executeQuery()) {
TestResult parent = new TestResult(this);
SuiteResult suiteResult = null;
boolean isFirstRow = true;
while (result.next()) {
String thisSuiteName = result.getString("suite");
if (isFirstRow || !StringUtils.equals(suiteResult.getName(), thisSuiteName)) {
suiteResult = new SuiteResult(thisSuiteName, null, null, null);
suiteResults.add(suiteResult);
isFirstRow = false;
}
String resultTestName = result.getString("testname");
String errorDetails = result.getString("errordetails");
String packageName = result.getString("package");
String className = result.getString("classname");
String skipped = result.getString("skipped");
String stdout = result.getString("stdout");
String stderr = result.getString("stderr");
String stacktrace = result.getString("stacktrace");
float duration = result.getFloat("duration");

suiteResult.setParent(parent);
CaseResult caseResult = new CaseResult(suiteResult, className, resultTestName, errorDetails, skipped, duration, stdout, stderr, stacktrace);
final PackageResult packageResult = new PackageResult(parent, packageName);
packageResult.add(caseResult);
ClassResult classResult = new ClassResult(packageResult, className);
classResult.add(caseResult);
caseResult.setClass(classResult);
suiteResult.addCase(caseResult);
}
return suiteResults;
}
}
});
}

@Override
public float getTotalTestDuration() {
return query(connection -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import hudson.model.Result;
import hudson.tasks.junit.CaseResult;
import hudson.tasks.junit.PackageResult;
import hudson.tasks.junit.SuiteResult;
import hudson.tasks.junit.TestDurationResultSummary;
import hudson.tasks.junit.TestResultAction;
import hudson.tasks.junit.TestResultSummary;
Expand All @@ -21,6 +22,7 @@
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
Expand All @@ -44,7 +46,9 @@

import static java.util.Objects.requireNonNull;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasProperty;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
Expand Down Expand Up @@ -119,6 +123,7 @@ public void smokes() throws Exception {
assertEquals(1, a.getResult().getSkipCount());
assertEquals(4, a.getResult().getTotalCount());
assertEquals(1, a.getResult().getPassCount());
assertEquals(2, a.getResult().getSuites().size());
List<CaseResult> failedTests = a.getFailedTests();
assertEquals(2, failedTests.size());
final CaseResult klazzTest1 = failedTests.get(0);
Expand Down Expand Up @@ -171,6 +176,21 @@ public void smokes() throws Exception {

final List<TestDurationResultSummary> testDurationResultSummary = pluggableStorage.getTestDurationResultSummary();
assertThat(testDurationResultSummary.get(0).getDuration(), is(200));

//check storage getSuites method
Collection<SuiteResult> suiteResults = pluggableStorage.getSuites();
assertThat(suiteResults, hasSize(2));
//check the two suites name
assertThat(suiteResults, containsInAnyOrder(hasProperty("name", equalTo("supersweet")), hasProperty("name", equalTo("sweet"))));

//check one suite detail
SuiteResult supersweetSuite = suiteResults.stream()
.filter(suite -> suite.getName().equals("supersweet"))
.findFirst()
.get();
assertThat(supersweetSuite.getCases(), hasSize(1));
assertThat(supersweetSuite.getCases().get(0).getName(), equalTo("test1"));
assertThat(supersweetSuite.getCases().get(0).getClassName(), equalTo("another.Klazz"));
}
}
}
Expand Down Expand Up @@ -309,9 +329,9 @@ public void testResultCleanup_skipped_if_disabled() throws Exception {
private void setupPlugin(PostgreSQLContainer<?> postgres) throws SQLException {
// comment this out if you hit the below test containers issue
postgres.start();

PostgreSQLDatabase database = new PostgreSQLDatabase(postgres.getHost() + ":" + postgres.getMappedPort(5432), postgres.getDatabaseName(), postgres.getUsername(), Secret.fromString(postgres.getPassword()), null);
// Use the below if test containers doesn't work for you, i.e. MacOS edge release of docker broken Sep 2020
// Use the below if test containers doesn't work for you, i.e. MacOS edge release of docker broken Sep 2020
// https://github.com/testcontainers/testcontainers-java/issues/3166
// PostgreSQLDatabase database = new PostgreSQLDatabase("localhost", "postgres", "postgres", Secret.fromString("postgres"), null);
database.setValidationQuery("SELECT 1");
Expand Down

0 comments on commit 9ec3747

Please sign in to comment.