|
56 | 56 | import java.sql.Statement; |
57 | 57 | import java.sql.Types; |
58 | 58 | import java.util.ArrayList; |
| 59 | +import java.util.Collection; |
59 | 60 | import java.util.Comparator; |
60 | 61 | import java.util.HashMap; |
61 | 62 | import java.util.List; |
|
94 | 95 | import static org.hamcrest.MatcherAssert.assertThat; |
95 | 96 | import static org.hamcrest.Matchers.containsInAnyOrder; |
96 | 97 | import static org.hamcrest.Matchers.equalTo; |
| 98 | +import static org.hamcrest.Matchers.hasProperty; |
97 | 99 | import static org.hamcrest.Matchers.hasSize; |
98 | 100 | import static org.hamcrest.core.Is.is; |
99 | 101 | import static org.junit.Assert.assertEquals; |
@@ -175,6 +177,7 @@ public class TestResultStorageJunitTest { |
175 | 177 | assertEquals(1, a.getResult().getSkipCount()); |
176 | 178 | assertEquals(4, a.getResult().getTotalCount()); |
177 | 179 | assertEquals(1, a.getResult().getPassCount()); |
| 180 | + assertEquals(2, a.getResult().getSuites().size()); |
178 | 181 | List<CaseResult> failedTests = a.getFailedTests(); |
179 | 182 | assertEquals(2, failedTests.size()); |
180 | 183 | final CaseResult klazzTest1 = failedTests.get(0); |
@@ -227,7 +230,21 @@ public class TestResultStorageJunitTest { |
227 | 230 |
|
228 | 231 | final List<TestDurationResultSummary> testDurationResultSummary = pluggableStorage.getTestDurationResultSummary(); |
229 | 232 | assertThat(testDurationResultSummary.get(0).getDuration(), is(200)); |
230 | | - |
| 233 | + |
| 234 | + //check storage getSuites method |
| 235 | + Collection<SuiteResult> suiteResults = pluggableStorage.getSuites(); |
| 236 | + assertThat(suiteResults, hasSize(2)); |
| 237 | + //check the two suites name |
| 238 | + assertThat(suiteResults, containsInAnyOrder(hasProperty("name", equalTo("supersweet")), hasProperty("name", equalTo("sweet")))); |
| 239 | + |
| 240 | + //check one suite detail |
| 241 | + SuiteResult supersweetSuite = suiteResults.stream() |
| 242 | + .filter(suite -> suite.getName().equals("supersweet")) |
| 243 | + .findFirst() |
| 244 | + .get(); |
| 245 | + assertThat(supersweetSuite.getCases(), hasSize(1)); |
| 246 | + assertThat(supersweetSuite.getCases().get(0).getName(), equalTo("test1")); |
| 247 | + assertThat(supersweetSuite.getCases().get(0).getClassName(), equalTo("another.Klazz")); |
231 | 248 | // TODO test result summary i.e. failure content |
232 | 249 | // TODO getFailedSinceRun, TestResult#getChildren, TestObject#getTestResultAction |
233 | 250 | // TODO more detailed Java queries incl. ClassResult |
@@ -675,6 +692,50 @@ public SuiteResult getSuite(String name) { |
675 | 692 |
|
676 | 693 | } |
677 | 694 |
|
| 695 | + public Collection<SuiteResult> getSuites() { |
| 696 | + return query(connection -> { |
| 697 | + try (PreparedStatement statement = connection.prepareStatement("SELECT suite, testname, package, classname, errordetails, skipped, duration, stdout, stderr, stacktrace FROM " + Impl.CASE_RESULTS_TABLE + " WHERE job = ? AND build = ? ORDER BY suite")) { |
| 698 | + statement.setString(1, job); |
| 699 | + statement.setInt(2, build); |
| 700 | + try (ResultSet result = statement.executeQuery()) { |
| 701 | + SuiteResult suiteResult = null; |
| 702 | + TestResult parent = new TestResult(this); |
| 703 | + boolean isFirst = true; |
| 704 | + List <SuiteResult> suites = new ArrayList<SuiteResult>(); |
| 705 | + while (result.next()) { |
| 706 | + String suiteName = result.getString("suite"); |
| 707 | + if (isFirst || !suiteResult.getName().equals(suiteName)) { |
| 708 | + suiteResult = new SuiteResult(suiteName, null, null, null); |
| 709 | + suites.add(suiteResult); |
| 710 | + isFirst = false; |
| 711 | + } |
| 712 | + String resultTestName = result.getString("testname"); |
| 713 | + String errorDetails = result.getString("errordetails"); |
| 714 | + String packageName = result.getString("package"); |
| 715 | + String className = result.getString("classname"); |
| 716 | + String skipped = result.getString("skipped"); |
| 717 | + String stdout = result.getString("stdout"); |
| 718 | + String stderr = result.getString("stderr"); |
| 719 | + String stacktrace = result.getString("stacktrace"); |
| 720 | + float duration = result.getFloat("duration"); |
| 721 | + |
| 722 | + suiteResult.setParent(parent); |
| 723 | + CaseResult caseResult = new CaseResult(suiteResult, className, resultTestName, errorDetails, skipped, duration, stdout, stderr, stacktrace); |
| 724 | + final PackageResult packageResult = new PackageResult(parent, packageName); |
| 725 | + packageResult.add(caseResult); |
| 726 | + ClassResult classResult = new ClassResult(packageResult, className); |
| 727 | + classResult.add(caseResult); |
| 728 | + caseResult.setClass(classResult); |
| 729 | + suiteResult.addCase(caseResult); |
| 730 | + } |
| 731 | + return suites; |
| 732 | + } |
| 733 | + } |
| 734 | + }); |
| 735 | + }; |
| 736 | + |
| 737 | + |
| 738 | + |
678 | 739 | @Override |
679 | 740 | public float getTotalTestDuration() { |
680 | 741 | return query(connection -> { |
|
0 commit comments