From 20de5f9f7f3c57e5285cd7637c522090420b8d1e Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Tue, 7 Jul 2020 17:01:45 +0200 Subject: [PATCH 01/46] Bump version --- CHANGES.txt | 3 +++ examples/ant/pom.xml | 2 +- examples/maven/pom.xml | 2 +- examples/security-manager/pom.xml | 2 +- junit4-ant/pom.xml | 2 +- junit4-maven-plugin-tests/pom.xml | 2 +- junit4-maven-plugin/pom.xml | 2 +- pom.xml | 2 +- randomized-runner/pom.xml | 2 +- 9 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index e7bd1b3f..5ed635a0 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,6 +5,9 @@ RandomizedTesting, Change Log For an up-to-date CHANGES file see https://github.com/randomizedtesting/randomizedtesting/blob/master/CHANGES +======================= randomizedtesting 2.7.9-SNAPSHOT ==================== + + ======================= randomizedtesting 2.7.8 ==================== Improvements diff --git a/examples/ant/pom.xml b/examples/ant/pom.xml index 89c569ce..5de40335 100644 --- a/examples/ant/pom.xml +++ b/examples/ant/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.8 + 2.7.9-SNAPSHOT ../../pom.xml diff --git a/examples/maven/pom.xml b/examples/maven/pom.xml index d9cd2dbd..502ddfb1 100644 --- a/examples/maven/pom.xml +++ b/examples/maven/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.8 + 2.7.9-SNAPSHOT ../../pom.xml diff --git a/examples/security-manager/pom.xml b/examples/security-manager/pom.xml index e278e7ba..06c7a461 100644 --- a/examples/security-manager/pom.xml +++ b/examples/security-manager/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.8 + 2.7.9-SNAPSHOT ../../pom.xml diff --git a/junit4-ant/pom.xml b/junit4-ant/pom.xml index b4cb98eb..1a257290 100644 --- a/junit4-ant/pom.xml +++ b/junit4-ant/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.8 + 2.7.9-SNAPSHOT ../pom.xml diff --git a/junit4-maven-plugin-tests/pom.xml b/junit4-maven-plugin-tests/pom.xml index 6c3cbf1d..f61530d2 100644 --- a/junit4-maven-plugin-tests/pom.xml +++ b/junit4-maven-plugin-tests/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.8 + 2.7.9-SNAPSHOT ../pom.xml diff --git a/junit4-maven-plugin/pom.xml b/junit4-maven-plugin/pom.xml index 5d7bf4e5..648d76cc 100644 --- a/junit4-maven-plugin/pom.xml +++ b/junit4-maven-plugin/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.8 + 2.7.9-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 9fc2854a..41461e04 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.8 + 2.7.9-SNAPSHOT pom RandomizedTesting Parent POM diff --git a/randomized-runner/pom.xml b/randomized-runner/pom.xml index 186e2ebb..5309d2cc 100644 --- a/randomized-runner/pom.xml +++ b/randomized-runner/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.8 + 2.7.9-SNAPSHOT ../pom.xml From 86410180f9cc6567d44da594e4f8be6a81c54743 Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Mon, 14 Dec 2020 11:32:59 +0100 Subject: [PATCH 02/46] Upgrade ant and junit. --- CHANGES.txt | 5 +++++ pom.xml | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 5ed635a0..45386574 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -7,6 +7,11 @@ https://github.com/randomizedtesting/randomizedtesting/blob/master/CHANGES ======================= randomizedtesting 2.7.9-SNAPSHOT ==================== +Other: + + * Update JUnit dependency to 4.13. + + * Update Ant dependency to 1.9.15. ======================= randomizedtesting 2.7.8 ==================== diff --git a/pom.xml b/pom.xml index 41461e04..aaf3eeca 100644 --- a/pom.xml +++ b/pom.xml @@ -65,8 +65,8 @@ - 4.12 - 1.9.11 + 4.13 + 1.9.15 2.2.0 1.8 From a504845fff67f91da418e011f38e2c862336b543 Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Mon, 14 Dec 2020 11:42:21 +0100 Subject: [PATCH 03/46] Use constants in StandardCharsets rather than forName. --- .../carrotsearch/randomizedtesting/RandomizedTest.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedTest.java b/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedTest.java index cdd1bede..fd9d02ab 100644 --- a/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedTest.java +++ b/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedTest.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.net.ServerSocket; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; import java.text.SimpleDateFormat; @@ -48,10 +49,10 @@ public class RandomizedTest { /* Commonly used charsets (these must be supported by every JVM). */ - protected static final Charset UTF8 = Charset.forName("UTF-8"); - protected static final Charset UTF16 = Charset.forName("UTF-16"); - protected static final Charset ISO8859_1 = Charset.forName("ISO-8859-1"); - protected static final Charset US_ASCII = Charset.forName("US-ASCII"); + protected static final Charset UTF8 = StandardCharsets.UTF_8; + protected static final Charset UTF16 = StandardCharsets.UTF_16; + protected static final Charset ISO8859_1 = StandardCharsets.ISO_8859_1; + protected static final Charset US_ASCII = StandardCharsets.US_ASCII; /* This charset does not need to be supported, but I don't know any JVM under which it wouldn't be. */ From 8be8a09e3b3bf1a57947d5367a1afe68322ac4dc Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Mon, 14 Dec 2020 11:42:29 +0100 Subject: [PATCH 04/46] Upgrade JUnit to 1.13.1 --- CHANGES.txt | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 45386574..39694337 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -9,7 +9,7 @@ https://github.com/randomizedtesting/randomizedtesting/blob/master/CHANGES Other: - * Update JUnit dependency to 4.13. + * Update JUnit dependency to 4.13.1. * Update Ant dependency to 1.9.15. diff --git a/pom.xml b/pom.xml index aaf3eeca..cd128d90 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ - 4.13 + 4.13.1 1.9.15 2.2.0 From 006d90480cf0f343ca6140cdd2706efd6ec382dd Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 1 Oct 2021 18:36:23 +0200 Subject: [PATCH 05/46] Correct test error (macobeta) --- .../generators/TestRealisticUnicodeGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/randomized-runner/src/test/java/com/carrotsearch/randomizedtesting/generators/TestRealisticUnicodeGenerator.java b/randomized-runner/src/test/java/com/carrotsearch/randomizedtesting/generators/TestRealisticUnicodeGenerator.java index 2c6b6430..493af8df 100644 --- a/randomized-runner/src/test/java/com/carrotsearch/randomizedtesting/generators/TestRealisticUnicodeGenerator.java +++ b/randomized-runner/src/test/java/com/carrotsearch/randomizedtesting/generators/TestRealisticUnicodeGenerator.java @@ -2,6 +2,6 @@ public class TestRealisticUnicodeGenerator extends StringGeneratorTestBase { public TestRealisticUnicodeGenerator() { - super(new UnicodeGenerator()); + super(new RealisticUnicodeGenerator()); } } From b4b787217f4e4c51010803b174e3430b4e18b3b5 Mon Sep 17 00:00:00 2001 From: Gautam Worah Date: Fri, 22 Oct 2021 00:08:21 -0700 Subject: [PATCH 06/46] Bump ASM to latest 9.2 (#301) Co-authored-by: Gautam Worah --- CHANGES.txt | 6 ++++++ .../main/java/com/carrotsearch/ant/tasks/junit4/JUnit4.java | 2 +- pom.xml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 39694337..e8ce974a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,6 +5,12 @@ RandomizedTesting, Change Log For an up-to-date CHANGES file see https://github.com/randomizedtesting/randomizedtesting/blob/master/CHANGES +======================= randomizedtesting 2.7.10-SNAPSHOT ==================== + +Other: + + * Update ASM to 9.2 to support JDK 17 + ======================= randomizedtesting 2.7.9-SNAPSHOT ==================== Other: diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/JUnit4.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/JUnit4.java index f4b3e833..0fd460cb 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/JUnit4.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/JUnit4.java @@ -1835,7 +1835,7 @@ private TestsCollection processTestResources() { final TestClass testClass = new TestClass(); ClassReader reader = new ClassReader(is); @SuppressWarnings("deprecation") - ClassVisitor annotationVisitor = new ClassVisitor(Opcodes.ASM8) { + ClassVisitor annotationVisitor = new ClassVisitor(Opcodes.ASM9) { @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { String className = Type.getType(desc).getClassName(); diff --git a/pom.xml b/pom.xml index cd128d90..699edd17 100644 --- a/pom.xml +++ b/pom.xml @@ -134,7 +134,7 @@ org.ow2.asm asm - 8.0.1 + 9.2 From 72df95063be603e103d2528b7f3ac03c110b3e78 Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 22 Oct 2021 09:09:22 +0200 Subject: [PATCH 07/46] Correct changes entry. --- CHANGES.txt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index e8ce974a..a7050a18 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,15 +5,10 @@ RandomizedTesting, Change Log For an up-to-date CHANGES file see https://github.com/randomizedtesting/randomizedtesting/blob/master/CHANGES -======================= randomizedtesting 2.7.10-SNAPSHOT ==================== - -Other: - - * Update ASM to 9.2 to support JDK 17 - ======================= randomizedtesting 2.7.9-SNAPSHOT ==================== Other: + * Update ASM to 9.2 to support JDK 17 * Update JUnit dependency to 4.13.1. From 79dc184639ef6a29100d6632d4328ac840c85914 Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 22 Oct 2021 09:14:19 +0200 Subject: [PATCH 08/46] Change distribution URL for sonatype staging. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 699edd17..a01b8061 100644 --- a/pom.xml +++ b/pom.xml @@ -550,7 +550,7 @@ sonatype-nexus-staging Sonatype Nexus Releases - https://oss.sonatype.org/service/local/staging/deploy/maven2/ + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2 From 0248911c8e1b361501a262f3156fcc23b2262f92 Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 22 Oct 2021 09:20:12 +0200 Subject: [PATCH 09/46] Prepare 2.7.9 --- CHANGES.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index a7050a18..9af90a01 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,9 +5,10 @@ RandomizedTesting, Change Log For an up-to-date CHANGES file see https://github.com/randomizedtesting/randomizedtesting/blob/master/CHANGES -======================= randomizedtesting 2.7.9-SNAPSHOT ==================== +======================= randomizedtesting 2.7.9 ==================== Other: + * Update ASM to 9.2 to support JDK 17 * Update JUnit dependency to 4.13.1. From dd72a1cf2cf0a9da652bd4cc8d9c23384c46924b Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 22 Oct 2021 09:21:27 +0200 Subject: [PATCH 10/46] Set version to 2.7.9 --- examples/ant/pom.xml | 2 +- examples/maven/pom.xml | 2 +- examples/security-manager/pom.xml | 2 +- junit4-ant/pom.xml | 2 +- junit4-maven-plugin-tests/pom.xml | 2 +- junit4-maven-plugin/pom.xml | 2 +- pom.xml | 2 +- randomized-runner/pom.xml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/ant/pom.xml b/examples/ant/pom.xml index 5de40335..c8fcb3a6 100644 --- a/examples/ant/pom.xml +++ b/examples/ant/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9-SNAPSHOT + 2.7.9 ../../pom.xml diff --git a/examples/maven/pom.xml b/examples/maven/pom.xml index 502ddfb1..2eaaa095 100644 --- a/examples/maven/pom.xml +++ b/examples/maven/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9-SNAPSHOT + 2.7.9 ../../pom.xml diff --git a/examples/security-manager/pom.xml b/examples/security-manager/pom.xml index 06c7a461..6517f67a 100644 --- a/examples/security-manager/pom.xml +++ b/examples/security-manager/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9-SNAPSHOT + 2.7.9 ../../pom.xml diff --git a/junit4-ant/pom.xml b/junit4-ant/pom.xml index 1a257290..3f140182 100644 --- a/junit4-ant/pom.xml +++ b/junit4-ant/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9-SNAPSHOT + 2.7.9 ../pom.xml diff --git a/junit4-maven-plugin-tests/pom.xml b/junit4-maven-plugin-tests/pom.xml index f61530d2..9cd2e0ea 100644 --- a/junit4-maven-plugin-tests/pom.xml +++ b/junit4-maven-plugin-tests/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9-SNAPSHOT + 2.7.9 ../pom.xml diff --git a/junit4-maven-plugin/pom.xml b/junit4-maven-plugin/pom.xml index 648d76cc..3b047e0e 100644 --- a/junit4-maven-plugin/pom.xml +++ b/junit4-maven-plugin/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9-SNAPSHOT + 2.7.9 ../pom.xml diff --git a/pom.xml b/pom.xml index a01b8061..f3507c9e 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9-SNAPSHOT + 2.7.9 pom RandomizedTesting Parent POM diff --git a/randomized-runner/pom.xml b/randomized-runner/pom.xml index 5309d2cc..bfa8ffc9 100644 --- a/randomized-runner/pom.xml +++ b/randomized-runner/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9-SNAPSHOT + 2.7.9 ../pom.xml From 3cf1e95d1b6776f891eda9446647ae27ff9fa8a5 Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 22 Oct 2021 09:33:25 +0200 Subject: [PATCH 11/46] Bump version. --- CHANGES.txt | 2 ++ examples/ant/pom.xml | 2 +- examples/maven/pom.xml | 2 +- examples/security-manager/pom.xml | 2 +- junit4-ant/pom.xml | 2 +- junit4-maven-plugin-tests/pom.xml | 2 +- junit4-maven-plugin/pom.xml | 2 +- pom.xml | 2 +- randomized-runner/pom.xml | 2 +- 9 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 9af90a01..97890178 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,6 +5,8 @@ RandomizedTesting, Change Log For an up-to-date CHANGES file see https://github.com/randomizedtesting/randomizedtesting/blob/master/CHANGES +======================= randomizedtesting 2.7.10-SNAPSHOT ==================== + ======================= randomizedtesting 2.7.9 ==================== Other: diff --git a/examples/ant/pom.xml b/examples/ant/pom.xml index c8fcb3a6..3e3a5bcb 100644 --- a/examples/ant/pom.xml +++ b/examples/ant/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9 + 2.7.10-SNAPSHOT ../../pom.xml diff --git a/examples/maven/pom.xml b/examples/maven/pom.xml index 2eaaa095..3e3a3e8f 100644 --- a/examples/maven/pom.xml +++ b/examples/maven/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9 + 2.7.10-SNAPSHOT ../../pom.xml diff --git a/examples/security-manager/pom.xml b/examples/security-manager/pom.xml index 6517f67a..c028df17 100644 --- a/examples/security-manager/pom.xml +++ b/examples/security-manager/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9 + 2.7.10-SNAPSHOT ../../pom.xml diff --git a/junit4-ant/pom.xml b/junit4-ant/pom.xml index 3f140182..3484bdf8 100644 --- a/junit4-ant/pom.xml +++ b/junit4-ant/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9 + 2.7.10-SNAPSHOT ../pom.xml diff --git a/junit4-maven-plugin-tests/pom.xml b/junit4-maven-plugin-tests/pom.xml index 9cd2e0ea..6f6e16d9 100644 --- a/junit4-maven-plugin-tests/pom.xml +++ b/junit4-maven-plugin-tests/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9 + 2.7.10-SNAPSHOT ../pom.xml diff --git a/junit4-maven-plugin/pom.xml b/junit4-maven-plugin/pom.xml index 3b047e0e..1edea4d9 100644 --- a/junit4-maven-plugin/pom.xml +++ b/junit4-maven-plugin/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9 + 2.7.10-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index f3507c9e..a0d88f3a 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9 + 2.7.10-SNAPSHOT pom RandomizedTesting Parent POM diff --git a/randomized-runner/pom.xml b/randomized-runner/pom.xml index bfa8ffc9..2ccd7925 100644 --- a/randomized-runner/pom.xml +++ b/randomized-runner/pom.xml @@ -5,7 +5,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-parent - 2.7.9 + 2.7.10-SNAPSHOT ../pom.xml From ef0d5fbdaf2df47f31b7c4286dd8850d9e52e5cb Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Tue, 28 Jun 2022 10:42:01 +0200 Subject: [PATCH 12/46] GH-304: Replace master/slave with main/forkedjvm. --- CHANGES.txt | 8 +- examples/ant/build.xml | 2 +- .../Test004MoreRandomness.java | 2 +- .../Test005RecoveringRandomSeed.java | 22 +- .../Test006RepeatingTests.java | 8 +- .../randomizedrunner/Test010Lingering.java | 2 +- junit4-ant/pom.xml | 4 +- .../ant/tasks/junit4/DiagnosticsListener.java | 8 +- .../{SlaveIdle.java => ForkedJvmIdle.java} | 8 +- .../ant/tasks/junit4/ForkedJvmInfo.java | 34 +- .../carrotsearch/ant/tasks/junit4/JUnit4.java | 418 ++++----- ....java => LocalForkedJvmStreamHandler.java} | 7 +- .../ant/tasks/junit4/PickSeedTask.java | 2 +- .../ant/tasks/junit4/SuiteBalancer.java | 14 +- .../balancers/ExecutionTimeBalancer.java | 40 +- .../junit4/balancers/RoundRobinBalancer.java | 4 +- .../tasks/junit4/events/BootstrapEvent.java | 6 +- .../ant/tasks/junit4/events/EventType.java | 2 +- .../ant/tasks/junit4/events/IEvent.java | 2 +- .../ant/tasks/junit4/events/IdleEvent.java | 2 +- .../ant/tasks/junit4/events/QuitEvent.java | 2 +- .../ant/tasks/junit4/events/Serializer.java | 24 +- .../aggregated/AggregatedQuitEvent.java | 2 +- .../aggregated/AggregatedResultEvent.java | 2 +- .../aggregated/AggregatedStartEvent.java | 14 +- .../AggregatedSuiteResultEvent.java | 16 +- .../AggregatedSuiteStartedEvent.java | 8 +- .../aggregated/AggregatedTestResultEvent.java | 12 +- .../aggregated/AggregatingListener.java | 16 +- .../events/aggregated/ChildBootstrap.java | 2 +- .../events/aggregated/HeartBeatEvent.java | 10 +- .../events/aggregated/JvmOutputEvent.java | 2 +- .../events/aggregated/PartialOutputEvent.java | 12 +- .../BeforeAfterRunListenerDecorator.java | 2 +- .../{slave => forked}/EventsOutputStream.java | 2 +- .../SlaveMain.java => forked/ForkedMain.java} | 20 +- .../ForkedMainSafe.java} | 12 +- .../junit4/{slave => forked}/JvmExit.java | 2 +- .../NoExceptionRunListenerDecorator.java | 2 +- .../junit4/{slave => forked}/NullWriter.java | 2 +- .../{slave => forked}/OrderedRunNotifier.java | 2 +- .../{slave => forked}/RunListenerEmitter.java | 2 +- .../{slave => forked}/StdInLineIterator.java | 2 +- .../StreamFlusherDecorator.java | 2 +- .../junit4/listeners/StackTraceFilter.java | 2 +- .../tasks/junit4/listeners/TextReport.java | 18 +- .../junit4/listeners/antxml/AntXmlReport.java | 4 +- .../junit4/listeners/json/JsonReport.java | 8 +- .../tasks/junit4/templates/json/css/style.css | 2 +- .../ant/tasks/junit4/templates/json/ideas.txt | 9 +- .../tasks/junit4/templates/json/js/script.js | 16 +- .../tasks/junit4/templates/json/report.json | 643 ++++++++++++++ .../junit4/templates/json/tests-output.jsonp | 802 +++++++++--------- junit4-ant/src/tasks/Tasks/junit4.html | 16 +- .../tasks/junit4/TestEventBusSanityCheck.java | 16 +- .../junit4/it/TestCrashesAndExceptions.java | 4 +- .../junit4/it/TestShutdownHookDeadlock.java | 2 +- .../ant/tasks/junit4/it/TestTextReport.java | 4 +- ...ava => TestUnhandledForkedJvmFailure.java} | 6 +- .../tests/FireUnhandledRunnerException.java | 4 +- ...=> ForkedJvmHangingBackgroundThreads.java} | 2 +- junit4-ant/src/test/resources/junit4.xml | 21 +- .../maven/plugins/junit4/JUnit4Mojo.java | 25 +- .../randomizedtesting/MixWithSuiteName.java | 2 +- .../randomizedtesting/RandomizedContext.java | 2 +- .../randomizedtesting/RandomizedRunner.java | 10 +- .../annotations/SeedDecorators.java | 6 +- .../randomizedtesting/TestContextRandom.java | 2 +- .../randomizedtesting/TestSeedDecorator.java | 10 +- .../WithNestedTestClass.java | 4 +- 70 files changed, 1517 insertions(+), 890 deletions(-) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{SlaveIdle.java => ForkedJvmIdle.java} (76%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{LocalSlaveStreamHandler.java => LocalForkedJvmStreamHandler.java} (97%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave => forked}/BeforeAfterRunListenerDecorator.java (97%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave => forked}/EventsOutputStream.java (93%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave/SlaveMain.java => forked/ForkedMain.java} (96%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave/SlaveMainSafe.java => forked/ForkedMainSafe.java} (74%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave => forked}/JvmExit.java (91%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave => forked}/NoExceptionRunListenerDecorator.java (97%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave => forked}/NullWriter.java (81%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave => forked}/OrderedRunNotifier.java (99%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave => forked}/RunListenerEmitter.java (98%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave => forked}/StdInLineIterator.java (94%) rename junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/{slave => forked}/StreamFlusherDecorator.java (91%) create mode 100644 junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/report.json rename junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/{TestUnhandledSlaveFailure.java => TestUnhandledForkedJvmFailure.java} (54%) rename junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/{SlaveHangingBackgroundThreads.java => ForkedJvmHangingBackgroundThreads.java} (93%) diff --git a/CHANGES.txt b/CHANGES.txt index 97890178..099fd707 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,7 +5,11 @@ RandomizedTesting, Change Log For an up-to-date CHANGES file see https://github.com/randomizedtesting/randomizedtesting/blob/master/CHANGES -======================= randomizedtesting 2.7.10-SNAPSHOT ==================== +======================= randomizedtesting 2.8.0-SNAPSHOT ==================== + +Other: + + * GH-304: Replace master/slave with main/forkedjvm terminology. ======================= randomizedtesting 2.7.9 ==================== @@ -367,7 +371,7 @@ Changes in Backwards Compatibility New Features - * GH-191: "Tests with failures" should repeat the master seed at the end + * GH-191: "Tests with failures" should repeat the main seed at the end of the report. (Dawid Weiss) Bug Fixes diff --git a/examples/ant/build.xml b/examples/ant/build.xml index 93a12a9b..47e55ffc 100644 --- a/examples/ant/build.xml +++ b/examples/ant/build.xml @@ -60,7 +60,7 @@ - + diff --git a/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test004MoreRandomness.java b/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test004MoreRandomness.java index ee4a4b60..8e35bb8f 100644 --- a/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test004MoreRandomness.java +++ b/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test004MoreRandomness.java @@ -27,7 +27,7 @@ * under a single suite class for simplicity). Every execution of class * {@link Test004MoreRandomness.OrderRandomized} will be different, shuffling * test methods around (and the random numbers written to the output). - * We can "pin" the execution order by forcing the master random + * We can "pin" the execution order by forcing the main random * seed using {@link Seed} annotation on the class (or a system property * {@link SysGlobals#SYSPROP_RANDOM_SEED}). Doing so also fixes all derivative random * generators in all tests - this is shown in diff --git a/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test005RecoveringRandomSeed.java b/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test005RecoveringRandomSeed.java index f28a2b1b..a67a7fe3 100644 --- a/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test005RecoveringRandomSeed.java +++ b/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test005RecoveringRandomSeed.java @@ -11,20 +11,20 @@ /** * {@link RandomizedRunner} uses several "contexts", each of which is assigned a * predictable {@link Random} and is modeled using a {@link Randomness} - * instance. The "suite" or "master" context is available from + * instance. The "suite" or "main" context is available from * {@link BeforeClass} or {@link AfterClass} hooks, for example. Each test - * method has a nested context with a random seed derived from the master. This + * method has a nested context with a random seed derived from the main seed. This * way even though the order of tests is shuffled and each test can make a * random number of calls to its own context's {@link Random} instance, the - * global execution paths can always be repeated from the same master seed. The - * question is: how do we know what master seed was used? There are at least two + * global execution paths can always be repeated from the same main seed. The + * question is: how do we know what main seed was used? There are at least two * ways to find out. * - *

The master seed is always available from + *

The main seed is always available from * {@link RandomizedContext#getRunnerSeedAsString()} so one can simply print it to the * console. The current context's {@link Randomness} itself can be printed to the - * console. In two methods in this class {@link #printMasterContext()} and {@link #printContext()} - * we print the master seed and current context's {@link Randomness}, note how the static + * console. In two methods in this class {@link #printMainContext()} and {@link #printContext()} + * we print the main seed and current context's {@link Randomness}, note how the static * context's {@link Randomness} is identical with the runner's but the test context * is a derived value. *

@@ -51,9 +51,9 @@
  * 
* * The first line of the stack trace is a synthetic (non-existing) class with "source file" - * entry containing all contexts' seeds on the stack (from master to the current test method). - * In this case, you can see the master context first (AF567B2B9F8A8F1C), followed - * by the test's context (44E2D1A039274F2A). The entire class has a fixed master seed + * entry containing all contexts' seeds on the stack (from main to the current test method). + * In this case, you can see the main context first (AF567B2B9F8A8F1C), followed + * by the test's context (44E2D1A039274F2A). The entire class has a fixed main seed * so that the result will always be the same here: *
  * {@literal @}{@link Seed}("AF567B2B9F8A8F1C")
@@ -63,7 +63,7 @@
 @Seed("AF567B2B9F8A8F1C")
 public class Test005RecoveringRandomSeed extends RandomizedTest {
   @BeforeClass
-  public static void printMasterContext() {
+  public static void printMainContext() {
     System.out.println("# Static context (@BeforeClass)");
     System.out.println(getContext().getRunnerSeedAsString());
     System.out.println(RandomizedContext.current().getRandomness());
diff --git a/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test006RepeatingTests.java b/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test006RepeatingTests.java
index dc93be2a..f86e78cb 100644
--- a/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test006RepeatingTests.java
+++ b/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test006RepeatingTests.java
@@ -10,7 +10,7 @@
 
 /**
  * In example {@link Test005RecoveringRandomSeed} we presented
- * {@link Randomness} contexts and how they are derived from a master seed. Once
+ * {@link Randomness} contexts and how they are derived from a main seed. Once
  * you know a certain test case fails it is usually beneficial to immediately
  * check if it always fails on a given seed (which means there is a
  * deterministic failure scenario). A simple way to do so would be to re-run a
@@ -25,10 +25,10 @@
  * public void repeatFailure() { //...
  * 
* Note how the seed is fixed using {@link Seed} annotation (on the - * method) rather than on the master. This ensures the method's context is - * pinned to that value, but the master is still random. If you have + * method) rather than on the class. This ensures the method's context is + * pinned to that value, but the main seed is still random. If you have * {@link BeforeClass} hooks that depend on randomness you should use - * suite-level {@link Seed} annotation and pin the master seed instead. + * suite-level {@link Seed} annotation and pin the main seed instead. * *

You can also set {@link Repeat#useConstantSeed()} to false and * then every iteration of the test method will have a pseudo-random context derived diff --git a/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test010Lingering.java b/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test010Lingering.java index eb9a80dd..16e71489 100644 --- a/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test010Lingering.java +++ b/examples/maven/src/main/java/com/carrotsearch/examples/randomizedrunner/Test010Lingering.java @@ -30,7 +30,7 @@ * *

The same annotation can be used to wait for background threads * which we don't have any control on, but we know they will eventually terminate. - * For example, a terminated {@link Executor} does not wait (join) with its slave + * For example, a terminated {@link Executor} does not wait (join) with its forked * threads so lingering here is required. This is shown in method {@link #executorLeak()}. This * method will fail (from time to time, it isn't guaranteed) if no lingering time is given. * diff --git a/junit4-ant/pom.xml b/junit4-ant/pom.xml index 3484bdf8..5e6732c2 100644 --- a/junit4-ant/pom.xml +++ b/junit4-ant/pom.xml @@ -158,8 +158,8 @@ com.carrotsearch.ant.tasks.junit4.events* -

${project.name} v${project.version}
API Documentation]]>
- com.carrotsearch.ant.tasks.junit4.slave +
${project.name} v${project.version}
API Documentation]]>
+ com.carrotsearch.ant.tasks.junit4.forked diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/DiagnosticsListener.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/DiagnosticsListener.java index 37cda0ee..ad86391d 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/DiagnosticsListener.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/DiagnosticsListener.java @@ -9,19 +9,19 @@ import com.google.common.eventbus.Subscribe; public class DiagnosticsListener { - private final ForkedJvmInfo slave; + private final ForkedJvmInfo forkedJvmInfo; private boolean quitReceived; private Task task; - public DiagnosticsListener(ForkedJvmInfo slave, JUnit4 task) { + public DiagnosticsListener(ForkedJvmInfo forkedJvmInfo, JUnit4 task) { this.task = task; - this.slave = slave; + this.forkedJvmInfo = forkedJvmInfo; } @Subscribe public void receiveAll(IEvent e) { - task.log("Packet received, slave#" + slave.id + ">" + e.getType(), Project.MSG_DEBUG); + task.log("Packet received, forkedJvm#" + forkedJvmInfo.id + ">" + e.getType(), Project.MSG_DEBUG); } @Subscribe diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/SlaveIdle.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/ForkedJvmIdle.java similarity index 76% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/SlaveIdle.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/ForkedJvmIdle.java index 9fa61bca..33040d2d 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/SlaveIdle.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/ForkedJvmIdle.java @@ -4,16 +4,16 @@ import java.io.OutputStreamWriter; /** - * An event published when a slave is idle and waits for new suite classes. + * An event published when a forked JVM is idle and waits for new suite classes. */ -class SlaveIdle { +class ForkedJvmIdle { private OutputStreamWriter stdin; /** For delegation. */ - SlaveIdle() { + ForkedJvmIdle() { } - public SlaveIdle(OutputStreamWriter stdin) { + public ForkedJvmIdle(OutputStreamWriter stdin) { this.stdin = stdin; } diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/ForkedJvmInfo.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/ForkedJvmInfo.java index 09156616..770f9389 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/ForkedJvmInfo.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/ForkedJvmInfo.java @@ -15,18 +15,18 @@ import com.carrotsearch.randomizedtesting.WriterOutputStream; /** - * Static slave information. + * Static forked JVM information. */ public final class ForkedJvmInfo { /** - * Unique sequential slave identifier. + * Unique sequential identifier. */ public final int id; /** - * The number of executed slaves, total. + * The number of executed forked JVMs, total. */ - public final int slaves; + public final int forkedJvmCount; /** * Bootstrap event. @@ -39,28 +39,28 @@ public final class ForkedJvmInfo { long start, end; /** - * Execute these test suites on this slave. + * Execute these test suites on this forked JVM. */ ArrayList testSuites; /** - * Complete slave command line invocation string. + * Complete command line invocation string. */ - String slaveCommandLine; + String forkedCommandLine; /** - * Execution error if anything bad happened on the slave. + * Execution error if anything bad happened. */ Throwable executionError; /* */ - public ForkedJvmInfo(int id, int slaves) { + public ForkedJvmInfo(int id, int forkedJvmCount) { this.id = id; - this.slaves = slaves; + this.forkedJvmCount = forkedJvmCount; } /** - * Return the {@link Charset} used to encode stream bytes from the slave. + * Return the {@link Charset} used to encode stream bytes from the forked JVM. */ public Charset getCharset() { if (bootstrapEvent != null) { @@ -71,7 +71,7 @@ public Charset getCharset() { } /** - * System properties on the slave. + * System properties on the forked JVM. */ public Map getSystemProperties() { if (bootstrapEvent == null) { @@ -95,14 +95,14 @@ public String getPidString() { } /** - * Command line string used to invoke the slave. + * Command line string used to invoke the forked JVM */ public String getCommandLine() { - return slaveCommandLine; + return forkedCommandLine; } /** - * JVM name (slave). + * JVM name. */ public String getJvmName() { return getSystemProperties().get("java.vm.name") + ", " + @@ -110,14 +110,14 @@ public String getJvmName() { } /** - * Slave execution time. + * Forked JVM execution time. */ long getExecutionTime() { return end - start; } /** - * Set the bootstrap event associated with this slave. + * Set the bootstrap event associated with this forked JVM. */ void setBootstrapEvent(BootstrapEvent e) { this.bootstrapEvent = e; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/JUnit4.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/JUnit4.java index 0fd460cb..0cc947f2 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/JUnit4.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/JUnit4.java @@ -43,6 +43,8 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; +import com.carrotsearch.ant.tasks.junit4.forked.ForkedMain; +import com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe; import com.carrotsearch.ant.tasks.junit4.runlisteners.RunListenerClass; import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; @@ -79,8 +81,6 @@ import com.carrotsearch.ant.tasks.junit4.events.aggregated.ChildBootstrap; import com.carrotsearch.ant.tasks.junit4.events.aggregated.JvmOutputEvent; import com.carrotsearch.ant.tasks.junit4.listeners.AggregatedEventListener; -import com.carrotsearch.ant.tasks.junit4.slave.SlaveMain; -import com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe; import com.carrotsearch.randomizedtesting.ClassGlobFilter; import com.carrotsearch.randomizedtesting.FilterExpressionParser; import com.carrotsearch.randomizedtesting.FilterExpressionParser.Node; @@ -105,7 +105,7 @@ /** * An ANT task to run JUnit4 tests. Differences (benefits?) compared to ANT's default JUnit task: *
    - *
  • Built-in parallel test execution support (spawns multiple JVMs to avoid + *
  • Built-in parallel test execution support (spawns multiple JVMs to avoid * test interactions).
  • *
  • Randomization of the order of test suites within a single JVM.
  • *
  • Aggregates and synchronizes test events from executors. All reports run on @@ -114,7 +114,7 @@ * Report listeners use Google Guava's {@link EventBus} and receive full information * about tests' execution (including skipped, assumption-skipped tests, streamlined * output and error stream chunks, etc.).
  • - *
  • JUnit 4.10+ is required both for the task and for the tests classpath. + *
  • JUnit 4.10+ is required both for the task and for the tests classpath. * Older versions will cause build failure.
  • *
  • Integration with {@link RandomizedRunner} (randomization seed is passed to * children JVMs).
  • @@ -157,8 +157,8 @@ public class JUnit4 extends Task { /** @see #setParallelism(String) */ public static final String PARALLELISM_MAX = "max"; - /** Default value of {@link #setShuffleOnSlave}. */ - public static final boolean DEFAULT_SHUFFLE_ON_SLAVE = true; + /** Default value of {@link #setShuffleOnForkedJvm(boolean)}. */ + public static final boolean DEFAULT_SHUFFLE_ON_FORKED_JVM = true; /** Default value of {@link #setParallelism}. */ public static final String DEFAULT_PARALLELISM = "1"; @@ -168,7 +168,7 @@ public class JUnit4 extends Task { /** Default value of {@link #setHaltOnFailure}. */ public static final boolean DEFAULT_HALT_ON_FAILURE = true; - + /** Default value of {@link #setIsolateWorkingDirectories(boolean)}. */ public static final boolean DEFAULT_ISOLATE_WORKING_DIRECTORIES = true; @@ -180,7 +180,7 @@ public class JUnit4 extends Task { /** Default value of {@link #setSysouts}. */ public static final boolean DEFAULT_SYSOUTS = false; - + /** Default value of {@link #setDebugStream}. */ public static final boolean DEFAULT_DEBUGSTREAM = false; @@ -222,17 +222,17 @@ public static enum NoTestsAction { /** * @see #setSysouts */ - private boolean sysouts = DEFAULT_SYSOUTS; + private boolean sysouts = DEFAULT_SYSOUTS; /** * @see #setDebugStream */ - private boolean debugStream = DEFAULT_DEBUGSTREAM; + private boolean debugStream = DEFAULT_DEBUGSTREAM; /** - * Slave VM command line. + * Forked JVM command line. */ - private CommandlineJava slaveCommand = new CommandlineJava(); + private CommandlineJava forkedJvmCommandLine = new CommandlineJava(); /** * Set new environment for the forked process? @@ -243,12 +243,12 @@ public static enum NoTestsAction { * @see #setUniqueSuiteNames */ private boolean uniqueSuiteNames = DEFAULT_UNIQUE_SUITE_NAME; - + /** * Environment variables to use in the forked JVM. */ private Environment env = new Environment(); - + /** * Directory to invoke forked VMs in. */ @@ -273,9 +273,9 @@ public static enum NoTestsAction { * Property to set if there were test failures or errors. */ private String failureProperty; - + /** - * A folder to store temporary files in. Defaults to {@link #dir} or + * A folder to store temporary files in. Defaults to {@link #dir} or * the project's basedir. */ private Path tempDir; @@ -297,7 +297,7 @@ public static enum NoTestsAction { /** * Class loader used to resolve annotations and classes referenced from annotations - * when {@link Description}s containing them are passed from slaves. + * when {@link Description}s containing them are passed from forked JVMs. */ private AntClassLoader testsClassLoader; @@ -344,44 +344,44 @@ public static enum NoTestsAction { private float dynamicAssignmentRatio = DEFAULT_DYNAMIC_ASSIGNMENT_RATIO; /** - * @see #setShuffleOnSlave(boolean) + * @see #setShuffleOnForkedJvm(boolean) */ - private boolean shuffleOnSlave = DEFAULT_SHUFFLE_ON_SLAVE; + private boolean shuffleOnForkedJvm = DEFAULT_SHUFFLE_ON_FORKED_JVM; /** * @see #setHeartbeat */ - private long heartbeat; - + private long heartbeat; + /** * @see #setIfNoTests */ private NoTestsAction ifNoTests = NoTestsAction.IGNORE; - + /** * @see #setStatsPropertyPrefix */ private String statsPropertyPrefix; - + /** - * + * */ public JUnit4() { resources = new Resources(); } /** - * What should be done on unexpected JVM output? JVM may write directly to the + * What should be done on unexpected JVM output? JVM may write directly to the * original descriptors, bypassing redirections of System.out and System.err. Typically, * these messages will be important and should fail the build (permgen space exceeded, * compiler errors, crash dumps). However, certain legitimate logs (gc activity, class loading * logs) are also printed to these streams so sometimes the output can be ignored. - * - *

    Allowed values (any comma-delimited combination of): {@link JvmOutputAction} + * + *

    Allowed values (any comma-delimited combination of): {@link JvmOutputAction} * constants. */ public void setJvmOutputAction(String jvmOutputActions) { - EnumSet actions = EnumSet.noneOf(JvmOutputAction.class); + EnumSet actions = EnumSet.noneOf(JvmOutputAction.class); for (String s : jvmOutputActions.split("[\\,\\ ]+")) { s = s.trim().toUpperCase(Locale.ROOT); actions.add(JvmOutputAction.valueOf(s)); @@ -393,13 +393,13 @@ public void setJvmOutputAction(String jvmOutputActions) { * If set to true, any sysout and syserr calls will be written to original * output and error streams (and in effect will appear as "jvm output". By default * sysout and syserrs are captured and proxied to the event stream to be synchronized - * with other test events but occasionally one may want to synchronize them with direct - * JVM output (to synchronize with compiler output or GC output for example). + * with other test events but occasionally one may want to synchronize them with direct + * JVM output (to synchronize with compiler output or GC output for example). */ public void setSysouts(boolean sysouts) { this.sysouts = sysouts; } - + /** * Enables a debug stream from each forked JVM. This will create an additional file * next to each events file. For debugging the framework only, not a general-purpose setting. @@ -407,7 +407,7 @@ public void setSysouts(boolean sysouts) { public void setDebugStream(boolean debugStream) { this.debugStream = debugStream; } - + /** * Allow or disallow duplicate suite names in resource collections. By default this option * is true because certain ANT-compatible report types (like XML reports) @@ -416,7 +416,7 @@ public void setDebugStream(boolean debugStream) { public void setUniqueSuiteNames(boolean uniqueSuiteNames) { this.uniqueSuiteNames = uniqueSuiteNames; } - + /** * @see #setUniqueSuiteNames(boolean) */ @@ -426,17 +426,17 @@ public boolean isUniqueSuiteNames() { /** * Specifies the ratio of suites moved to dynamic assignment list. A dynamic - * assignment list dispatches suites to the first idle slave JVM. Theoretically + * assignment list dispatches suites to the first idle forked JVM. Theoretically * this is an optimal strategy, but it is usually better to have some static assignments * to avoid communication costs. - * + * *

    A ratio of 0 means only static assignments are used. A ratio of 1 means * only dynamic assignments are used. - * + * *

    The list of dynamic assignments is sorted by decreasing cost (always) and * is inherently prone to race conditions in distributing suites. Should there * be an error based on suite-dependency it will not be directly repeatable. In such - * case use the per-slave-jvm list of suites file dumped to disk for each slave JVM. + * case use the per-forked-jvm list of suites file dumped to disk for each forked JVM. * (see {@link #setLeaveTemporary(boolean)}). */ public void setDynamicAssignmentRatio(float ratio) { @@ -448,13 +448,13 @@ public void setDynamicAssignmentRatio(float ratio) { } /** - * The number of parallel slaves. Can be set to a constant "max" for the - * number of cores returned from {@link Runtime#availableProcessors()} or + * The number of parallel forked JVMs. Can be set to a constant "max" for the + * number of cores returned from {@link Runtime#availableProcessors()} or * "auto" for sensible defaults depending on the number of cores. * The default is a single subprocess. - * - *

    Note that this setting forks physical JVM processes so it multiplies the - * requirements for heap memory, IO, etc. + * + *

    Note that this setting forks physical JVM processes so it multiplies the + * requirements for heap memory, IO, etc. */ public void setParallelism(String parallelism) { this.parallelism = parallelism; @@ -466,18 +466,18 @@ public void setParallelism(String parallelism) { public void setFailureProperty(String failureProperty) { this.failureProperty = failureProperty; } - + /** * Do not propagate the old environment when new environment variables are specified. */ public void setNewEnvironment(boolean v) { this.newEnvironment = v; } - + /** * Initial random seed used for shuffling test suites and other sources - * of pseudo-randomness. If not set, any random value is set. - * + * of pseudo-randomness. If not set, any random value is set. + * *

    The seed's format is compatible with {@link RandomizedRunner} so that * seed can be fixed for suites and methods alike. */ @@ -505,23 +505,35 @@ public void setPrefix(String prefix) { } /** - * @see #setSeed(String) + * @see #setSeed(String) */ public String getSeed() { return random; - } + } /** * Predictably shuffle tests order after balancing. This will help in spreading - * lighter and heavier tests over a single slave's execution timeline while - * still keeping the same tests order depending on the seed. - */ + * lighter and heavier tests over a single forked JVM execution timeline while + * still keeping the same tests order depending on the seed. + * + * @deprecated Use {@link #setShuffleOnForkedJvm(boolean)} + */ + @Deprecated() public void setShuffleOnSlave(boolean shuffle) { - this.shuffleOnSlave = shuffle; + setShuffleOnForkedJvm(shuffle); + } + + /** + * Predictably shuffle tests order after balancing. This will help in spreading + * lighter and heavier tests over a single forked JVM execution timeline while + * still keeping the same tests order depending on the seed. + */ + public void setShuffleOnForkedJvm(boolean shuffle) { + this.shuffleOnForkedJvm = shuffle; } /* - * + * */ @Override public void setProject(Project project) { @@ -531,9 +543,9 @@ public void setProject(Project project) { this.classpath = new org.apache.tools.ant.types.Path(getProject()); this.bootclasspath = new org.apache.tools.ant.types.Path(getProject()); } - + /** - * Prints the summary of all executed, ignored etc. tests at the end. + * Prints the summary of all executed, ignored etc. tests at the end. */ public void setPrintSummary(boolean printSummary) { this.printSummary = printSummary; @@ -548,7 +560,7 @@ public void setHaltOnFailure(boolean haltOnFailure) { /** * Set the maximum memory to be used by all forked JVMs. - * + * * @param max * the value as defined by -mx or -Xmx in the java * command line options. @@ -565,7 +577,7 @@ public void setMaxmemory(String max) { public void setLeaveTemporary(boolean leaveTemporary) { this.leaveTemporary = leaveTemporary; } - + /** * Add an additional argument to any forked JVM. */ @@ -602,7 +614,7 @@ public void setIfNoTests(String value) { /** * A {@link org.apache.tools.ant.types.Environment.Variable} with an additional - * attribute specifying whether or not empty values should be propagated or ignored. + * attribute specifying whether or not empty values should be propagated or ignored. */ public static class ExtendedVariable extends Environment.Variable { private boolean ignoreEmptyValue = false; @@ -620,7 +632,7 @@ public String toString() { return getContent() + " (ignoreEmpty=" + ignoreEmptyValue + ")"; } } - + /** * Adds a system property to any forked JVM. */ @@ -629,7 +641,7 @@ public void addConfiguredSysproperty(ExtendedVariable sysp) { getCommandline().addSysproperty(sysp); } } - + /** * A {@link PropertySet} with an additional * attribute specifying whether or not empty values should be propagated or ignored. @@ -660,13 +672,13 @@ public Properties getProperties() { /** * Adds a set of properties that will be used as system properties that tests * can access. - * + * * This might be useful to transfer Ant properties to the testcases. */ public void addConfiguredSyspropertyset(ExtendedPropertySet sysp) { getCommandline().addSyspropertyset(sysp); } - + /** * The command used to invoke the Java Virtual Machine, default is 'java'. The * command is resolved by java.lang.Runtime.exec(). @@ -678,9 +690,9 @@ public void setJvm(String jvm) { } /** - * If set to true each slave JVM gets a separate working directory - * under whatever is set in {@link #setDir(File)}. The directory naming for each slave - * follows: "Snum", where num is slave's number. Directories are created + * If set to true each forked JVM gets a separate working directory + * under whatever is set in {@link #setDir(File)}. The directory naming for each forked JVM + * follows: "Snum", where num is forked JVM number. Directories are created * automatically and removed unless {@link #setLeaveTemporary(boolean)} is set to * true. */ @@ -724,7 +736,7 @@ public void addFileSet(FileSet fs) { */ public void add(ResourceCollection rc) { resources.add(rc); - } + } /** * Creates a new list of listeners. @@ -759,7 +771,7 @@ public BalancersList createBalancers() { /** * Adds path to classpath used for tests. - * + * * @return reference to the classpath in the embedded java command line */ public org.apache.tools.ant.types.Path createClasspath() { @@ -768,13 +780,13 @@ public org.apache.tools.ant.types.Path createClasspath() { /** * Adds a path to the bootclasspath. - * + * * @return reference to the bootclasspath in the embedded java command line */ public org.apache.tools.ant.types.Path createBootclasspath() { return bootclasspath.createPath(); } - + /* ANT-junit compat only. */ public void setFork(boolean fork) { warnUnsupported("fork"); @@ -783,7 +795,7 @@ public void setFork(boolean fork) { public void setForkmode(String forkMode) { warnUnsupported("forkmode"); } - + public void setHaltOnError(boolean haltOnError) { warnUnsupported("haltonerror"); } @@ -812,7 +824,7 @@ public void setOutputtoformatters(String v) { public void setReloading(String v) { warnUnsupported("reloading"); } - + public void setClonevm(String v) { warnUnsupported("clonevm"); } @@ -824,7 +836,7 @@ public void setErrorproperty(String v) { public void setLogfailedtests(String v) { warnUnsupported("logfailedtests"); } - + public void setEnableTestListenerEvents(String v) { warnUnsupported("enableTestListenerEvents"); } @@ -853,7 +865,7 @@ private void warnUnsupported(String attName) { * number of seconds. The heartbeat detects * no-event intervals and will report them to listeners. Notably, text report report will * emit heartbeat information (to a file or console). - * + * *

    Setting the heartbeat to zero means no detection. */ public void setHeartbeat(long heartbeat) { @@ -866,7 +878,7 @@ public void setHeartbeat(long heartbeat) { public void setStatsPropertyPrefix(String statsPropertyPrefix) { this.statsPropertyPrefix = statsPropertyPrefix; } - + @Override public void execute() throws BuildException { validateJUnit4(); @@ -874,16 +886,16 @@ public void execute() throws BuildException { // Initialize random if not already provided. if (random == null) { - this.random = MoreObjects.firstNonNull( + this.random = MoreObjects.firstNonNull( Strings.emptyToNull(getProject().getProperty(SYSPROP_RANDOM_SEED())), SeedUtils.formatSeed(new Random().nextLong())); } - masterSeed(); + mainSeed(); // Say hello and continue. log(" says " + - RandomPicks.randomFrom(new Random(masterSeed()), WELCOME_MESSAGES) + - " Master seed: " + getSeed(), Project.MSG_INFO); + RandomPicks.randomFrom(new Random(mainSeed()), WELCOME_MESSAGES) + + " Main seed: " + getSeed(), Project.MSG_INFO); // Pass the random seed property. createJvmarg().setValue("-D" + SYSPROP_PREFIX() + "=" + CURRENT_PREFIX()); @@ -917,13 +929,13 @@ public void execute() throws BuildException { } // Process test classes and resources. - long start = System.currentTimeMillis(); + long start = System.currentTimeMillis(); final TestsCollection testCollection = processTestResources(); final EventBus aggregatedBus = new EventBus("aggregated"); final TestsSummaryEventListener summaryListener = new TestsSummaryEventListener(); aggregatedBus.register(summaryListener); - + for (Object o : listeners) { if (o instanceof ProjectComponent) { ((ProjectComponent) o).setProject(getProject()); @@ -946,30 +958,30 @@ public void execute() throws BuildException { } final int jvmCount = determineForkedJvmCount(testCollection); - final List slaveInfos = new ArrayList<>(); + final List forkedJvmInfos = new ArrayList<>(); for (int jvmid = 0; jvmid < jvmCount; jvmid++) { - final ForkedJvmInfo slaveInfo = new ForkedJvmInfo(jvmid, jvmCount); - slaveInfos.add(slaveInfo); + final ForkedJvmInfo forkedJvmInfo = new ForkedJvmInfo(jvmid, jvmCount); + forkedJvmInfos.add(forkedJvmInfo); } - + if (jvmCount > 1 && uniqueSuiteNames && testCollection.hasReplicatedSuites()) { throw new BuildException(String.format(Locale.ROOT, "There are test suites that request JVM replication and the number of forked JVMs %d is larger than 1. Run on a single JVM.", jvmCount)); } - // Prepare a pool of suites dynamically dispatched to slaves as they become idle. - final Deque stealingQueue = - new ArrayDeque(loadBalanceSuites(slaveInfos, testCollection, balancers)); + // Prepare a pool of suites dynamically dispatched to forked JVMs as they become idle. + final Deque stealingQueue = + new ArrayDeque(loadBalanceSuites(forkedJvmInfos, testCollection, balancers)); aggregatedBus.register(new Object() { @Subscribe - public void onSlaveIdle(SlaveIdle slave) { + public void onForkedJvmIdle(ForkedJvmIdle forkedJvmIdle) { if (stealingQueue.isEmpty()) { - slave.finished(); + forkedJvmIdle.finished(); } else { String suiteName = stealingQueue.pop(); - slave.newSuite(suiteName); + forkedJvmIdle.newSuite(suiteName); } } }); @@ -988,68 +1000,68 @@ public void onSlaveIdle(SlaveIdle slave) { } // Create callables for the executor. - final List> slaves = new ArrayList<>(); - for (int slave = 0; slave < jvmCount; slave++) { - final ForkedJvmInfo slaveInfo = slaveInfos.get(slave); - slaves.add(new Callable() { + final List> forkedJvms = new ArrayList<>(); + for (int forked = 0; forked < jvmCount; forked++) { + final ForkedJvmInfo forkedJvmInfo = forkedJvmInfos.get(forked); + forkedJvms.add(new Callable() { @Override public Void call() throws Exception { - executeSlave(slaveInfo, aggregatedBus); + forkJvm(forkedJvmInfo, aggregatedBus); return null; } }); } ExecutorService executor = Executors.newCachedThreadPool(); - aggregatedBus.post(new AggregatedStartEvent(slaves.size(), + aggregatedBus.post(new AggregatedStartEvent(forkedJvms.size(), // TODO: this doesn't account for replicated suites. testCollection.testClasses.size())); try { - List> all = executor.invokeAll(slaves); + List> all = executor.invokeAll(forkedJvms); executor.shutdown(); - for (int i = 0; i < slaves.size(); i++) { + for (int i = 0; i < forkedJvms.size(); i++) { Future f = all.get(i); try { f.get(); } catch (ExecutionException e) { - slaveInfos.get(i).executionError = e.getCause(); + forkedJvmInfos.get(i).executionError = e.getCause(); } } } catch (InterruptedException e) { - log("Master interrupted? Weird.", Project.MSG_ERR); + log("Main JVM interrupted? Weird.", Project.MSG_ERR); } aggregatedBus.post(new AggregatedQuitEvent()); - for (ForkedJvmInfo si : slaveInfos) { + for (ForkedJvmInfo si : forkedJvmInfos) { if (si.start > 0 && si.end > 0) { log(String.format(Locale.ROOT, "JVM J%d: %8.2f .. %8.2f = %8.2fs", si.id, (si.start - start) / 1000.0f, (si.end - start) / 1000.0f, - (si.getExecutionTime() / 1000.0f)), + (si.getExecutionTime() / 1000.0f)), Project.MSG_INFO); } } log("Execution time total: " + Duration.toHumanDuration( (System.currentTimeMillis() - start))); - ForkedJvmInfo slaveInError = null; - for (ForkedJvmInfo i : slaveInfos) { + ForkedJvmInfo jvmInError = null; + for (ForkedJvmInfo i : forkedJvmInfos) { if (i.executionError != null) { log("ERROR: JVM J" + i.id + " ended with an exception, command line: " + i.getCommandLine()); - log("ERROR: JVM J" + i.id + " ended with an exception: " + + log("ERROR: JVM J" + i.id + " ended with an exception: " + Throwables.getStackTraceAsString(i.executionError), Project.MSG_ERR); - if (slaveInError == null) { - slaveInError = i; + if (jvmInError == null) { + jvmInError = i; } } } - if (slaveInError != null) { - throw new BuildException("At least one slave process threw an exception, first: " - + slaveInError.executionError.getMessage(), slaveInError.executionError); + if (jvmInError != null) { + throw new BuildException("At least one forked process threw an exception, first: " + + jvmInError.executionError.getMessage(), jvmInError.executionError); } } @@ -1060,7 +1072,7 @@ public Void call() throws Exception { if (!testsSummary.isSuccessful()) { if (!Strings.isNullOrEmpty(failureProperty)) { - getProject().setNewProperty(failureProperty, "true"); + getProject().setNewProperty(failureProperty, "true"); } if (haltOnFailure) { throw new BuildException(String.format(Locale.ROOT, @@ -1137,7 +1149,7 @@ private void validateArguments() throws BuildException { if (tempDir == null) { throw new BuildException("Temporary directory cannot be null."); } - + if (Files.exists(tempDir)) { if (!Files.isDirectory(tempDir)) { throw new BuildException("Temporary directory is not a folder: " + tempDir.toAbsolutePath()); @@ -1167,12 +1179,12 @@ private void validateJUnit4() throws BuildException { /** * Perform load balancing of the set of suites. Sets {@link ForkedJvmInfo#testSuites} - * to suites preassigned to a given slave and returns a pool of suites + * to suites preassigned to a given forked JVM and returns a pool of suites * that should be load-balanced dynamically based on job stealing. */ private List loadBalanceSuites(List jvmInfo, TestsCollection testsCollection, List balancers) { - + // Order test suites identically for balancers. // and split into replicated and non-replicated suites. Map> partitioned = sortAndSplitReplicated(testsCollection.testClasses); @@ -1196,7 +1208,7 @@ private List loadBalanceSuites(List jvmInfo, balancer.setOwner(this); final List assignments = balancer.assign( - Collections.unmodifiableCollection(remaining), jvmCount, masterSeed()); + Collections.unmodifiableCollection(remaining), jvmCount, mainSeed()); for (Assignment e : assignments) { if (e == null) { @@ -1208,12 +1220,12 @@ private List loadBalanceSuites(List jvmInfo, log(String.format(Locale.ROOT, "Assignment hint: J%-2d (cost %5d) %s (by %s)", - e.slaveId, + e.forkedJvmId, e.estimatedCost, e.suiteName, balancer.getClass().getSimpleName()), Project.MSG_VERBOSE); - perJvmAssignments.get(e.slaveId).add(e); + perJvmAssignments.get(e.forkedJvmId).add(e); } } @@ -1221,16 +1233,16 @@ private List loadBalanceSuites(List jvmInfo, throw new RuntimeException("Not all suites assigned?: " + remaining); } - if (shuffleOnSlave) { - // Shuffle suites on slaves so that the result is always the same wrt master seed + if (shuffleOnForkedJvm) { + // Shuffle suites on forked JVMs so that the result is always the same wrt main seed // (sort first, then shuffle with a constant seed). for (List assignments : perJvmAssignments.values()) { Collections.sort(assignments); - Collections.shuffle(assignments, new Random(this.masterSeed())); + Collections.shuffle(assignments, new Random(this.mainSeed())); } } - // Take a fraction of suites scheduled as last on each slave and move them to a common + // Take a fraction of suites scheduled as last on each forked JVM and move them to a common // job-stealing queue. List stealingQueueWithHints = new ArrayList<>(); for (ForkedJvmInfo si : jvmInfo) { @@ -1238,7 +1250,7 @@ private List loadBalanceSuites(List jvmInfo, int moveToCommon = (int) (assignments.size() * dynamicAssignmentRatio); if (moveToCommon > 0) { - final List movedToCommon = + final List movedToCommon = assignments.subList(assignments.size() - moveToCommon, assignments.size()); for (Assignment a : movedToCommon) { stealingQueueWithHints.add(new SuiteHint(a.suiteName, a.estimatedCost)); @@ -1246,9 +1258,9 @@ private List loadBalanceSuites(List jvmInfo, movedToCommon.clear(); } - final ArrayList slaveSuites = (si.testSuites = new ArrayList<>()); + final ArrayList forkedJvmSuites = (si.testSuites = new ArrayList<>()); for (Assignment a : assignments) { - slaveSuites.add(a.suiteName); + forkedJvmSuites.add(a.suiteName); } } @@ -1262,10 +1274,10 @@ private List loadBalanceSuites(List jvmInfo, for (String suite : replicated) { si.testSuites.add(suite); } - if (shuffleOnSlave) { - // Shuffle suites on slaves so that the result is always the same wrt master seed + if (shuffleOnForkedJvm) { + // Shuffle suites on forked JVMs so that the result is always the same wrt main seed // (sort first, then shuffle with a constant seed). - Collections.shuffle(si.testSuites, new Random(this.masterSeed())); + Collections.shuffle(si.testSuites, new Random(this.mainSeed())); } } } @@ -1318,9 +1330,9 @@ public int compare(TestClass t1, TestClass t2) { } /** - * Return the master seed of {@link #getSeed()}. + * Return the main seed of {@link #getSeed()}. */ - private long masterSeed() { + private long mainSeed() { long[] seeds = SeedUtils.parseSeedChain(getSeed()); if (seeds.length < 1) { throw new BuildException("Random seed is required."); @@ -1378,51 +1390,51 @@ private int determineForkedJvmCount(TestsCollection testCollection) { } /** - * Attach listeners and execute a slave process. + * Attach listeners and execute a forked JVM subprocess. */ - private void executeSlave(final ForkedJvmInfo slave, final EventBus aggregatedBus) + private void forkJvm(final ForkedJvmInfo forkedJvmInfo, final EventBus aggregatedBus) throws Exception { final String uniqueSeed = new SimpleDateFormat("yyyyMMdd_HHmmss_SSS", Locale.ROOT).format(new Date()); - final Path classNamesFile = tempFile(uniqueSeed, "junit4-J" + slave.id, ".suites", getTempDir()); + final Path classNamesFile = tempFile(uniqueSeed, "junit4-J" + forkedJvmInfo.id, ".suites", getTempDir()); temporaryFiles.add(classNamesFile); - final Path classNamesDynamic = tempFile(uniqueSeed, "junit4-J" + slave.id, ".dynamic-suites", getTempDir()); - final Path streamsBufferFile = tempFile(uniqueSeed, "junit4-J" + slave.id, ".spill", getTempDir()); + final Path classNamesDynamic = tempFile(uniqueSeed, "junit4-J" + forkedJvmInfo.id, ".dynamic-suites", getTempDir()); + final Path streamsBufferFile = tempFile(uniqueSeed, "junit4-J" + forkedJvmInfo.id, ".spill", getTempDir()); // Dump all test class names to a temporary file. - String testClassPerLine = Joiner.on("\n").join(slave.testSuites); + String testClassPerLine = Joiner.on("\n").join(forkedJvmInfo.testSuites); log("Test class names:\n" + testClassPerLine, Project.MSG_VERBOSE); Files.write(classNamesFile, testClassPerLine.getBytes(StandardCharsets.UTF_8)); // Prepare command line for java execution. CommandlineJava commandline; commandline = (CommandlineJava) getCommandline().clone(); - commandline.createClasspath(getProject()).add(addSlaveClasspath()); - commandline.setClassname(SlaveMainSafe.class.getName()); - if (slave.slaves == 1) { - commandline.createArgument().setValue(SlaveMain.OPTION_FREQUENT_FLUSH); + commandline.createClasspath(getProject()).add(addForkedJvmClasspath()); + commandline.setClassname(ForkedMainSafe.class.getName()); + if (forkedJvmInfo.forkedJvmCount == 1) { + commandline.createArgument().setValue(ForkedMain.OPTION_FREQUENT_FLUSH); } // Set up full output files. Path sysoutFile = tempFile(uniqueSeed, - "junit4-J" + slave.id, ".sysout", getTempDir()); + "junit4-J" + forkedJvmInfo.id, ".sysout", getTempDir()); Path syserrFile = tempFile(uniqueSeed, - "junit4-J" + slave.id, ".syserr", getTempDir()); + "junit4-J" + forkedJvmInfo.id, ".syserr", getTempDir()); // Set up communication channel. - Path eventFile = tempFile(uniqueSeed, "junit4-J" + slave.id, ".events", getTempDir()); + Path eventFile = tempFile(uniqueSeed, "junit4-J" + forkedJvmInfo.id, ".events", getTempDir()); temporaryFiles.add(eventFile); - commandline.createArgument().setValue(SlaveMain.OPTION_EVENTSFILE); + commandline.createArgument().setValue(ForkedMain.OPTION_EVENTSFILE); commandline.createArgument().setFile(eventFile.toFile()); - + if (sysouts) { - commandline.createArgument().setValue(SlaveMain.OPTION_SYSOUTS); + commandline.createArgument().setValue(ForkedMain.OPTION_SYSOUTS); } - + if (debugStream) { - commandline.createArgument().setValue(SlaveMain.OPTION_DEBUGSTREAM); + commandline.createArgument().setValue(ForkedMain.OPTION_DEBUGSTREAM); } TailInputStream eventStream = new TailInputStream(eventFile); @@ -1431,7 +1443,7 @@ private void executeSlave(final ForkedJvmInfo slave, final EventBus aggregatedBu if (!runListeners.isEmpty()) { String classNames = runListeners.stream().map(x -> x.getClassName()).collect(Collectors.joining(",")); - commandline.createArgument().setValue(SlaveMain.OPTION_RUN_LISTENERS); + commandline.createArgument().setValue(ForkedMain.OPTION_RUN_LISTENERS); commandline.createArgument().setValue(classNames); } @@ -1441,39 +1453,39 @@ private void executeSlave(final ForkedJvmInfo slave, final EventBus aggregatedBu // May or may not use dynamic load balancing, but if == 0 then we're for sure // not using it. if (dynamicAssignmentRatio > 0) { - commandline.createArgument().setValue(SlaveMain.OPTION_STDIN); + commandline.createArgument().setValue(ForkedMain.OPTION_STDIN); } - final EventBus eventBus = new EventBus("slave-" + slave.id); - final DiagnosticsListener diagnosticsListener = new DiagnosticsListener(slave, this); + final EventBus eventBus = new EventBus("forked-" + forkedJvmInfo.id); + final DiagnosticsListener diagnosticsListener = new DiagnosticsListener(forkedJvmInfo, this); eventBus.register(diagnosticsListener); - eventBus.register(new AggregatingListener(aggregatedBus, slave)); + eventBus.register(new AggregatingListener(aggregatedBus, forkedJvmInfo)); final AtomicReference clientCharset = new AtomicReference(); - final AtomicBoolean clientWithLimitedCharset = new AtomicBoolean(); + final AtomicBoolean clientWithLimitedCharset = new AtomicBoolean(); final PrintWriter w = new PrintWriter(Files.newBufferedWriter(classNamesDynamic, StandardCharsets.UTF_8)); eventBus.register(new Object() { @Subscribe - public void onIdleSlave(final SlaveIdle idleSlave) { - aggregatedBus.post(new SlaveIdle() { + public void onIdleForkedJvm(final ForkedJvmIdle idleForkedJvm) { + aggregatedBus.post(new ForkedJvmIdle() { @Override public void finished() { - idleSlave.finished(); + idleForkedJvm.finished(); } @Override public void newSuite(String suiteName) { if (!clientCharset.get().newEncoder().canEncode(suiteName)) { clientWithLimitedCharset.set(true); - log("Forked JVM J" + slave.id + " skipped suite (cannot encode suite name in charset " + + log("Forked JVM J" + forkedJvmInfo.id + " skipped suite (cannot encode suite name in charset " + clientCharset.get() + "): " + suiteName, Project.MSG_WARN); return; } - log("Forked JVM J" + slave.id + " stole suite: " + suiteName, Project.MSG_VERBOSE); + log("Forked JVM J" + forkedJvmInfo.id + " stole suite: " + suiteName, Project.MSG_VERBOSE); w.println(suiteName); w.flush(); - idleSlave.newSuite(suiteName); + idleForkedJvm.newSuite(suiteName); } }); } @@ -1483,15 +1495,15 @@ public void onBootstrap(final BootstrapEvent e) { Charset cs = Charset.forName(((BootstrapEvent) e).getDefaultCharsetName()); clientCharset.set(cs); - slave.start = System.currentTimeMillis(); - slave.setBootstrapEvent(e); - aggregatedBus.post(new ChildBootstrap(slave)); + forkedJvmInfo.start = System.currentTimeMillis(); + forkedJvmInfo.setBootstrapEvent(e); + aggregatedBus.post(new ChildBootstrap(forkedJvmInfo)); } @Subscribe public void receiveQuit(QuitEvent e) { - slave.end = System.currentTimeMillis(); - } + forkedJvmInfo.end = System.currentTimeMillis(); + } }); Closer closer = Closer.create(); @@ -1502,29 +1514,29 @@ public void receiveQuit(QuitEvent e) { OutputStream syserr = closer.register(new BufferedOutputStream(Files.newOutputStream(syserrFile))); RandomAccessFile streamsBuffer = closer.register(new RandomAccessFile(streamsBufferFile.toFile(), "rw")); - Execute execute = forkProcess(slave, eventBus, commandline, eventStream, sysout, syserr, streamsBuffer); - log("Forked JVM J" + slave.id + " finished with exit code: " + execute.getExitValue(), Project.MSG_DEBUG); + Execute execute = forkProcess(forkedJvmInfo, eventBus, commandline, eventStream, sysout, syserr, streamsBuffer); + log("Forked JVM J" + forkedJvmInfo.id + " finished with exit code: " + execute.getExitValue(), Project.MSG_DEBUG); if (execute.isFailure()) { final int exitStatus = execute.getExitValue(); switch (exitStatus) { - case SlaveMain.ERR_NO_JUNIT: + case ForkedMain.ERR_NO_JUNIT: throw new BuildException("Forked JVM's classpath must include a junit4 JAR."); - case SlaveMain.ERR_OLD_JUNIT: + case ForkedMain.ERR_OLD_JUNIT: throw new BuildException("Forked JVM's classpath must use JUnit 4.10 or newer."); default: Closeables.close(sysout, false); Closeables.close(syserr, false); StringBuilder message = new StringBuilder(); - if (exitStatus == SlaveMain.ERR_OOM) { + if (exitStatus == ForkedMain.ERR_OOM) { message.append("Forked JVM ran out of memory."); } else { message.append("Forked process returned with error code: ").append(exitStatus).append("."); } if (Files.size(sysoutFile) > 0 || Files.size(syserrFile) > 0) { - if (exitStatus != SlaveMain.ERR_OOM) { + if (exitStatus != ForkedMain.ERR_OOM) { message.append(" Very likely a JVM crash. "); } @@ -1554,8 +1566,8 @@ public void receiveQuit(QuitEvent e) { Files.delete(streamsBufferFile); // Check sysout/syserr lengths. - checkJvmOutput(aggregatedBus, sysoutFile, slave, "stdout"); - checkJvmOutput(aggregatedBus, syserrFile, slave, "stderr"); + checkJvmOutput(aggregatedBus, sysoutFile, forkedJvmInfo, "stdout"); + checkJvmOutput(aggregatedBus, syserrFile, forkedJvmInfo, "stderr"); } } @@ -1564,7 +1576,7 @@ public void receiveQuit(QuitEvent e) { } if (clientWithLimitedCharset.get() && dynamicAssignmentRatio > 0) { - throw new BuildException("Forked JVM J" + slave.id + " was not be able to decode class names when using" + + throw new BuildException("Forked JVM J" + forkedJvmInfo.id + " was not be able to decode class names when using" + " charset: " + clientCharset + ". Do not use " + "dynamic suite balancing to work around this problem (-DdynamicAssignmentRatio=0)."); } @@ -1633,11 +1645,11 @@ private String escapeAndJoin(String[] commandline) { } /** - * Execute a slave process. Pump events to the given event bus. + * Execute a forked JVM subprocess. Pump events to the given event bus. */ @SuppressForbidden("legitimate sysstreams.") - private Execute forkProcess(ForkedJvmInfo slaveInfo, EventBus eventBus, - CommandlineJava commandline, + private Execute forkProcess(ForkedJvmInfo forkedJvmInfo, EventBus eventBus, + CommandlineJava commandline, TailInputStream eventStream, OutputStream sysout, OutputStream syserr, RandomAccessFile streamsBuffer) { try { String tempDir = commandline.getSystemProperties().getVariablesVector().stream() @@ -1646,14 +1658,14 @@ private Execute forkProcess(ForkedJvmInfo slaveInfo, EventBus eventBus, .findAny() .orElse(null); - final LocalSlaveStreamHandler streamHandler = - new LocalSlaveStreamHandler( - eventBus, testsClassLoader, System.err, eventStream, + final LocalForkedJvmStreamHandler streamHandler = + new LocalForkedJvmStreamHandler( + eventBus, testsClassLoader, System.err, eventStream, sysout, syserr, heartbeat, streamsBuffer); // Add certain properties to allow identification of the forked JVM from within // the subprocess. This can be used for policy files etc. - final Path cwd = getWorkingDirectory(slaveInfo, tempDir); + final Path cwd = getWorkingDirectory(forkedJvmInfo, tempDir); Variable v = new Variable(); v.setKey(CHILDVM_SYSPROP_CWD); @@ -1667,19 +1679,19 @@ private Execute forkProcess(ForkedJvmInfo slaveInfo, EventBus eventBus, v = new Variable(); v.setKey(SysGlobals.CHILDVM_SYSPROP_JVM_ID); - v.setValue(Integer.toString(slaveInfo.id)); + v.setValue(Integer.toString(forkedJvmInfo.id)); commandline.addSysproperty(v); v = new Variable(); v.setKey(SysGlobals.CHILDVM_SYSPROP_JVM_COUNT); - v.setValue(Integer.toString(slaveInfo.slaves)); + v.setValue(Integer.toString(forkedJvmInfo.forkedJvmCount)); commandline.addSysproperty(v); // Emit command line before -stdin to avoid confusion. - slaveInfo.slaveCommandLine = escapeAndJoin(commandline.getCommandline()); - log("Forked child JVM at '" + cwd.toAbsolutePath().normalize() + - "', command (may need escape sequences for your shell):\n" + - slaveInfo.slaveCommandLine, Project.MSG_VERBOSE); + forkedJvmInfo.forkedCommandLine = escapeAndJoin(commandline.getCommandline()); + log("Forked child JVM at '" + cwd.toAbsolutePath().normalize() + + "', command (may need escape sequences for your shell):\n" + + forkedJvmInfo.forkedCommandLine, Project.MSG_VERBOSE); final Execute execute = new Execute(); execute.setCommandline(commandline.getCommandline()); @@ -1689,7 +1701,7 @@ private Execute forkProcess(ForkedJvmInfo slaveInfo, EventBus eventBus, execute.setNewenvironment(newEnvironment); if (env.getVariables() != null) execute.setEnvironment(env.getVariables()); - log("Starting JVM J" + slaveInfo.id, Project.MSG_DEBUG); + log("Starting JVM J" + forkedJvmInfo.id, Project.MSG_DEBUG); execute.execute(); return execute; } catch (IOException e) { @@ -1709,12 +1721,12 @@ private Path getWorkingDirectory(ForkedJvmInfo jvmInfo, String tempDir) throws I if (!existingFiles.isEmpty()) { switch (nonEmptyWorkDirAction) { case IGNORE: - log("Cwd of a forked JVM already exists and is not empty: " + log("Cwd of a forked JVM already exists and is not empty: " + existingFiles + " (ignoring).", Project.MSG_DEBUG); break; - + case WIPE: - log("Cwd of a forked JVM already exists and is not empty, trying to wipe: " + log("Cwd of a forked JVM already exists and is not empty, trying to wipe: " + existingFiles, Project.MSG_DEBUG); try { Path tempPath = tempDir == null ? null : forkedDir.resolve(tempDir); @@ -1784,7 +1796,7 @@ private Path getTempDir() { /** * Process test resources. If there are any test resources that are _not_ class files, - * this will cause a build error. + * this will cause a build error. */ private TestsCollection processTestResources() { TestsCollection collection = new TestsCollection(); @@ -1794,7 +1806,7 @@ private TestsCollection processTestResources() { boolean javaSourceWarn = false; while (iter.hasNext()) { final Resource r = iter.next(); - if (!r.isExists()) + if (!r.isExists()) throw new BuildException("Test class resource does not exist?: " + r.getName()); try { @@ -1806,7 +1818,7 @@ private TestsCollection processTestResources() { .replace('/', '.') .replace('\\', '.'); collection.add(new TestClass(className)); - + if (!javaSourceWarn) { log("Source (.java) files used for naming source suites. This is discouraged, " + "use a resource collection pointing to .class files instead.", Project.MSG_INFO); @@ -1816,9 +1828,9 @@ private TestsCollection processTestResources() { // Assume .class file. InputStream is = r.getInputStream(); if (!is.markSupported()) { - is = new BufferedInputStream(is); + is = new BufferedInputStream(is); } - + try { is.mark(4); if (is.read() != 0xca || @@ -1849,7 +1861,7 @@ public AnnotationVisitor visitAnnotation(String desc, boolean visible) { reader.accept(annotationVisitor, ClassReader.SKIP_CODE | ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES); testClass.className = reader.getClassName().replace('/', '.'); log("Test class parsed: " + r.getName() + " as " + testClass.className, Project.MSG_DEBUG); - + collection.add(testClass); } finally { is.close(); @@ -1875,30 +1887,30 @@ public AnnotationVisitor visitAnnotation(String desc, boolean visible) { } /** - * Returns the slave VM command line. + * Returns the forked JVM command line. */ private CommandlineJava getCommandline() { - return slaveCommand; + return forkedJvmCommandLine; } /** * Adds a classpath source which contains the given resource. - * + * * TODO: [GH-213] this is extremely ugly; separate the code required to run on the * forked JVM into an isolated bundle and either create it on-demand (in temp. * files location?) or locate it in classpath somehow (in a portable way). */ - private org.apache.tools.ant.types.Path addSlaveClasspath() { + private org.apache.tools.ant.types.Path addForkedJvmClasspath() { org.apache.tools.ant.types.Path path = new org.apache.tools.ant.types.Path(getProject()); - String [] REQUIRED_SLAVE_CLASSES = { - SlaveMain.class.getName(), + String [] REQUIRED_FORKED_JVM_CLASSES = { + ForkedMain.class.getName(), Strings.class.getName(), MethodGlobFilter.class.getName(), TeeOutputStream.class.getName() }; - for (String clazz : Arrays.asList(REQUIRED_SLAVE_CLASSES)) { + for (String clazz : Arrays.asList(REQUIRED_FORKED_JVM_CLASSES)) { String resource = clazz.replace(".", "/") + ".class"; File f = LoaderUtils.getResourceSource(getClass().getClassLoader(), resource); if (f != null) { diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/LocalSlaveStreamHandler.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/LocalForkedJvmStreamHandler.java similarity index 97% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/LocalSlaveStreamHandler.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/LocalForkedJvmStreamHandler.java index 4dd74da3..7df0fabd 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/LocalSlaveStreamHandler.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/LocalForkedJvmStreamHandler.java @@ -13,7 +13,6 @@ import java.util.concurrent.TimeUnit; import org.apache.tools.ant.taskdefs.ExecuteStreamHandler; -import org.apache.tools.ant.taskdefs.StreamPumper; import com.carrotsearch.ant.tasks.junit4.events.BootstrapEvent; import com.carrotsearch.ant.tasks.junit4.events.Deserializer; @@ -26,7 +25,7 @@ /** * Establish event passing with a subprocess and pump events to the bus. */ -public class LocalSlaveStreamHandler implements ExecuteStreamHandler { +public class LocalForkedJvmStreamHandler implements ExecuteStreamHandler { private final EventBus eventBus; private final ClassLoader refLoader; @@ -52,7 +51,7 @@ public class LocalSlaveStreamHandler implements ExecuteStreamHandler { private final RandomAccessFile streamsBuffer; private final OutputStream streamsBufferWrapper; - public LocalSlaveStreamHandler( + public LocalForkedJvmStreamHandler( EventBus eventBus, ClassLoader classLoader, PrintStream warnStream, TailInputStream eventStream, OutputStream sysout, OutputStream syserr, long heartbeat, final RandomAccessFile streamsBuffer) { this.eventBus = eventBus; @@ -235,7 +234,7 @@ void pumpEvents(InputStream eventStream) { return; case IDLE: - eventBus.post(new SlaveIdle(stdinWriter)); + eventBus.post(new ForkedJvmIdle(stdinWriter)); break; case BOOTSTRAP: diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/PickSeedTask.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/PickSeedTask.java index 1e74ed9e..fd01dee5 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/PickSeedTask.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/PickSeedTask.java @@ -37,7 +37,7 @@ public void execute() throws BuildException { String seedValue = Strings.emptyToNull(getProject().getProperty(propertyName)); if (seedValue == null) { seedValue = SeedUtils.formatSeed(new Random().nextLong()); - log("Picking master seed for property '" + propertyName + "': " + log("Picking main seed for property '" + propertyName + "': " + seedValue, Project.MSG_VERBOSE); getProject().setProperty(propertyName, seedValue); } else { diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/SuiteBalancer.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/SuiteBalancer.java index 3ff7b227..0735947a 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/SuiteBalancer.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/SuiteBalancer.java @@ -14,9 +14,9 @@ public final static class Assignment implements Comparable { public final String suiteName; /** - * Slave assignment. + * forked JVM assignment. */ - public final int slaveId; + public final int forkedJvmId; /** * Estimated cost; informational only (depends on the balancer). May be zero @@ -24,9 +24,9 @@ public final static class Assignment implements Comparable { */ public final int estimatedCost; - public Assignment(String suiteName, int slaveId, int estimatedCost) { + public Assignment(String suiteName, int forkedJvmId, int estimatedCost) { this.suiteName = suiteName; - this.slaveId = slaveId; + this.forkedJvmId = forkedJvmId; this.estimatedCost = estimatedCost; } @@ -34,7 +34,7 @@ public Assignment(String suiteName, int slaveId, int estimatedCost) { public int compareTo(Assignment other) { int v = this.suiteName.compareTo(other.suiteName); if (v == 0) { - v = this.slaveId - other.slaveId; + v = this.forkedJvmId - other.forkedJvmId; } return v; } @@ -46,11 +46,11 @@ public int compareTo(Assignment other) { void setOwner(JUnit4 owner); /** - * Provide assignments for suite names and a given number of slaves. + * Provide assignments for suite names and a given number of forked JVMs. * * @return Returns an ordered list with assignments. Any suite name not present * in the keys of the returned map will be assigned by following * balancers (or randomly). */ - List assign(Collection suiteNames, int slaves, long seed); + List assign(Collection suiteNames, int forkedJvmCount, long seed); } diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/balancers/ExecutionTimeBalancer.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/balancers/ExecutionTimeBalancer.java index 4ece79bb..5866851b 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/balancers/ExecutionTimeBalancer.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/balancers/ExecutionTimeBalancer.java @@ -15,10 +15,10 @@ * {@link ExecutionTimesReport}. */ public class ExecutionTimeBalancer extends ProjectComponent implements SuiteBalancer { - private static class SlaveLoad { - public static final Comparator ASCENDING_BY_ESTIMATED_FINISH = new Comparator() { + private static class ForkedJvmLoad { + public static final Comparator ASCENDING_BY_ESTIMATED_FINISH = new Comparator() { @Override - public int compare(SlaveLoad o1, SlaveLoad o2) { + public int compare(ForkedJvmLoad o1, ForkedJvmLoad o2) { if (o1.estimatedFinish < o2.estimatedFinish) { return -1; } else if (o1.estimatedFinish == o2.estimatedFinish) { @@ -32,7 +32,7 @@ public int compare(SlaveLoad o1, SlaveLoad o2) { public final int id; public long estimatedFinish; - public SlaveLoad(int id) { + public ForkedJvmLoad(int id) { this.id = id; } } @@ -69,12 +69,12 @@ public void add(ResourceCollection rc) { /** * Assign based on execution time history. The algorithm is a greedy heuristic - * assigning the longest remaining test to the slave with the + * assigning the longest remaining test to the forked JVM with the * shortest-completion time so far. This is not optimal but fast and provides * a decent average assignment. */ @Override - public List assign(Collection suiteNames, int slaves, long seed) { + public List assign(Collection suiteNames, int forkedJvmCount, long seed) { // Read hints first. final Map> hints = ExecutionTimesReport.mergeHints(resources, suiteNames); @@ -94,37 +94,37 @@ public List assign(Collection suiteNames, int slaves, long s Collections.sort(costs, SuiteHint.DESCENDING_BY_WEIGHT); // Apply the assignment heuristic. - final PriorityQueue pq = new PriorityQueue( - slaves, SlaveLoad.ASCENDING_BY_ESTIMATED_FINISH); - for (int i = 0; i < slaves; i++) { - pq.add(new SlaveLoad(i)); + final PriorityQueue pq = new PriorityQueue( + forkedJvmCount, ForkedJvmLoad.ASCENDING_BY_ESTIMATED_FINISH); + for (int i = 0; i < forkedJvmCount; i++) { + pq.add(new ForkedJvmLoad(i)); } final List assignments = new ArrayList<>(); for (SuiteHint hint : costs) { - SlaveLoad slave = pq.remove(); - slave.estimatedFinish += hint.cost; - pq.add(slave); + ForkedJvmLoad forkedJvm = pq.remove(); + forkedJvm.estimatedFinish += hint.cost; + pq.add(forkedJvm); owner.log("Expected execution time for " + hint.suiteName + ": " + Duration.toHumanDuration(hint.cost), Project.MSG_DEBUG); - assignments.add(new Assignment(hint.suiteName, slave.id, (int) hint.cost)); + assignments.add(new Assignment(hint.suiteName, forkedJvm.id, (int) hint.cost)); } // Dump estimated execution times. - TreeMap ordered = new TreeMap(); + TreeMap ordered = new TreeMap(); while (!pq.isEmpty()) { - SlaveLoad slave = pq.remove(); - ordered.put(slave.id, slave); + ForkedJvmLoad forkedJvmLoad = pq.remove(); + ordered.put(forkedJvmLoad.id, forkedJvmLoad); } for (Integer id : ordered.keySet()) { - final SlaveLoad slave = ordered.get(id); + final ForkedJvmLoad forkedJvmLoad = ordered.get(id); owner.log(String.format(Locale.ROOT, "Expected execution time on JVM J%d: %8.2fs", - slave.id, - slave.estimatedFinish / 1000.0f), + forkedJvmLoad.id, + forkedJvmLoad.estimatedFinish / 1000.0f), verbose ? Project.MSG_INFO : Project.MSG_DEBUG); } diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/balancers/RoundRobinBalancer.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/balancers/RoundRobinBalancer.java index c00a3ff5..ea8d1254 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/balancers/RoundRobinBalancer.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/balancers/RoundRobinBalancer.java @@ -13,12 +13,12 @@ public class RoundRobinBalancer implements SuiteBalancer { @Override - public List assign(Collection suiteNames, int slaves, long seed) { + public List assign(Collection suiteNames, int forkedJvmCount, long seed) { List result = new ArrayList<>(); int i = 0; for (String suite : suiteNames) { result.add(new Assignment(suite, i++, 0)); - if (i >= slaves) i = 0; + if (i >= forkedJvmCount) i = 0; } return result; } diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/BootstrapEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/BootstrapEvent.java index 564de8b4..68bf18a3 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/BootstrapEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/BootstrapEvent.java @@ -16,7 +16,7 @@ import com.carrotsearch.ant.tasks.junit4.gson.stream.JsonWriter; /** - * Initial message sent from the slave to the master (if forked locally). + * Initial message sent from the forked JVM to the main JVM (if forked locally). */ public class BootstrapEvent extends AbstractEvent { private static final List GUARANTEED_PROPERTIES = Arrays.asList( @@ -103,14 +103,14 @@ private Map collectSystemProperties() { } /** - * Default charset on the slave. + * Default charset on the forked JVM. */ public String getDefaultCharsetName() { return defaultCharset; } /** - * System properties on the slave. + * System properties on the forked JVM. */ public Map getSystemProperties() { return systemProperties; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/EventType.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/EventType.java index d362d4fc..d0a764d9 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/EventType.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/EventType.java @@ -5,7 +5,7 @@ import com.carrotsearch.ant.tasks.junit4.gson.stream.JsonReader; /** - * Events (messages) passed between the slave and the master. + * Events (messages) passed between the forked JVM and the main JVM. */ public enum EventType { BOOTSTRAP(BootstrapEvent.class), diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/IEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/IEvent.java index 0119d289..b026e311 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/IEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/IEvent.java @@ -1,7 +1,7 @@ package com.carrotsearch.ant.tasks.junit4.events; /** - * An event/ message passed between the forked JVM and the master. + * An event/ message passed between the forked JVM and the main JVM. */ public interface IEvent { EventType getType(); diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/IdleEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/IdleEvent.java index a89dd422..2b4abd87 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/IdleEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/IdleEvent.java @@ -6,7 +6,7 @@ import com.carrotsearch.ant.tasks.junit4.gson.stream.JsonWriter; /** - * Marker that the slave is idle and awaiting more suite names. + * Marker that the forked JVM is idle and awaiting more suite names. */ public class IdleEvent extends AbstractEvent { public IdleEvent() { diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/QuitEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/QuitEvent.java index 6e9f58df..d85728e9 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/QuitEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/QuitEvent.java @@ -6,7 +6,7 @@ import com.carrotsearch.ant.tasks.junit4.gson.stream.JsonWriter; /** - * Final message sent from the slave. Also signals orderly shutdown. + * Final message sent from the forked JVM. Also signals orderly shutdown. */ public class QuitEvent extends AbstractEvent { public QuitEvent() { diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/Serializer.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/Serializer.java index 506fe40a..6f7c719f 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/Serializer.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/Serializer.java @@ -11,7 +11,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import com.carrotsearch.ant.tasks.junit4.gson.stream.JsonWriter; -import com.carrotsearch.ant.tasks.junit4.slave.SlaveMain; +import com.carrotsearch.ant.tasks.junit4.forked.ForkedMain; import com.google.common.base.Charsets; /** @@ -55,14 +55,14 @@ public void run() { Throwable reason = doForcedShutdown; if (reason != null) { try { - SlaveMain.warn("Unhandled exception in event serialization.", reason); + ForkedMain.warn("Unhandled exception in event serialization.", reason); } finally { Runtime.getRuntime().halt(0); } } } } catch (Throwable t) { - SlaveMain.warn("Unreachable code. Complete panic.", t); + ForkedMain.warn("Unreachable code. Complete panic.", t); } } @@ -71,7 +71,7 @@ public UncaughtExceptionHandler getUncaughtExceptionHandler() { return new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread t, Throwable e) { - SlaveMain.warn("Unreachable code. Complete panic.", e); + ForkedMain.warn("Unreachable code. Complete panic.", e); } }; } @@ -91,7 +91,7 @@ public Serializer serialize(RemoteEvent event) throws IOException { // we enqueue the event and continue, serializing them in order. events.addLast(event); if (events.size() > 1) { - // SlaveMain.warn("Serializing " + event.getType() + " (postponed, " + events.size() + " in queue)", null); + // ForkedMain.warn("Serializing " + event.getType() + " (postponed, " + events.size() + " in queue)", null); return this; } @@ -107,11 +107,11 @@ private void flushQueue() throws IOException { if (isFlushing.getAndSet(true)) { // We're already flushing, return. - // SlaveMain.warn("Flush queue already flushing", null); + // ForkedMain.warn("Flush queue already flushing", null); return; } - // SlaveMain.warn("Flush queue start", null); + // ForkedMain.warn("Flush queue start", null); try { while (!events.isEmpty()) { if (writer == null) { @@ -120,7 +120,7 @@ private void flushQueue() throws IOException { final RemoteEvent event = events.removeFirst(); try { - // SlaveMain.warn("Serializing " + event.getType(), null); + // ForkedMain.warn("Serializing " + event.getType(), null); AccessController.doPrivileged(new PrivilegedExceptionAction() { @Override public Void run() throws Exception { @@ -140,7 +140,7 @@ public Void run() throws Exception { } finally { isFlushing.set(false); } - // SlaveMain.warn("Flush queue end", null); + // ForkedMain.warn("Flush queue end", null); if (doForcedShutdown != null) { // We can't do a stack bang here so any call is a risk of hitting SOE again. @@ -157,11 +157,11 @@ public Void run() throws Exception { public Serializer flush() throws IOException { synchronized (lock) { if (writer != null) { - // SlaveMain.warn("flushing...", null); + // ForkedMain.warn("flushing...", null); flushQueue(); writer.flush(); } else { - // SlaveMain.warn("flushing failed (serializer closed)", null); + // ForkedMain.warn("flushing failed (serializer closed)", null); } return this; } @@ -169,7 +169,7 @@ public Serializer flush() throws IOException { public void close() throws IOException { synchronized (lock) { - // SlaveMain.warn("closing...", null); + // ForkedMain.warn("closing...", null); if (writer != null) { serialize(new QuitEvent()); flushQueue(); diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedQuitEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedQuitEvent.java index 7060becf..0d10c830 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedQuitEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedQuitEvent.java @@ -2,7 +2,7 @@ /** - * An event dispatched after all slaves have completed their jobs. + * An event dispatched after all forked JVMs have completed their jobs. */ public class AggregatedQuitEvent { } diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedResultEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedResultEvent.java index b0524458..9d373b47 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedResultEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedResultEvent.java @@ -13,7 +13,7 @@ */ public interface AggregatedResultEvent { public Description getDescription(); - public ForkedJvmInfo getSlave(); + public ForkedJvmInfo getForkedJvmInfo(); public boolean isSuccessful(); public List getFailures(); List getEventStream(); diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedStartEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedStartEvent.java index 7bcce329..f847c5c5 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedStartEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedStartEvent.java @@ -2,22 +2,22 @@ /** - * An event dispatched before any slave starts. + * An event dispatched before any forked JVM starts. */ public class AggregatedStartEvent { - private int slaves; + private int forkedJvmCount; private int suiteCount; - public AggregatedStartEvent(int slaves, int suiteCount) { - this.slaves = slaves; + public AggregatedStartEvent(int forkedJvmCount, int suiteCount) { + this.forkedJvmCount = forkedJvmCount; this.suiteCount = suiteCount; } /** - * Number of slave processes. + * Number of forked JVM processes. */ - public int getSlaveCount() { - return slaves; + public int getForkedJvmCount() { + return forkedJvmCount; } /** diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedSuiteResultEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedSuiteResultEvent.java index 74c1ed16..b031544a 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedSuiteResultEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedSuiteResultEvent.java @@ -25,7 +25,7 @@ import com.carrotsearch.randomizedtesting.WriterOutputStream; public class AggregatedSuiteResultEvent implements AggregatedResultEvent { - private transient final ForkedJvmInfo slave; + private transient final ForkedJvmInfo forkedJvm; private final long executionTime; private final long startTimestamp; @@ -47,7 +47,7 @@ public AggregatedSuiteResultEvent( long startTimestamp, long executionTime) { this.startEvent = startEvent; - this.slave = id; + this.forkedJvm = id; this.tests = tests; this.suiteFailures = suiteFailures; this.description = description; @@ -89,8 +89,8 @@ public List getEventStream() { } @Override - public ForkedJvmInfo getSlave() { - return slave; + public ForkedJvmInfo getForkedJvmInfo() { + return forkedJvm; } @Override @@ -106,7 +106,7 @@ public long getExecutionTime() { } /** - * Execution start timestamp (on the slave). + * Execution start timestamp (on the forked JVM). */ public long getStartTimestamp() { return startTimestamp; @@ -164,7 +164,7 @@ public int getIgnoredCount() { public void serialize(JsonWriter w, boolean outputStreams) throws IOException { w.beginObject(); - w.name("slave").value(getSlave().id); + w.name("forkedJvm").value(getForkedJvmInfo().id); w.name("startTimestamp").value(getStartTimestamp()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ROOT); @@ -198,7 +198,7 @@ public void serialize(JsonWriter w, boolean outputStreams) throws IOException { private void serialize(JsonWriter w, SimpleDateFormat sdf, AggregatedTestResultEvent e) throws IOException { w.beginObject(); - w.name("slave").value(e.getSlave().id); + w.name("forkedJvm").value(e.getForkedJvmInfo().id); w.name("startTimestamp").value(e.getStartTimestamp()); w.name("startTimestampDate").value(sdf.format(new Date(e.getStartTimestamp()))); w.name("executionTime").value(e.getExecutionTime()); @@ -237,7 +237,7 @@ private void serialize(JsonWriter w, FailureMirror e) throws IOException { } private void serializeEvents(JsonWriter w, boolean outputStreams) throws IOException { - final Charset charset = getSlave().getCharset(); + final Charset charset = getForkedJvmInfo().getCharset(); int lineBuffer = 160; final StringWriter out = new StringWriter(); final StringWriter err = new StringWriter(); diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedSuiteStartedEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedSuiteStartedEvent.java index e58e930d..982231d3 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedSuiteStartedEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedSuiteStartedEvent.java @@ -4,11 +4,11 @@ import com.carrotsearch.ant.tasks.junit4.events.SuiteStartedEvent; public class AggregatedSuiteStartedEvent { - private transient final ForkedJvmInfo slave; + private transient final ForkedJvmInfo forkedJvmInfo; private SuiteStartedEvent suiteStartedEvent; public AggregatedSuiteStartedEvent(ForkedJvmInfo id, SuiteStartedEvent e) { - this.slave = id; + this.forkedJvmInfo = id; this.suiteStartedEvent = e; } @@ -16,7 +16,7 @@ public SuiteStartedEvent getSuiteStartedEvent() { return suiteStartedEvent; } - public ForkedJvmInfo getSlave() { - return slave; + public ForkedJvmInfo getForkedJvmInfo() { + return forkedJvmInfo; } } diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedTestResultEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedTestResultEvent.java index 5025e8a4..7642dda1 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedTestResultEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatedTestResultEvent.java @@ -17,7 +17,7 @@ public class AggregatedTestResultEvent implements AggregatedResultEvent { private final Description suite; private final Description description; - private final ForkedJvmInfo slave; + private final ForkedJvmInfo forkedJvmInfo; private TestStatus status = TestStatus.OK; private List failures = new ArrayList<>(); @@ -34,10 +34,10 @@ public class AggregatedTestResultEvent implements AggregatedResultEvent { /** Associated {@link TestFinishedEvent}. */ private TestFinishedEvent testFinishedEvent; - public AggregatedTestResultEvent(ForkedJvmInfo slave, Description suiteDescription, Description description) { + public AggregatedTestResultEvent(ForkedJvmInfo forkedJvmInfo, Description suiteDescription, Description description) { this.description = description; this.suite = suiteDescription; - this.slave = slave; + this.forkedJvmInfo = forkedJvmInfo; } @Override @@ -57,8 +57,8 @@ public Description getSuiteDescription() { } @Override - public ForkedJvmInfo getSlave() { - return slave; + public ForkedJvmInfo getForkedJvmInfo() { + return forkedJvmInfo; } @Override @@ -74,7 +74,7 @@ public long getExecutionTime() { } /** - * Execution start timestamp (on the slave). + * Execution start timestamp (on the forked JVM). */ public long getStartTimestamp() { return testFinishedEvent.getStartTimestamp(); diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatingListener.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatingListener.java index cb4e1ba8..2c1c71e1 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatingListener.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/AggregatingListener.java @@ -21,7 +21,7 @@ */ public class AggregatingListener { private EventBus target; - private ForkedJvmInfo slave; + private ForkedJvmInfo forkedJvmInfo; private AggregatedSuiteStartedEvent startEvent; private Description lastSuite; @@ -34,9 +34,9 @@ public class AggregatingListener { /** * @param target Which event bus to repost aggregated events to? */ - public AggregatingListener(EventBus target, ForkedJvmInfo slave) { + public AggregatingListener(EventBus target, ForkedJvmInfo forkedJvmInfo) { this.target = target; - this.slave = slave; + this.forkedJvmInfo = forkedJvmInfo; } @Subscribe @@ -45,7 +45,7 @@ public void appendToEventStream(IEvent e) { switch (e.getType()) { case APPEND_STDOUT: case APPEND_STDERR: - target.post(new PartialOutputEvent(slave, e)); + target.post(new PartialOutputEvent(forkedJvmInfo, e)); // fall through. case TEST_STARTED: case TEST_FINISHED: @@ -74,7 +74,7 @@ public void slowHeartBeat(LowLevelHeartBeatEvent e) { } target.post(new HeartBeatEvent( - slave, + forkedJvmInfo, current, e.lastActivity, e.currentTime @@ -90,14 +90,14 @@ public void receiveSuiteStart(SuiteStartedEvent e) { suiteFailures = new ArrayList<>(); eventStream = new ArrayList<>(); lastSuite = e.getDescription(); - startEvent = new AggregatedSuiteStartedEvent(slave, e); + startEvent = new AggregatedSuiteStartedEvent(forkedJvmInfo, e); target.post(startEvent); } @Subscribe public void receiveTestStart(TestStartedEvent e) { - tests.push(new AggregatedTestResultEvent(slave, lastSuite, e.getDescription())); + tests.push(new AggregatedTestResultEvent(forkedJvmInfo, lastSuite, e.getDescription())); testStartStreamMarker = eventStream.size(); } @@ -157,7 +157,7 @@ public void receiveTestEnd(TestFinishedEvent e) { public void receiveSuiteEnd(SuiteCompletedEvent e) { target.post(new AggregatedSuiteResultEvent( startEvent, - slave, + forkedJvmInfo, e.getDescription(), suiteFailures, Lists.newArrayList(tests.descendingIterator()), diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/ChildBootstrap.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/ChildBootstrap.java index 1a7a20c6..071a07ec 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/ChildBootstrap.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/ChildBootstrap.java @@ -9,7 +9,7 @@ public ChildBootstrap(ForkedJvmInfo childInfo) { this.childInfo = childInfo; } - public ForkedJvmInfo getSlave() { + public ForkedJvmInfo getForkedJvmInfo() { return childInfo; } } diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/HeartBeatEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/HeartBeatEvent.java index d37c3c46..4a341832 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/HeartBeatEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/HeartBeatEvent.java @@ -11,13 +11,13 @@ * not guaranteed (and may be null). */ public final class HeartBeatEvent { - private final ForkedJvmInfo slave; + private final ForkedJvmInfo forkedJvmInfo; private final Description description; private final long lastActivity; private final long currentTime; - public HeartBeatEvent(ForkedJvmInfo slave, Description description, long lastActivity, long currentTime) { - this.slave = slave; + public HeartBeatEvent(ForkedJvmInfo forkedJvmInfo, Description description, long lastActivity, long currentTime) { + this.forkedJvmInfo = forkedJvmInfo; this.description = description; this.lastActivity = lastActivity; this.currentTime = currentTime; @@ -39,7 +39,7 @@ public long getNoEventDuration() { return getCurrentTime() - getLastActivity(); } - public ForkedJvmInfo getSlave() { - return slave; + public ForkedJvmInfo getForkedJvmInfo() { + return forkedJvmInfo; } } diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/JvmOutputEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/JvmOutputEvent.java index 6ca98b36..ccfb80cf 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/JvmOutputEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/JvmOutputEvent.java @@ -18,7 +18,7 @@ public JvmOutputEvent(ForkedJvmInfo childInfo, File jvmOutput) { this.jvmOutput = jvmOutput; } - public ForkedJvmInfo getSlave() { + public ForkedJvmInfo getForkedJvmInfo() { return childInfo; } diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/PartialOutputEvent.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/PartialOutputEvent.java index 6b778ca3..d7ecd773 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/PartialOutputEvent.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/events/aggregated/PartialOutputEvent.java @@ -5,20 +5,20 @@ import com.carrotsearch.ant.tasks.junit4.events.IStreamEvent; /** - * Partial output emitted from a given slave. + * Partial output emitted from the forked JVM. */ public class PartialOutputEvent { - private ForkedJvmInfo slave; + private ForkedJvmInfo forkedJvmInfo; private IEvent event; - public PartialOutputEvent(ForkedJvmInfo slave, IEvent e) { + public PartialOutputEvent(ForkedJvmInfo forkedJvmInfo, IEvent e) { assert e instanceof IStreamEvent; - this.slave = slave; + this.forkedJvmInfo = forkedJvmInfo; this.event = e; } - public ForkedJvmInfo getSlave() { - return slave; + public ForkedJvmInfo getForkedJvmInfo() { + return forkedJvmInfo; } public IEvent getEvent() { diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/BeforeAfterRunListenerDecorator.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/BeforeAfterRunListenerDecorator.java similarity index 97% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/BeforeAfterRunListenerDecorator.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/BeforeAfterRunListenerDecorator.java index 86ffd69b..a724fdaa 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/BeforeAfterRunListenerDecorator.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/BeforeAfterRunListenerDecorator.java @@ -1,4 +1,4 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; import java.lang.reflect.Proxy; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/EventsOutputStream.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/EventsOutputStream.java similarity index 93% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/EventsOutputStream.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/EventsOutputStream.java index b4805c7b..bdef33e0 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/EventsOutputStream.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/EventsOutputStream.java @@ -1,4 +1,4 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; import java.io.*; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/SlaveMain.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/ForkedMain.java similarity index 96% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/SlaveMain.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/ForkedMain.java index c17c274d..aca0af36 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/SlaveMain.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/ForkedMain.java @@ -1,4 +1,4 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; import java.io.BufferedOutputStream; import java.io.BufferedReader; @@ -12,9 +12,6 @@ import java.io.PrintStream; import java.io.RandomAccessFile; import java.io.Writer; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.ArrayDeque; @@ -24,7 +21,6 @@ import java.util.Iterator; import java.util.List; -import com.carrotsearch.randomizedtesting.RandomizedRunner; import org.junit.runner.Description; import org.junit.runner.Request; import org.junit.runner.Result; @@ -47,9 +43,9 @@ import com.google.common.collect.Iterators; /** - * A slave process running the actual tests on the target JVM. + * A forked JVM process running the actual tests on the target JVM. */ -public class SlaveMain { +public class ForkedMain { /** Runtime exception. */ public static final int ERR_EXCEPTION = 240; @@ -116,7 +112,7 @@ public class SlaveMain { * are propagated properly. Not really useful in practice... */ public static final String SYSPROP_FIRERUNNERFAILURE = - SlaveMain.class.getName() + ".fireRunnerFailure"; + ForkedMain.class.getName() + ".fireRunnerFailure"; /** * Delay the initial bootstrap event from the forked JVM @@ -163,9 +159,9 @@ public void close() throws IOException { } /** - * Creates a slave emitting events to the given serializer. + * Creates a forked JVM emitting events to the given serializer. */ - public SlaveMain(Serializer serializer) { + public ForkedMain(Serializer serializer) { this.serializer = serializer; } @@ -308,7 +304,7 @@ private Class instantiate(String className) { if (flushFrequently) serializer.flush(); } catch (Exception e) { - warn("Could not report failure back to master.", t); + warn("Could not report failure back to main JVM.", t); } return null; } @@ -379,7 +375,7 @@ public static void main(String[] allArgs) { // Redirect original streams and start running tests. redirectStreams(serializer, flushFrequently); - final SlaveMain main = new SlaveMain(serializer); + final ForkedMain main = new ForkedMain(serializer); main.flushFrequently = flushFrequently; main.debugMessagesFile = debugStream ? new File(eventsFile.getAbsolutePath() + ".debug"): null; main.runListeners = runListeners; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/SlaveMainSafe.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/ForkedMainSafe.java similarity index 74% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/SlaveMainSafe.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/ForkedMainSafe.java index f2e9f9d6..110a5d27 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/SlaveMainSafe.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/ForkedMainSafe.java @@ -1,16 +1,16 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; import java.io.Serializable; import com.carrotsearch.randomizedtesting.annotations.SuppressForbidden; @SuppressForbidden("legitimate sysstreams.") -public class SlaveMainSafe { +public class ForkedMainSafe { public static void main(String[] args) { verifyJUnit4Present(); try { - SlaveMain.main(args); + ForkedMain.main(args); } catch (Throwable e) { try { System.err.println(e.toString()); @@ -18,7 +18,7 @@ public static void main(String[] args) { System.out.close(); System.err.close(); } finally { - JvmExit.halt(SlaveMain.ERR_EXCEPTION); + JvmExit.halt(ForkedMain.ERR_EXCEPTION); } } } @@ -30,10 +30,10 @@ private static void verifyJUnit4Present() { try { Class clazz = Class.forName("org.junit.runner.Description"); if (!Serializable.class.isAssignableFrom(clazz)) { - JvmExit.halt(SlaveMain.ERR_OLD_JUNIT); + JvmExit.halt(ForkedMain.ERR_OLD_JUNIT); } } catch (ClassNotFoundException e) { - JvmExit.halt(SlaveMain.ERR_NO_JUNIT); + JvmExit.halt(ForkedMain.ERR_NO_JUNIT); } } } diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/JvmExit.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/JvmExit.java similarity index 91% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/JvmExit.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/JvmExit.java index 3e17891b..bbc2e2f8 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/JvmExit.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/JvmExit.java @@ -1,4 +1,4 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; final class JvmExit { final static void halt(final int code) { diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/NoExceptionRunListenerDecorator.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/NoExceptionRunListenerDecorator.java similarity index 97% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/NoExceptionRunListenerDecorator.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/NoExceptionRunListenerDecorator.java index 04f53e04..154ed6e2 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/NoExceptionRunListenerDecorator.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/NoExceptionRunListenerDecorator.java @@ -1,4 +1,4 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; import java.lang.reflect.Proxy; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/NullWriter.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/NullWriter.java similarity index 81% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/NullWriter.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/NullWriter.java index 4a544440..95d3329d 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/NullWriter.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/NullWriter.java @@ -1,4 +1,4 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; import java.io.IOException; import java.io.Writer; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/OrderedRunNotifier.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/OrderedRunNotifier.java similarity index 99% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/OrderedRunNotifier.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/OrderedRunNotifier.java index 55f48718..024963a9 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/OrderedRunNotifier.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/OrderedRunNotifier.java @@ -1,4 +1,4 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; import java.util.*; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/RunListenerEmitter.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/RunListenerEmitter.java similarity index 98% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/RunListenerEmitter.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/RunListenerEmitter.java index 2314cae7..93add3bc 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/RunListenerEmitter.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/RunListenerEmitter.java @@ -1,4 +1,4 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; import java.io.IOException; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/StdInLineIterator.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/StdInLineIterator.java similarity index 94% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/StdInLineIterator.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/StdInLineIterator.java index 01501362..891ec7e0 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/StdInLineIterator.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/StdInLineIterator.java @@ -1,4 +1,4 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; import java.io.*; import java.nio.charset.Charset; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/StreamFlusherDecorator.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/StreamFlusherDecorator.java similarity index 91% rename from junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/StreamFlusherDecorator.java rename to junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/StreamFlusherDecorator.java index 2559b613..dfd79e1d 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/slave/StreamFlusherDecorator.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/forked/StreamFlusherDecorator.java @@ -1,4 +1,4 @@ -package com.carrotsearch.ant.tasks.junit4.slave; +package com.carrotsearch.ant.tasks.junit4.forked; import org.junit.runner.notification.RunListener; diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/StackTraceFilter.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/StackTraceFilter.java index c3f02a5f..12042da5 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/StackTraceFilter.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/StackTraceFilter.java @@ -26,7 +26,7 @@ public class StackTraceFilter { Pattern.compile("^(\\s+at )(sun\\.reflect\\.)"), Pattern.compile("^(\\s+at )(java\\.lang\\.reflect\\.Method\\.invoke\\()"), // randomizedtesting's own launcher. - Pattern.compile("^(\\s+at )(com\\.carrotsearch\\.ant\\.tasks\\.junit4\\.slave\\.SlaveMain)")); + Pattern.compile("^(\\s+at )(com\\.carrotsearch\\.ant\\.tasks\\.junit4\\.forked\\.ForkedMain)")); /** * Whether or not to use the default filters. diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/TextReport.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/TextReport.java index 4f591c2a..f3bfb9d4 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/TextReport.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/TextReport.java @@ -367,9 +367,9 @@ public void onStart(AggregatedStartEvent e) throws IOException { logShort("Executing " + totalSuites + Pluralize.pluralize(totalSuites, " suite") + " with " + - e.getSlaveCount() + Pluralize.pluralize(e.getSlaveCount(), " JVM") + ".\n", false); + e.getForkedJvmCount() + Pluralize.pluralize(e.getForkedJvmCount(), " JVM") + ".\n", false); - forkedJvmCount = e.getSlaveCount(); + forkedJvmCount = e.getForkedJvmCount(); jvmIdFormat = " J%-" + (1 + (int) Math.floor(Math.log10(forkedJvmCount))) + "d"; outWriter = new PrefixedWriter(stdoutIndent, output, DEFAULT_MAX_LINE_WIDTH); @@ -378,12 +378,12 @@ public void onStart(AggregatedStartEvent e) throws IOException { @Subscribe public void onChildBootstrap(ChildBootstrap e) throws IOException { - logShort("Started J" + e.getSlave().id + " PID(" + e.getSlave().getPidString() + ")."); + logShort("Started J" + e.getForkedJvmInfo().id + " PID(" + e.getForkedJvmInfo().getPidString() + ")."); } @Subscribe public void onHeartbeat(HeartBeatEvent e) throws IOException { - logShort("HEARTBEAT J" + e.getSlave().id + " PID(" + e.getSlave().getPidString() + "): " + + logShort("HEARTBEAT J" + e.getForkedJvmInfo().id + " PID(" + e.getForkedJvmInfo().getPidString() + "): " + formatTime(e.getCurrentTime()) + ", stalled for " + formatDurationInSeconds(e.getNoEventDuration()) + " at: " + (e.getDescription() == null ? "" : formatDescription(e.getDescription()))); @@ -414,7 +414,7 @@ public void onQuit(AggregatedQuitEvent e) throws IOException { @Subscribe public void onSuiteStart(AggregatedSuiteStartedEvent e) throws IOException { - final Charset charset = e.getSlave().getCharset(); + final Charset charset = e.getForkedJvmInfo().getCharset(); outStream = new WriterOutputStream(outWriter, charset, DEFAULT_MAX_LINE_WIDTH, true); errStream = new WriterOutputStream(errWriter, charset, DEFAULT_MAX_LINE_WIDTH, true); @@ -443,11 +443,11 @@ public void onOutput(PartialOutputEvent e) throws IOException { @Subscribe public void onJvmOutput(JvmOutputEvent e) throws IOException { - final String id = Integer.toString(e.getSlave().id); + final String id = Integer.toString(e.getForkedJvmInfo().id); output.append(">>> JVM J").append(id) .append(" emitted unexpected output (verbatim) ----\n"); - try (Reader r = Files.newReader(e.getJvmOutputFile(), e.getSlave().getCharset())) { + try (Reader r = Files.newReader(e.getJvmOutputFile(), e.getForkedJvmInfo().getCharset())) { CharStreams.copy(r, output); } output.append("<<< JVM J" + id + ": EOF ----\n"); @@ -575,7 +575,7 @@ private void emitSuiteEnd(AggregatedSuiteResultEvent e, int suitesCompleted) thr suitesCompleted, totalSuites, totalErrors == 0 ? "" : " (" + totalErrors + "!)", - e.getSlave().slaves > 1 ? " on J" + e.getSlave().id : "", + e.getForkedJvmInfo().forkedJvmCount > 1 ? " on J" + e.getForkedJvmInfo().id : "", e.getExecutionTime() / 1000.0d)); b.append(e.getTests().size()).append(Pluralize.pluralize(e.getTests().size(), " test")); @@ -612,7 +612,7 @@ private void emitStatusLine(AggregatedResultEvent result, TestStatus status, lon line.append(Strings.padEnd(statusNames.get(status), 8, ' ')); line.append(formatDurationInSeconds(timeMillis)); if (forkedJvmCount > 1) { - line.append(String.format(Locale.ROOT, jvmIdFormat, result.getSlave().id)); + line.append(String.format(Locale.ROOT, jvmIdFormat, result.getForkedJvmInfo().id)); } line.append(" | "); diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/antxml/AntXmlReport.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/antxml/AntXmlReport.java index 7f074dca..ac41a8fd 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/antxml/AntXmlReport.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/antxml/AntXmlReport.java @@ -195,7 +195,7 @@ private TestSuiteModel buildModel(AggregatedSuiteResultEvent e) throws IOExcepti suite.hostname = "nohost.nodomain"; suite.name = e.getDescription().getDisplayName(); - suite.properties = buildModel(e.getSlave().getSystemProperties()); + suite.properties = buildModel(e.getForkedJvmInfo().getSystemProperties()); suite.time = e.getExecutionTime() / 1000.0; suite.timestamp = df.format(new Date(e.getStartTimestamp())); @@ -233,7 +233,7 @@ private TestSuiteModel buildModel(AggregatedSuiteResultEvent e) throws IOExcepti StringWriter sysout = new StringWriter(); StringWriter syserr = new StringWriter(); if (outputStreams) { - e.getSlave().decodeStreams(e.getEventStream(), sysout, syserr); + e.getForkedJvmInfo().decodeStreams(e.getEventStream(), sysout, syserr); } suite.sysout = sysout.toString(); suite.syserr = syserr.toString(); diff --git a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/json/JsonReport.java b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/json/JsonReport.java index 1c51003e..555e9b4f 100644 --- a/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/json/JsonReport.java +++ b/junit4-ant/src/main/java/com/carrotsearch/ant/tasks/junit4/listeners/json/JsonReport.java @@ -40,7 +40,7 @@ public class JsonReport implements AggregatedEventListener { private String projectName; - private Map slaves = new TreeMap<>(); + private Map forkedJvms = new TreeMap<>(); private OutputStreamWriter writer; private static enum OutputMethod { @@ -202,7 +202,7 @@ public void onSuiteResult(AggregatedSuiteResultEvent e) { if (jsonWriter == null) return; - slaves.put(e.getSlave().id, e.getSlave()); + forkedJvms.put(e.getForkedJvmInfo().id, e.getForkedJvmInfo()); e.serialize(jsonWriter, outputStreams); } catch (Exception ex) { ex.printStackTrace(); @@ -231,9 +231,9 @@ public void onQuit(AggregatedQuitEvent e) { try { jsonWriter.endArray(); - jsonWriter.name("slaves"); + jsonWriter.name("forkedJvms"); jsonWriter.beginObject(); - for (Map.Entry entry : slaves.entrySet()) { + for (Map.Entry entry : forkedJvms.entrySet()) { jsonWriter.name(Integer.toString(entry.getKey())); entry.getValue().serialize(jsonWriter); } diff --git a/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/css/style.css b/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/css/style.css index 6275c13c..0f95bc93 100644 --- a/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/css/style.css +++ b/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/css/style.css @@ -443,7 +443,7 @@ th.result > span { font-size: 13px; color: #000; } -th.slave { +th.forkedJvm { width: 3.8em; } th.timestamp { diff --git a/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/ideas.txt b/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/ideas.txt index 62e39bab..9b4639b2 100644 --- a/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/ideas.txt +++ b/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/ideas.txt @@ -7,7 +7,7 @@ TODO, must have: * Console output generated by package, class and method * Unified (linear) console log view across all tests (alternative to package/class/method view) -* Showing information about slaves +* Showing information about forked JVMs * Showing RR-specific annotations * Indication next to package/class/method that there was console output * Display of global overrides @@ -19,8 +19,7 @@ TODO, must have: * repetitions * timeout * expected exceptions - * slave - * staus: ok, ignored by assumption, ignored by annotation, failed, error + * status: ok, ignored by assumption, ignored by annotation, failed, error * execution time * stack trace * console output @@ -51,7 +50,7 @@ To decide: * Generation of markup in JS makes things easy, but is terrible for indexing in search engines. Maybe there should be some pre-rendered version as well? -* Showing aggregations by the slave they ran on (like by package/method)? +* Showing aggregations by the forked they ran on (like by package/method)? * Mobile version? @@ -70,7 +69,7 @@ Testing: DONE: -* Showing test in the execution order (only in method view), per slave order +* Showing test in the execution order (only in method view), per forked jvm order * Showing failing tests first (if any test failed/errored) * General indication of ok / failure in document title * A "bulb" indication of general ok / failure (green/red, like in Bamboo) diff --git a/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/js/script.js b/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/js/script.js index d5216e82..52d00905 100644 --- a/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/js/script.js +++ b/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/js/script.js @@ -138,7 +138,7 @@ if (suite.suiteFailures.length > 0) { $.each(suite.suiteFailures, function(i, failure) { suite.tests.push({ - slave: suite.slave, + forkedJvm: suite.forkedJvm, startTimestamp: suite.startTimestamp, executionTime: 1, description: { @@ -349,7 +349,7 @@ }, type: "result" }, - numericColumn("slave", "JVM"), + numericColumn("forkedJvm", "JVM"), { id: "timestamp", label: "Start", @@ -388,7 +388,7 @@ signature: test.description.packageClassMethodName, result: test.status, time: test.executionTime, - slave: test.slave, + forkedJvm: test.forkedJvm, timestamp: test.startTimestamp, test: test }) @@ -761,7 +761,7 @@ // Refreshes the summary box based on the current parameters function refreshSummary() { var counts = aggregate(data, testCount, { "global":global, "byStatus":byStatus }, currentFilter); - var times = aggregate(data, totalTime, { "global":global, "bySlave":bySlave }, currentFilter); + var times = aggregate(data, totalTime, { "global":global, "byForkedJvm":byForkedJvm }, currentFilter); var $summary = $("#summary").html("").attr("class", ""); if ((counts.global || 0) == 0) { @@ -771,10 +771,10 @@ $("

    ").html(tmpl("\ #{tests} executed in\ #{time} ms on\ - #{slaves}.", { + #{forkedJvms}.", { tests: countText(counts.global || 0, "test"), time: times.global, - slaves: countText(keys(times.bySlave).length, "slave") + forkedJvms: countText(keys(times.byForkedJvm).length, "forked JVM") })).appendTo($summary); var html = ""; @@ -1093,8 +1093,8 @@ return test.status; } - function bySlave(test) { - return test.slave; + function byForkedJvm(test) { + return test.forkedJvm; } function byPackage(test) { diff --git a/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/report.json b/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/report.json new file mode 100644 index 00000000..c88210d3 --- /dev/null +++ b/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/report.json @@ -0,0 +1,643 @@ +{ + "junit4": { + "tests.seed": "84784D1BB9382FB8", + "project.name": "junit4" + }, + "suites": [ + { + "forkedJvm": 0, + "startTimestamp": 1656407943240, + "startTimestampDate": "2022-06-28T11:19:03.240", + "executionTime": 11, + "description": { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [ + { + "id": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "displayName": "failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "methodName": "failure", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [] + }, + { + "id": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "displayName": "ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "methodName": "ok", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [] + }, + { + "id": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "displayName": "error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "methodName": "error", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [] + }, + { + "id": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "displayName": "ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "methodName": "ignored_a", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [] + }, + { + "id": "ID#ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "displayName": "ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "methodName": "ignored", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [] + } + ] + }, + "tests": [ + { + "forkedJvm": 0, + "startTimestamp": 1656407943243, + "startTimestampDate": "2022-06-28T11:19:03.243", + "executionTime": 4, + "description": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "status": "FAILURE", + "testFailures": [ + { + "throwableClass": "java.lang.AssertionError", + "throwableString": "java.lang.AssertionError", + "stackTrace": "java.lang.AssertionError\r\n\tat org.junit.Assert.fail(Assert.java:87)\r\n\tat org.junit.Assert.assertTrue(Assert.java:42)\r\n\tat org.junit.Assert.assertTrue(Assert.java:53)\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.failure(TestStatuses.java:24)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "assertion" + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943247, + "startTimestampDate": "2022-06-28T11:19:03.247", + "executionTime": 0, + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "status": "OK", + "testFailures": [] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943247, + "startTimestampDate": "2022-06-28T11:19:03.247", + "executionTime": 1, + "description": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "status": "ERROR", + "testFailures": [ + { + "throwableClass": "java.lang.RuntimeException", + "throwableString": "java.lang.RuntimeException", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.error(TestStatuses.java:29)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "error" + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943248, + "startTimestampDate": "2022-06-28T11:19:03.248", + "executionTime": 3, + "description": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "status": "IGNORED_ASSUMPTION", + "testFailures": [ + { + "throwableClass": "org.junit.AssumptionViolatedException", + "throwableString": "org.junit.AssumptionViolatedException: got: , expected: is ", + "stackTrace": "org.junit.AssumptionViolatedException: got: , expected: is \r\n\tat org.junit.Assume.assumeThat(Assume.java:106)\r\n\tat org.junit.Assume.assumeTrue(Assume.java:50)\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.ignored_a(TestStatuses.java:19)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "assumption" + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943251, + "startTimestampDate": "2022-06-28T11:19:03.251", + "executionTime": 0, + "description": "ID#ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "status": "IGNORED", + "testFailures": [] + } + ], + "suiteFailures": [], + "executionEvents": [ + { + "event": "TEST_STARTED", + "description": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_FAILURE", + "description": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "failure": { + "description": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "message": null, + "trace": "java.lang.AssertionError\r\n\tat org.junit.Assert.fail(Assert.java:87)\r\n\tat org.junit.Assert.assertTrue(Assert.java:42)\r\n\tat org.junit.Assert.assertTrue(Assert.java:53)\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.failure(TestStatuses.java:24)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "java.lang.AssertionError", + "throwableClass": "java.lang.AssertionError", + "assertionViolation": true, + "assumptionViolation": false + } + }, + { + "event": "TEST_FINISHED", + "description": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_STARTED", + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_FINISHED", + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_STARTED", + "description": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_FAILURE", + "description": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "failure": { + "description": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.error(TestStatuses.java:29)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "java.lang.RuntimeException", + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false + } + }, + { + "event": "TEST_FINISHED", + "description": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_STARTED", + "description": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_IGNORED_ASSUMPTION", + "description": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "failure": { + "description": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "message": "got: , expected: is ", + "trace": "org.junit.AssumptionViolatedException: got: , expected: is \r\n\tat org.junit.Assume.assumeThat(Assume.java:106)\r\n\tat org.junit.Assume.assumeTrue(Assume.java:50)\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.ignored_a(TestStatuses.java:19)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "org.junit.AssumptionViolatedException: got: , expected: is ", + "throwableClass": "org.junit.AssumptionViolatedException", + "assertionViolation": false, + "assumptionViolation": true + } + }, + { + "event": "TEST_FINISHED", + "description": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_IGNORED", + "description": "ID#ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943253, + "startTimestampDate": "2022-06-28T11:19:03.253", + "executionTime": 1, + "description": { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", + "children": [ + { + "id": "ID#method(com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError)", + "displayName": "method(com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError)", + "methodName": "method", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", + "children": [] + } + ] + }, + "tests": [], + "suiteFailures": [ + { + "throwableClass": "java.lang.RuntimeException", + "throwableString": "java.lang.RuntimeException", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError.beforeClass(TestBeforeClassError.java:9)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)\r\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "error" + } + ], + "executionEvents": [ + { + "event": "SUITE_FAILURE", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", + "failure": { + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError.beforeClass(TestBeforeClassError.java:9)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)\r\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "java.lang.RuntimeException", + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false + } + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943254, + "startTimestampDate": "2022-06-28T11:19:03.254", + "executionTime": 1, + "description": { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams", + "children": [ + { + "id": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", + "displayName": "ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", + "methodName": "ok", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams", + "children": [] + }, + { + "id": "ID#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", + "displayName": "ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", + "methodName": "ok_sysout_syserr", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams", + "children": [] + } + ] + }, + "tests": [ + { + "forkedJvm": 0, + "startTimestamp": 1656407943255, + "startTimestampDate": "2022-06-28T11:19:03.255", + "executionTime": 0, + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", + "status": "OK", + "testFailures": [] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943255, + "startTimestampDate": "2022-06-28T11:19:03.255", + "executionTime": 0, + "description": "ID#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", + "status": "OK", + "testFailures": [] + } + ], + "suiteFailures": [], + "executionEvents": [ + { + "event": "TEST_STARTED", + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)" + }, + { + "event": "TEST_FINISHED", + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)" + }, + { + "event": "TEST_STARTED", + "description": "ID#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)" + }, + { + "event": "APPEND_STDOUT", + "content": "sysout" + }, + { + "event": "APPEND_STDERR", + "content": "syserr" + }, + { + "event": "APPEND_STDOUT", + "content": "-sysout-contd." + }, + { + "event": "APPEND_STDERR", + "content": "-syserr-contd." + }, + { + "event": "TEST_FINISHED", + "description": "ID#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)" + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943256, + "startTimestampDate": "2022-06-28T11:19:03.256", + "executionTime": 0, + "description": { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences", + "children": [ + { + "id": "ID#emitEscape(com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences)", + "displayName": "emitEscape(com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences)", + "methodName": "emitEscape", + "className": "com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences", + "children": [] + } + ] + }, + "tests": [ + { + "forkedJvm": 0, + "startTimestamp": 1656407943256, + "startTimestampDate": "2022-06-28T11:19:03.256", + "executionTime": 0, + "description": "ID#emitEscape(com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences)", + "status": "OK", + "testFailures": [] + } + ], + "suiteFailures": [], + "executionEvents": [ + { + "event": "TEST_STARTED", + "description": "ID#emitEscape(com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences)" + }, + { + "event": "APPEND_STDOUT", + "content": "stdout: foo & bar" + }, + { + "event": "TEST_FINISHED", + "description": "ID#emitEscape(com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences)" + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943261, + "startTimestampDate": "2022-06-28T11:19:03.261", + "executionTime": 3, + "description": { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription", + "children": [ + { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", + "children": [ + { + "id": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1)", + "displayName": "method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1)", + "methodName": "method1", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", + "children": [] + } + ] + }, + { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", + "children": [ + { + "id": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)", + "displayName": "method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)", + "methodName": "method1", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", + "children": [] + } + ] + }, + { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3", + "children": [ + { + "id": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)", + "displayName": "method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)", + "methodName": "method1", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3", + "children": [] + } + ] + } + ] + }, + "tests": [ + { + "forkedJvm": 0, + "startTimestamp": 1656407943262, + "startTimestampDate": "2022-06-28T11:19:03.262", + "executionTime": 0, + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)", + "status": "OK", + "testFailures": [] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943263, + "startTimestampDate": "2022-06-28T11:19:03.263", + "executionTime": 1, + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)", + "status": "ERROR", + "testFailures": [ + { + "throwableClass": "java.lang.RuntimeException", + "throwableString": "java.lang.RuntimeException", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3.method1(TestHierarchicalSuiteDescription.java:40)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "error" + } + ] + } + ], + "suiteFailures": [ + { + "throwableClass": "java.lang.RuntimeException", + "throwableString": "java.lang.RuntimeException", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1.beforeClass(TestHierarchicalSuiteDescription.java:23)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)\r\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "error" + }, + { + "throwableClass": "java.lang.RuntimeException", + "throwableString": "java.lang.RuntimeException", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2.afterClass(TestHierarchicalSuiteDescription.java:33)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunAfters.invokeMethod(RunAfters.java:46)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "error" + }, + { + "throwableClass": "java.lang.RuntimeException", + "throwableString": "java.lang.RuntimeException", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription.afterClass(TestHierarchicalSuiteDescription.java:46)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunAfters.invokeMethod(RunAfters.java:46)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "error" + } + ], + "executionEvents": [ + { + "event": "TEST_FAILURE", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", + "failure": { + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1.beforeClass(TestHierarchicalSuiteDescription.java:23)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)\r\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "java.lang.RuntimeException", + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false + } + }, + { + "event": "TEST_STARTED", + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)" + }, + { + "event": "TEST_FINISHED", + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)" + }, + { + "event": "TEST_FAILURE", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", + "failure": { + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2.afterClass(TestHierarchicalSuiteDescription.java:33)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunAfters.invokeMethod(RunAfters.java:46)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "java.lang.RuntimeException", + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false + } + }, + { + "event": "TEST_STARTED", + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)" + }, + { + "event": "TEST_FAILURE", + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)", + "failure": { + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3.method1(TestHierarchicalSuiteDescription.java:40)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "java.lang.RuntimeException", + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false + } + }, + { + "event": "TEST_FINISHED", + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)" + }, + { + "event": "SUITE_FAILURE", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription", + "failure": { + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription.afterClass(TestHierarchicalSuiteDescription.java:46)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunAfters.invokeMethod(RunAfters.java:46)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "java.lang.RuntimeException", + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false + } + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943341, + "startTimestampDate": "2022-06-28T11:19:03.341", + "executionTime": 0, + "description": { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestIgnoredSuite", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestIgnoredSuite", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestIgnoredSuite", + "children": [] + }, + "tests": [], + "suiteFailures": [], + "executionEvents": [] + } + ], + "forkedJvms": { + "0": { + "id": 0, + "jvmName": "OpenJDK 64-Bit Server VM, 25.252-b09", + "charset": "windows-1252", + "commandLine": "c:\\tools\\java\\jdk1.8\\jre\\bin\\java.exe -Dtests.prefix=tests -Dtests.seed=84784D1BB9382FB8 -Djunit4.childvm.cwd=C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\J0 -Djunit4.tempDir=C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes -Djunit4.childvm.id=0 -Djunit4.childvm.count=1 -classpath C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\dependency\\hamcrest-core-1.3.jar;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\dependency\\junit-4.13.1.jar;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\junit4-ant-2.7.10-SNAPSHOT.jar com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe -flush -eventsfile C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\junit4-J0-20220628_111903_0362909695309408241081.events @C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\junit4-J0-20220628_111903_0364223048590498217992.suites -stdin", + "systemProperties": { + "awt.toolkit": "sun.awt.windows.WToolkit", + "file.encoding": "Cp1252", + "file.encoding.pkg": "sun.io", + "file.separator": "\\", + "java.awt.graphicsenv": "sun.awt.Win32GraphicsEnvironment", + "java.awt.printerjob": "sun.awt.windows.WPrinterJob", + "java.class.path": "C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\dependency\\hamcrest-core-1.3.jar;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\dependency\\junit-4.13.1.jar;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\junit4-ant-2.7.10-SNAPSHOT.jar", + "java.class.version": "52.0", + "java.endorsed.dirs": "c:\\tools\\java\\jdk1.8\\jre\\lib\\endorsed", + "java.ext.dirs": "c:\\tools\\java\\jdk1.8\\jre\\lib\\ext;C:\\Windows\\Sun\\Java\\lib\\ext", + "java.home": "c:\\tools\\java\\jdk1.8\\jre", + "java.io.tmpdir": "C:\\Users\\dweiss\\AppData\\Local\\Temp\\", + "java.library.path": "c:\\tools\\java\\jdk1.8\\jre\\bin;C:\\Windows\\Sun\\Java\\bin;C:\\Windows\\system32;C:\\Windows;c:\\tools\\java\\jdk1.8\\bin;c:\\tools\\java\\jdk11\\bin;C:\\Python310\\Scripts\\;C:\\Python310\\;C:\\Python39\\Scripts\\;C:\\Python39\\;C:\\Tools\\Python3\\;C:\\Tools\\Python3\\Scripts\\;C:\\Tools\\Python2\\;C:\\Tools\\Python2\\Scripts;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;C:\\Program Files\\Git\\cmd;C:\\ProgramData\\chocolatey\\bin;c:\\Tools\\java\\jdk\\bin;C:\\Strawberry\\c\\bin;C:\\Strawberry\\perl\\site\\bin;C:\\Strawberry\\perl\\bin;C:\\Program Files\\dotnet\\;C:\\Program Files (x86)\\dotnet\\;C:\\Program Files (x86)\\ZeroTier\\One\\;C:\\Program Files (x86)\\Gpg4win\\..\\GnuPG\\bin;C:\\Program Files\\nodejs\\;C:\\Program Files (x86)\\sbt\\bin;C:\\Users\\dweiss\\AppData\\Local\\Microsoft\\WindowsApps;c:\\Tools\\;c:\\Tools\\java\\ant\\bin\\;c:\\Tools\\java\\maven\\bin\\;C:\\Program Files\\Oracle\\VirtualBox;C:\\Users\\dweiss\\AppData\\Roaming\\npm;C:\\Users\\dweiss\\AppData\\Local\\Google\\Cloud SDK\\google-cloud-sdk\\bin;;.", + "java.runtime.name": "OpenJDK Runtime Environment", + "java.runtime.version": "1.8.0_252-b09", + "java.specification.name": "Java Platform API Specification", + "java.specification.vendor": "Oracle Corporation", + "java.specification.version": "1.8", + "java.vendor": "AdoptOpenJDK", + "java.vendor.url": "http://java.oracle.com/", + "java.vendor.url.bug": "http://bugreport.sun.com/bugreport/", + "java.version": "1.8.0_252", + "java.vm.info": "mixed mode", + "java.vm.name": "OpenJDK 64-Bit Server VM", + "java.vm.specification.name": "Java Virtual Machine Specification", + "java.vm.specification.vendor": "Oracle Corporation", + "java.vm.specification.version": "1.8", + "java.vm.vendor": "AdoptOpenJDK", + "java.vm.version": "25.252-b09", + "junit4.childvm.count": "1", + "junit4.childvm.cwd": "C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\J0", + "junit4.childvm.id": "0", + "junit4.memory.total": "2058354688", + "junit4.pidString": "1268@DWEISS-BEAST", + "junit4.processors": "64", + "junit4.tempDir": "C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes", + "line.separator": "\r\n", + "os.arch": "amd64", + "os.name": "Windows 10", + "os.version": "10.0", + "path.separator": ";", + "sun.arch.data.model": "64", + "sun.boot.class.path": "c:\\tools\\java\\jdk1.8\\jre\\lib\\resources.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\rt.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\sunrsasign.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\jsse.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\jce.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\charsets.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\jfr.jar;c:\\tools\\java\\jdk1.8\\jre\\classes", + "sun.boot.library.path": "c:\\tools\\java\\jdk1.8\\jre\\bin", + "sun.cpu.endian": "little", + "sun.cpu.isalist": "amd64", + "sun.desktop": "windows", + "sun.io.unicode.encoding": "UnicodeLittle", + "sun.java.command": "com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe -flush -eventsfile C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\junit4-J0-20220628_111903_0362909695309408241081.events @C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\junit4-J0-20220628_111903_0364223048590498217992.suites -stdin", + "sun.java.launcher": "SUN_STANDARD", + "sun.jnu.encoding": "Cp1252", + "sun.management.compiler": "HotSpot 64-Bit Tiered Compilers", + "sun.os.patch.level": "", + "tests.prefix": "tests", + "tests.seed": "84784D1BB9382FB8", + "user.country": "US", + "user.dir": "C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\J0", + "user.home": "C:\\Users\\dweiss", + "user.language": "en", + "user.name": "dweiss", + "user.script": "", + "user.timezone": "", + "user.variant": "" + } + } + } +} \ No newline at end of file diff --git a/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/tests-output.jsonp b/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/tests-output.jsonp index 146e2f80..16ce01c9 100644 --- a/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/tests-output.jsonp +++ b/junit4-ant/src/main/resources/com/carrotsearch/ant/tasks/junit4/templates/json/tests-output.jsonp @@ -1,33 +1,220 @@ testData({ "junit4": { - "tests.seed": "B19FBD1BB1231191", + "tests.seed": "84784D1BB9382FB8", "project.name": "Nice project" }, "suites": [ { - "slave": 0, - "startTimestamp": 1331889914622, - "startTimestampDate": "2012-03-16T10:25:14.622", - "executionTime": 109, + "forkedJvm": 0, + "startTimestamp": 1656407943240, + "startTimestampDate": "2022-06-28T11:19:03.240", + "executionTime": 11, "description": { - "id": "id#com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError[0]", + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [ + { + "id": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "displayName": "failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "methodName": "failure", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [] + }, + { + "id": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "displayName": "ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "methodName": "ok", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [] + }, + { + "id": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "displayName": "error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "methodName": "error", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [] + }, + { + "id": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "displayName": "ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "methodName": "ignored_a", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [] + }, + { + "id": "ID#ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "displayName": "ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "methodName": "ignored", + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", + "children": [] + } + ] + }, + "tests": [ + { + "forkedJvm": 0, + "startTimestamp": 1656407943243, + "startTimestampDate": "2022-06-28T11:19:03.243", + "executionTime": 4, + "description": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "status": "FAILURE", + "testFailures": [ + { + "throwableClass": "java.lang.AssertionError", + "throwableString": "java.lang.AssertionError", + "stackTrace": "java.lang.AssertionError\r\n\tat org.junit.Assert.fail(Assert.java:87)\r\n\tat org.junit.Assert.assertTrue(Assert.java:42)\r\n\tat org.junit.Assert.assertTrue(Assert.java:53)\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.failure(TestStatuses.java:24)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "assertion" + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943247, + "startTimestampDate": "2022-06-28T11:19:03.247", + "executionTime": 0, + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "status": "OK", + "testFailures": [] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943247, + "startTimestampDate": "2022-06-28T11:19:03.247", + "executionTime": 1, + "description": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "status": "ERROR", + "testFailures": [ + { + "throwableClass": "java.lang.RuntimeException", + "throwableString": "java.lang.RuntimeException", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.error(TestStatuses.java:29)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "error" + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943248, + "startTimestampDate": "2022-06-28T11:19:03.248", + "executionTime": 3, + "description": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "status": "IGNORED_ASSUMPTION", + "testFailures": [ + { + "throwableClass": "org.junit.AssumptionViolatedException", + "throwableString": "org.junit.AssumptionViolatedException: got: , expected: is ", + "stackTrace": "org.junit.AssumptionViolatedException: got: , expected: is \r\n\tat org.junit.Assume.assumeThat(Assume.java:106)\r\n\tat org.junit.Assume.assumeTrue(Assume.java:50)\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.ignored_a(TestStatuses.java:19)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "kind": "assumption" + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943251, + "startTimestampDate": "2022-06-28T11:19:03.251", + "executionTime": 0, + "description": "ID#ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "status": "IGNORED", + "testFailures": [] + } + ], + "suiteFailures": [], + "executionEvents": [ + { + "event": "TEST_STARTED", + "description": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_FAILURE", + "description": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "failure": { + "description": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "message": null, + "trace": "java.lang.AssertionError\r\n\tat org.junit.Assert.fail(Assert.java:87)\r\n\tat org.junit.Assert.assertTrue(Assert.java:42)\r\n\tat org.junit.Assert.assertTrue(Assert.java:53)\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.failure(TestStatuses.java:24)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "java.lang.AssertionError", + "throwableClass": "java.lang.AssertionError", + "assertionViolation": true, + "assumptionViolation": false + } + }, + { + "event": "TEST_FINISHED", + "description": "ID#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_STARTED", + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_FINISHED", + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_STARTED", + "description": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_FAILURE", + "description": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "failure": { + "description": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.error(TestStatuses.java:29)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "java.lang.RuntimeException", + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false + } + }, + { + "event": "TEST_FINISHED", + "description": "ID#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_STARTED", + "description": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_IGNORED_ASSUMPTION", + "description": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "failure": { + "description": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", + "message": "got: , expected: is ", + "trace": "org.junit.AssumptionViolatedException: got: , expected: is \r\n\tat org.junit.Assume.assumeThat(Assume.java:106)\r\n\tat org.junit.Assume.assumeTrue(Assume.java:50)\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.ignored_a(TestStatuses.java:19)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", + "throwableString": "org.junit.AssumptionViolatedException: got: , expected: is ", + "throwableClass": "org.junit.AssumptionViolatedException", + "assertionViolation": false, + "assumptionViolation": true + } + }, + { + "event": "TEST_FINISHED", + "description": "ID#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + }, + { + "event": "TEST_IGNORED", + "description": "ID#ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)" + } + ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943253, + "startTimestampDate": "2022-06-28T11:19:03.253", + "executionTime": 1, + "description": { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", + "methodName": null, "className": "com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", - "annotations": [], "children": [ { - "id": "id#method(com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError)[1]", + "id": "ID#method(com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError)", "displayName": "method(com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError)", "methodName": "method", "className": "com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - } - ], "children": [] } ] @@ -37,104 +224,69 @@ testData({ { "throwableClass": "java.lang.RuntimeException", "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError.beforeClass(TestBeforeClassError.java:9)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError.beforeClass(TestBeforeClassError.java:9)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)\r\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", "kind": "error" } ], "executionEvents": [ { "event": "SUITE_FAILURE", - "description": "id#com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError[0]", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", "failure": { - "throwableClass": "java.lang.RuntimeException", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError.beforeClass(TestBeforeClassError.java:9)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)\r\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestBeforeClassError.beforeClass(TestBeforeClassError.java:9)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "error" + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false } } ] }, { - "slave": 0, - "startTimestamp": 1331889914744, - "startTimestampDate": "2012-03-16T10:25:14.744", - "executionTime": 2, - "description": { - "id": "id#com.carrotsearch.ant.tasks.junit4.tests.TestIgnoredSuite[1]", - "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestIgnoredSuite", - "className": "com.carrotsearch.ant.tasks.junit4.tests.TestIgnoredSuite", - "annotations": [ - { - "org.junit.Ignore": { - "value": "" - } - } - ], - "children": [] - }, - "tests": [], - "suiteFailures": [], - "executionEvents": [] - }, - { - "slave": 0, - "startTimestamp": 1331889914756, - "startTimestampDate": "2012-03-16T10:25:14.756", - "executionTime": 18, + "forkedJvm": 0, + "startTimestamp": 1656407943254, + "startTimestampDate": "2022-06-28T11:19:03.254", + "executionTime": 1, "description": { - "id": "id#com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams[0]", + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams", "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams", + "methodName": null, "className": "com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams", - "annotations": [], "children": [ { - "id": "id#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)[1]", + "id": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", "displayName": "ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", "methodName": "ok", "className": "com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - } - ], "children": [] }, { - "id": "id#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)[1]", + "id": "ID#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", "displayName": "ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", "methodName": "ok_sysout_syserr", "className": "com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - } - ], "children": [] } ] }, "tests": [ { - "slave": 0, - "startTimestamp": 1331889914769, - "startTimestampDate": "2012-03-16T10:25:14.769", - "executionTime": 1, - "description": "id#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)[1]", + "forkedJvm": 0, + "startTimestamp": 1656407943255, + "startTimestampDate": "2022-06-28T11:19:03.255", + "executionTime": 0, + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", "status": "OK", "testFailures": [] }, { - "slave": 0, - "startTimestamp": 1331889914771, - "startTimestampDate": "2012-03-16T10:25:14.771", - "executionTime": 2, - "description": "id#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)[1]", + "forkedJvm": 0, + "startTimestamp": 1656407943255, + "startTimestampDate": "2022-06-28T11:19:03.255", + "executionTime": 0, + "description": "ID#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)", "status": "OK", "testFailures": [] } @@ -143,15 +295,15 @@ testData({ "executionEvents": [ { "event": "TEST_STARTED", - "description": "id#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)[1]" + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)" }, { "event": "TEST_FINISHED", - "description": "id#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)[1]" + "description": "ID#ok(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)" }, { "event": "TEST_STARTED", - "description": "id#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)[1]" + "description": "ID#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)" }, { "event": "APPEND_STDOUT", @@ -171,332 +323,109 @@ testData({ }, { "event": "TEST_FINISHED", - "description": "id#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)[1]" + "description": "ID#ok_sysout_syserr(com.carrotsearch.ant.tasks.junit4.tests.TestSysstreams)" } ] }, { - "slave": 0, - "startTimestamp": 1331889914800, - "startTimestampDate": "2012-03-16T10:25:14.800", - "executionTime": 93, + "forkedJvm": 0, + "startTimestamp": 1656407943256, + "startTimestampDate": "2022-06-28T11:19:03.256", + "executionTime": 0, "description": { - "id": "id#com.carrotsearch.ant.tasks.junit4.tests.TestStatuses[0]", - "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", - "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", - "annotations": [], + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences", "children": [ { - "id": "id#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", - "displayName": "failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", - "methodName": "failure", - "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - } - ], - "children": [] - }, - { - "id": "id#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", - "displayName": "error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", - "methodName": "error", - "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - } - ], - "children": [] - }, - { - "id": "id#ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[2]", - "displayName": "ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", - "methodName": "ignored", - "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - }, - { - "org.junit.Ignore": { - "value": "" - } - } - ], - "children": [] - }, - { - "id": "id#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", - "displayName": "ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", - "methodName": "ok", - "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - } - ], - "children": [] - }, - { - "id": "id#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", - "displayName": "ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)", - "methodName": "ignored_a", - "className": "com.carrotsearch.ant.tasks.junit4.tests.TestStatuses", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - } - ], + "id": "ID#emitEscape(com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences)", + "displayName": "emitEscape(com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences)", + "methodName": "emitEscape", + "className": "com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences", "children": [] } ] }, "tests": [ { - "slave": 0, - "startTimestamp": 1331889914811, - "startTimestampDate": "2012-03-16T10:25:14.811", - "executionTime": 15, - "description": "id#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", - "status": "FAILURE", - "testFailures": [ - { - "throwableClass": "java.lang.AssertionError", - "throwableString": "java.lang.AssertionError", - "stackTrace": "java.lang.AssertionError\n\tat org.junit.Assert.fail(Assert.java:92)\n\tat org.junit.Assert.assertTrue(Assert.java:43)\n\tat org.junit.Assert.assertTrue(Assert.java:54)\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.failure(TestStatuses.java:24)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "assertion" - } - ] - }, - { - "slave": 0, - "startTimestamp": 1331889914829, - "startTimestampDate": "2012-03-16T10:25:14.829", - "executionTime": 14, - "description": "id#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", - "status": "ERROR", - "testFailures": [ - { - "throwableClass": "java.lang.RuntimeException", - "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.error(TestStatuses.java:29)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "error" - } - ] - }, - { - "slave": 0, - "startTimestamp": 1331889914845, - "startTimestampDate": "2012-03-16T10:25:14.845", + "forkedJvm": 0, + "startTimestamp": 1656407943256, + "startTimestampDate": "2022-06-28T11:19:03.256", "executionTime": 0, - "description": "id#ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[2]", - "status": "IGNORED", - "testFailures": [] - }, - { - "slave": 0, - "startTimestamp": 1331889914846, - "startTimestampDate": "2012-03-16T10:25:14.846", - "executionTime": 0, - "description": "id#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", + "description": "ID#emitEscape(com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences)", "status": "OK", "testFailures": [] - }, - { - "slave": 0, - "startTimestamp": 1331889914847, - "startTimestampDate": "2012-03-16T10:25:14.847", - "executionTime": 45, - "description": "id#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", - "status": "IGNORED_ASSUMPTION", - "testFailures": [ - { - "throwableClass": "org.junit.internal.AssumptionViolatedException", - "throwableString": "org.junit.internal.AssumptionViolatedException: got: \u003cfalse\u003e, expected: is \u003ctrue\u003e", - "stackTrace": "org.junit.internal.AssumptionViolatedException: got: \u003cfalse\u003e, expected: is \u003ctrue\u003e\n\tat org.junit.Assume.assumeThat(Assume.java:70)\n\tat org.junit.Assume.assumeTrue(Assume.java:39)\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.ignored_a(TestStatuses.java:19)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "assumption" - } - ] } ], "suiteFailures": [], "executionEvents": [ { "event": "TEST_STARTED", - "description": "id#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]" - }, - { - "event": "TEST_FAILURE", - "description": "id#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", - "failure": { - "throwableClass": "java.lang.AssertionError", - "throwableString": "java.lang.AssertionError", - "stackTrace": "java.lang.AssertionError\n\tat org.junit.Assert.fail(Assert.java:92)\n\tat org.junit.Assert.assertTrue(Assert.java:43)\n\tat org.junit.Assert.assertTrue(Assert.java:54)\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.failure(TestStatuses.java:24)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "assertion" - } - }, - { - "event": "TEST_FINISHED", - "description": "id#failure(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]" - }, - { - "event": "TEST_STARTED", - "description": "id#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]" - }, - { - "event": "TEST_FAILURE", - "description": "id#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", - "failure": { - "throwableClass": "java.lang.RuntimeException", - "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.error(TestStatuses.java:29)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "error" - } - }, - { - "event": "TEST_FINISHED", - "description": "id#error(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]" - }, - { - "event": "TEST_IGNORED", - "description": "id#ignored(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[2]" - }, - { - "event": "TEST_STARTED", - "description": "id#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]" + "description": "ID#emitEscape(com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences)" }, { - "event": "TEST_FINISHED", - "description": "id#ok(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]" - }, - { - "event": "TEST_STARTED", - "description": "id#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]" - }, - { - "event": "TEST_IGNORED_ASSUMPTION", - "description": "id#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]", - "failure": { - "throwableClass": "org.junit.internal.AssumptionViolatedException", - "throwableString": "org.junit.internal.AssumptionViolatedException: got: \u003cfalse\u003e, expected: is \u003ctrue\u003e", - "stackTrace": "org.junit.internal.AssumptionViolatedException: got: \u003cfalse\u003e, expected: is \u003ctrue\u003e\n\tat org.junit.Assume.assumeThat(Assume.java:70)\n\tat org.junit.Assume.assumeTrue(Assume.java:39)\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestStatuses.ignored_a(TestStatuses.java:19)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "assumption" - } + "event": "APPEND_STDOUT", + "content": "stdout: foo & bar" }, { "event": "TEST_FINISHED", - "description": "id#ignored_a(com.carrotsearch.ant.tasks.junit4.tests.TestStatuses)[1]" + "description": "ID#emitEscape(com.carrotsearch.ant.tasks.junit4.tests.EscapeSequences)" } ] }, { - "slave": 0, - "startTimestamp": 1331889915015, - "startTimestampDate": "2012-03-16T10:25:15.015", - "executionTime": 90, + "forkedJvm": 0, + "startTimestamp": 1656407943261, + "startTimestampDate": "2022-06-28T11:19:03.261", + "executionTime": 3, "description": { - "id": "id#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription[2]", + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription", "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription", + "methodName": null, "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription", - "annotations": [ - { - "org.junit.runner.RunWith": { - "value": "org.junit.runners.Suite" - } - }, - { - "org.junit.runners.Suite$SuiteClasses": { - "value": [ - "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", - "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", - "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3" - ] - } - } - ], "children": [ { - "id": "id#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1[0]", + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", + "methodName": null, "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", - "annotations": [], "children": [ { - "id": "id#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1)[1]", + "id": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1)", "displayName": "method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1)", "methodName": "method1", "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - } - ], "children": [] } ] }, { - "id": "id#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2[0]", + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", + "methodName": null, "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", - "annotations": [], "children": [ { - "id": "id#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)[1]", + "id": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)", "displayName": "method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)", "methodName": "method1", "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - } - ], "children": [] } ] }, { - "id": "id#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3[0]", + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3", "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3", + "methodName": null, "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3", - "annotations": [], "children": [ { - "id": "id#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)[1]", + "id": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)", "displayName": "method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)", "methodName": "method1", "className": "com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3", - "annotations": [ - { - "org.junit.Test": { - "timeout": 0, - "expected": "org.junit.Test$None" - } - } - ], "children": [] } ] @@ -505,26 +434,26 @@ testData({ }, "tests": [ { - "slave": 0, - "startTimestamp": 1331889915049, - "startTimestampDate": "2012-03-16T10:25:15.049", + "forkedJvm": 0, + "startTimestamp": 1656407943262, + "startTimestampDate": "2022-06-28T11:19:03.262", "executionTime": 0, - "description": "id#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)[1]", + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)", "status": "OK", "testFailures": [] }, { - "slave": 0, - "startTimestamp": 1331889915086, - "startTimestampDate": "2012-03-16T10:25:15.086", - "executionTime": 4, - "description": "id#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)[1]", + "forkedJvm": 0, + "startTimestamp": 1656407943263, + "startTimestampDate": "2022-06-28T11:19:03.263", + "executionTime": 1, + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)", "status": "ERROR", "testFailures": [ { "throwableClass": "java.lang.RuntimeException", "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3.method1(TestHierarchicalSuiteDescription.java:40)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\n\tat org.junit.runners.Suite.runChild(Suite.java:24)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3.method1(TestHierarchicalSuiteDescription.java:40)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", "kind": "error" } ] @@ -534,143 +463,180 @@ testData({ { "throwableClass": "java.lang.RuntimeException", "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1.beforeClass(TestHierarchicalSuiteDescription.java:23)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\n\tat org.junit.runners.Suite.runChild(Suite.java:24)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1.beforeClass(TestHierarchicalSuiteDescription.java:23)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)\r\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", "kind": "error" }, { "throwableClass": "java.lang.RuntimeException", "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2.afterClass(TestHierarchicalSuiteDescription.java:33)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:36)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\n\tat org.junit.runners.Suite.runChild(Suite.java:24)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2.afterClass(TestHierarchicalSuiteDescription.java:33)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunAfters.invokeMethod(RunAfters.java:46)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", "kind": "error" }, { "throwableClass": "java.lang.RuntimeException", "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription.afterClass(TestHierarchicalSuiteDescription.java:46)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:36)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", + "stackTrace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription.afterClass(TestHierarchicalSuiteDescription.java:46)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunAfters.invokeMethod(RunAfters.java:46)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", "kind": "error" } ], "executionEvents": [ { "event": "TEST_FAILURE", - "description": "id#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1[0]", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", "failure": { - "throwableClass": "java.lang.RuntimeException", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1.beforeClass(TestHierarchicalSuiteDescription.java:23)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)\r\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub1.beforeClass(TestHierarchicalSuiteDescription.java:23)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\n\tat org.junit.runners.Suite.runChild(Suite.java:24)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "error" + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false } }, { "event": "TEST_STARTED", - "description": "id#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)[1]" + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)" }, { "event": "TEST_FINISHED", - "description": "id#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)[1]" + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2)" }, { "event": "TEST_FAILURE", - "description": "id#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2[0]", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", "failure": { - "throwableClass": "java.lang.RuntimeException", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2.afterClass(TestHierarchicalSuiteDescription.java:33)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunAfters.invokeMethod(RunAfters.java:46)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub2.afterClass(TestHierarchicalSuiteDescription.java:33)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:36)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\n\tat org.junit.runners.Suite.runChild(Suite.java:24)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "error" + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false } }, { "event": "TEST_STARTED", - "description": "id#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)[1]" + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)" }, { "event": "TEST_FAILURE", - "description": "id#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)[1]", + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)", "failure": { - "throwableClass": "java.lang.RuntimeException", + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3.method1(TestHierarchicalSuiteDescription.java:40)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\r\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\r\n\tat org.junit.runners.Suite.runChild(Suite.java:27)\r\n\tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\r\n\tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3.method1(TestHierarchicalSuiteDescription.java:40)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)\n\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runners.Suite.runChild(Suite.java:128)\n\tat org.junit.runners.Suite.runChild(Suite.java:24)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "error" + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false } }, { "event": "TEST_FINISHED", - "description": "id#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)[1]" + "description": "ID#method1(com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription$Sub3)" }, { "event": "SUITE_FAILURE", - "description": "id#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription[2]", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription", "failure": { - "throwableClass": "java.lang.RuntimeException", + "description": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription", + "message": null, + "trace": "java.lang.RuntimeException\r\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription.afterClass(TestHierarchicalSuiteDescription.java:46)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\r\n\tat org.junit.internal.runners.statements.RunAfters.invokeMethod(RunAfters.java:46)\r\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)\r\n\tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.execute(ForkedMain.java:265)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMain.main(ForkedMain.java:390)\r\n\tat com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe.main(ForkedMainSafe.java:13)\r\n", "throwableString": "java.lang.RuntimeException", - "stackTrace": "java.lang.RuntimeException\n\tat com.carrotsearch.ant.tasks.junit4.tests.TestHierarchicalSuiteDescription.afterClass(TestHierarchicalSuiteDescription.java:46)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n\tat java.lang.reflect.Method.invoke(Method.java:597)\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)\n\tat org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:36)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:300)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:157)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.execute(SlaveMain.java:129)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMain.main(SlaveMain.java:202)\n\tat com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe.main(SlaveMainSafe.java:12)\n", - "kind": "error" + "throwableClass": "java.lang.RuntimeException", + "assertionViolation": false, + "assumptionViolation": false } } ] + }, + { + "forkedJvm": 0, + "startTimestamp": 1656407943341, + "startTimestampDate": "2022-06-28T11:19:03.341", + "executionTime": 0, + "description": { + "id": "ID#com.carrotsearch.ant.tasks.junit4.tests.TestIgnoredSuite", + "displayName": "com.carrotsearch.ant.tasks.junit4.tests.TestIgnoredSuite", + "methodName": null, + "className": "com.carrotsearch.ant.tasks.junit4.tests.TestIgnoredSuite", + "children": [] + }, + "tests": [], + "suiteFailures": [], + "executionEvents": [] } ], - "slaves": { + "forkedJvms": { "0": { "id": 0, - "jvmName": "Java HotSpot(TM) 64-Bit Server VM, 16.3-b01", - "charset": "UTF-8", - "commandLine": "/home/dweiss/Applications/java/jdk1.6.0_20/jre/bin/java -Drt.prefix\u003drt -Drt.seed\u003dB19FBD1BB1231191 -classpath /home/dweiss/carrot2/carrotsearch.labs/randomizedtesting/integration-ant/ant-junit4/target/test-classes:/home/dweiss/carrot2/carrotsearch.labs/randomizedtesting/integration-ant/ant-junit4/target/dependency/junit-4.10.jar:/home/dweiss/carrot2/carrotsearch.labs/randomizedtesting/integration-ant/ant-junit4/target/classes:/home/dweiss/.m2/repository/com/google/guava/guava/10.0.1/guava-10.0.1.jar:/home/dweiss/carrot2/carrotsearch.labs/randomizedtesting/runner/target/classes:/home/dweiss/.m2/repository/com/google/code/gson/gson/2.0/gson-2.0.jar:/home/dweiss/.m2/repository/commons-io/commons-io/2.1/commons-io-2.1.jar com.carrotsearch.ant.tasks.junit4.slave.SlaveMainSafe -flush @/home/dweiss/carrot2/carrotsearch.labs/randomizedtesting/integration-ant/ant-junit4/target/test-classes/junit4-slave-04421343907870964512.suites", + "jvmName": "OpenJDK 64-Bit Server VM, 25.252-b09", + "charset": "windows-1252", + "commandLine": "c:\\tools\\java\\jdk1.8\\jre\\bin\\java.exe -Dtests.prefix=tests -Dtests.seed=84784D1BB9382FB8 -Djunit4.childvm.cwd=C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\J0 -Djunit4.tempDir=C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes -Djunit4.childvm.id=0 -Djunit4.childvm.count=1 -classpath C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\dependency\\hamcrest-core-1.3.jar;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\dependency\\junit-4.13.1.jar;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\junit4-ant-2.7.10-SNAPSHOT.jar com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe -flush -eventsfile C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\junit4-J0-20220628_111903_0362909695309408241081.events @C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\junit4-J0-20220628_111903_0364223048590498217992.suites -stdin", "systemProperties": { - "file.encoding": "UTF-8", + "awt.toolkit": "sun.awt.windows.WToolkit", + "file.encoding": "Cp1252", "file.encoding.pkg": "sun.io", - "file.separator": "/", - "java.awt.graphicsenv": "sun.awt.X11GraphicsEnvironment", - "java.awt.printerjob": "sun.print.PSPrinterJob", - "java.class.path": "/home/dweiss/carrot2/carrotsearch.labs/randomizedtesting/integration-ant/ant-junit4/target/test-classes:/home/dweiss/carrot2/carrotsearch.labs/randomizedtesting/integration-ant/ant-junit4/target/dependency/junit-4.10.jar:/home/dweiss/carrot2/carrotsearch.labs/randomizedtesting/integration-ant/ant-junit4/target/classes:/home/dweiss/.m2/repository/com/google/guava/guava/10.0.1/guava-10.0.1.jar:/home/dweiss/carrot2/carrotsearch.labs/randomizedtesting/runner/target/classes:/home/dweiss/.m2/repository/com/google/code/gson/gson/2.0/gson-2.0.jar:/home/dweiss/.m2/repository/commons-io/commons-io/2.1/commons-io-2.1.jar", - "java.class.version": "50.0", - "java.endorsed.dirs": "/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/endorsed", - "java.ext.dirs": "/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/ext:/usr/java/packages/lib/ext", - "java.home": "/home/dweiss/Applications/java/jdk1.6.0_20/jre", - "java.io.tmpdir": "/tmp", - "java.library.path": "/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/amd64/server:/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/amd64:/home/dweiss/Applications/java/jdk1.6.0_20/jre/../lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib", - "java.runtime.name": "Java(TM) SE Runtime Environment", - "java.runtime.version": "1.6.0_20-b02", + "file.separator": "\\", + "java.awt.graphicsenv": "sun.awt.Win32GraphicsEnvironment", + "java.awt.printerjob": "sun.awt.windows.WPrinterJob", + "java.class.path": "C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\dependency\\hamcrest-core-1.3.jar;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\dependency\\junit-4.13.1.jar;C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\junit4-ant-2.7.10-SNAPSHOT.jar", + "java.class.version": "52.0", + "java.endorsed.dirs": "c:\\tools\\java\\jdk1.8\\jre\\lib\\endorsed", + "java.ext.dirs": "c:\\tools\\java\\jdk1.8\\jre\\lib\\ext;C:\\Windows\\Sun\\Java\\lib\\ext", + "java.home": "c:\\tools\\java\\jdk1.8\\jre", + "java.io.tmpdir": "C:\\Users\\dweiss\\AppData\\Local\\Temp\\", + "java.library.path": "c:\\tools\\java\\jdk1.8\\jre\\bin;C:\\Windows\\Sun\\Java\\bin;C:\\Windows\\system32;C:\\Windows;c:\\tools\\java\\jdk1.8\\bin;c:\\tools\\java\\jdk11\\bin;C:\\Python310\\Scripts\\;C:\\Python310\\;C:\\Python39\\Scripts\\;C:\\Python39\\;C:\\Tools\\Python3\\;C:\\Tools\\Python3\\Scripts\\;C:\\Tools\\Python2\\;C:\\Tools\\Python2\\Scripts;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;C:\\Program Files\\Git\\cmd;C:\\ProgramData\\chocolatey\\bin;c:\\Tools\\java\\jdk\\bin;C:\\Strawberry\\c\\bin;C:\\Strawberry\\perl\\site\\bin;C:\\Strawberry\\perl\\bin;C:\\Program Files\\dotnet\\;C:\\Program Files (x86)\\dotnet\\;C:\\Program Files (x86)\\ZeroTier\\One\\;C:\\Program Files (x86)\\Gpg4win\\..\\GnuPG\\bin;C:\\Program Files\\nodejs\\;C:\\Program Files (x86)\\sbt\\bin;C:\\Users\\dweiss\\AppData\\Local\\Microsoft\\WindowsApps;c:\\Tools\\;c:\\Tools\\java\\ant\\bin\\;c:\\Tools\\java\\maven\\bin\\;C:\\Program Files\\Oracle\\VirtualBox;C:\\Users\\dweiss\\AppData\\Roaming\\npm;C:\\Users\\dweiss\\AppData\\Local\\Google\\Cloud SDK\\google-cloud-sdk\\bin;;.", + "java.runtime.name": "OpenJDK Runtime Environment", + "java.runtime.version": "1.8.0_252-b09", "java.specification.name": "Java Platform API Specification", - "java.specification.vendor": "Sun Microsystems Inc.", - "java.specification.version": "1.6", - "java.vendor": "Sun Microsystems Inc.", - "java.vendor.url": "http://java.sun.com/", - "java.vendor.url.bug": "http://java.sun.com/cgi-bin/bugreport.cgi", - "java.version": "1.6.0_20", + "java.specification.vendor": "Oracle Corporation", + "java.specification.version": "1.8", + "java.vendor": "AdoptOpenJDK", + "java.vendor.url": "http://java.oracle.com/", + "java.vendor.url.bug": "http://bugreport.sun.com/bugreport/", + "java.version": "1.8.0_252", "java.vm.info": "mixed mode", - "java.vm.name": "Java HotSpot(TM) 64-Bit Server VM", + "java.vm.name": "OpenJDK 64-Bit Server VM", "java.vm.specification.name": "Java Virtual Machine Specification", - "java.vm.specification.vendor": "Sun Microsystems Inc.", - "java.vm.specification.version": "1.0", - "java.vm.vendor": "Sun Microsystems Inc.", - "java.vm.version": "16.3-b01", - "junit4.memory.total": "62259200", - "junit4.processors": "2", - "line.separator": "\n", + "java.vm.specification.vendor": "Oracle Corporation", + "java.vm.specification.version": "1.8", + "java.vm.vendor": "AdoptOpenJDK", + "java.vm.version": "25.252-b09", + "junit4.childvm.count": "1", + "junit4.childvm.cwd": "C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\J0", + "junit4.childvm.id": "0", + "junit4.memory.total": "2058354688", + "junit4.pidString": "1268@DWEISS-BEAST", + "junit4.processors": "64", + "junit4.tempDir": "C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes", + "line.separator": "\r\n", "os.arch": "amd64", - "os.name": "Linux", - "os.version": "3.0.0-16-generic", - "path.separator": ":", - "rt.prefix": "rt", - "rt.seed": "B19FBD1BB1231191", + "os.name": "Windows 10", + "os.version": "10.0", + "path.separator": ";", "sun.arch.data.model": "64", - "sun.boot.class.path": "/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/resources.jar:/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/rt.jar:/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/sunrsasign.jar:/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/jsse.jar:/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/jce.jar:/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/charsets.jar:/home/dweiss/Applications/java/jdk1.6.0_20/jre/classes", - "sun.boot.library.path": "/home/dweiss/Applications/java/jdk1.6.0_20/jre/lib/amd64", + "sun.boot.class.path": "c:\\tools\\java\\jdk1.8\\jre\\lib\\resources.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\rt.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\sunrsasign.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\jsse.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\jce.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\charsets.jar;c:\\tools\\java\\jdk1.8\\jre\\lib\\jfr.jar;c:\\tools\\java\\jdk1.8\\jre\\classes", + "sun.boot.library.path": "c:\\tools\\java\\jdk1.8\\jre\\bin", "sun.cpu.endian": "little", - "sun.cpu.isalist": "", - "sun.desktop": "gnome", + "sun.cpu.isalist": "amd64", + "sun.desktop": "windows", "sun.io.unicode.encoding": "UnicodeLittle", + "sun.java.command": "com.carrotsearch.ant.tasks.junit4.forked.ForkedMainSafe -flush -eventsfile C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\junit4-J0-20220628_111903_0362909695309408241081.events @C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\junit4-J0-20220628_111903_0364223048590498217992.suites -stdin", "sun.java.launcher": "SUN_STANDARD", - "sun.jnu.encoding": "UTF-8", - "sun.management.compiler": "HotSpot 64-Bit Server Compiler", - "sun.os.patch.level": "unknown", + "sun.jnu.encoding": "Cp1252", + "sun.management.compiler": "HotSpot 64-Bit Tiered Compilers", + "sun.os.patch.level": "", + "tests.prefix": "tests", + "tests.seed": "84784D1BB9382FB8", "user.country": "US", - "user.dir": "/home/dweiss/carrot2/carrotsearch.labs/randomizedtesting/integration-ant/ant-junit4/target/test-classes/S0", - "user.home": "/home/dweiss", + "user.dir": "C:\\Work\\randomizedtesting\\master\\junit4-ant\\target\\test-classes\\J0", + "user.home": "C:\\Users\\dweiss", "user.language": "en", "user.name": "dweiss", - "user.timezone": "" + "user.script": "", + "user.timezone": "", + "user.variant": "" } } } diff --git a/junit4-ant/src/tasks/Tasks/junit4.html b/junit4-ant/src/tasks/Tasks/junit4.html index 4790031f..c5468d7f 100644 --- a/junit4-ant/src/tasks/Tasks/junit4.html +++ b/junit4-ant/src/tasks/Tasks/junit4.html @@ -196,7 +196,7 @@

    Parameters

    tempdir Specify where to store temporary files. These temporary files include a list of suites passed - to each slave JVM so it is usually wise to just leave this attribute unset - the default is to take the value of the + to each forked JVM so it is usually wise to just leave this attribute unset - the default is to take the value of the dir attribute or the project's basedir. No @@ -230,7 +230,7 @@

    Parameters

    parallelism - The number of parallel slaves. Can be set to a constant max for the + The number of parallel forked JVMs. Can be set to a constant max for the maximum number of cores returned from Runtime.availableProcessors or auto for sensible defaults depending on the number of cores. @@ -245,7 +245,7 @@

    Parameters

    dynamicAssignmentRatio Specifies the ratio of suites moved to dynamic assignment list (job-stealing). A dynamic - assignment list dispatches suites to the first idle slave JVM. Theoretically + assignment list dispatches suites to the first idle forked JVM. Theoretically this is an optimal strategy, but it is usually better to have some static assignments to avoid communication costs. @@ -255,7 +255,7 @@

    Parameters

    The list of dynamic assignments is sorted by decreasing cost (always) and is inherently prone to race conditions in distributing suites. Should there be an error based on suite-dependency it will not be directly repeatable. In such - case use the per-slave-jvm list of suites file dumped to disk for each slave JVM. + case use the per-forked-jvm list of suites file dumped to disk for each forked JVM. See leaveTemporary attribute. No; default is '0.25' (25% of all suites are assigned dynamically). @@ -267,7 +267,7 @@

    Parameters

    Specify random seed for anything that is randomized in junit4. The order of suites execution and suite-JVM assignments are a result of this seed for example. -

    The master seed is also passed to slave JVMs as a system property (to bootstrap randomized runner).

    +

    The main seed is also passed to forked JVMs as a system property (to bootstrap randomized runner).

    No; default is a randomly generated seed. @@ -282,10 +282,10 @@

    Parameters

    - shuffleOnSlave + shuffleOnForkedJvm Predictably shuffle tests order after balancing. This will help in spreading - lighter and heavier tests over a single slave's execution timeline while + lighter and heavier tests over a single forked JVM execution timeline while still keeping the same tests order depending on the seed. See nested elements for configuring load balancers. @@ -658,7 +658,7 @@

    Load balancing of test suites

    Capturing original JVM output

    -

    JUnit4 has been designed to run reports and aggregation of test events on the master +

    JUnit4 has been designed to run reports and aggregation of test events on the main JVM, not on the forked JVMs. This slightly complicates things when diagnostic JVM messages are used because these messages are printed directly to original stream descriptors by the JVM, bypassing System.out or System.err substitutions.

    diff --git a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/TestEventBusSanityCheck.java b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/TestEventBusSanityCheck.java index d943e725..05759671 100644 --- a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/TestEventBusSanityCheck.java +++ b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/TestEventBusSanityCheck.java @@ -25,7 +25,7 @@ @ThreadLeakScope(Scope.SUITE) @ThreadLeakLingering(linger = 1000) public class TestEventBusSanityCheck extends RandomizedTest { - static class SlaveIdle { + static class ForkedJvmIdle { public void finished() { sleep(randomIntBetween(1, 50)); } @@ -53,7 +53,7 @@ public void testArrayQueueReentrance() throws Exception { volatile Thread foo; @Subscribe - public void onSlaveIdle(SlaveIdle slave) { + public void onForkedJvmIdle(ForkedJvmIdle forkedJvmIdle) { final Thread other = foo; if (other != null) { hadErrors.set(true); @@ -63,10 +63,10 @@ public void onSlaveIdle(SlaveIdle slave) { foo = Thread.currentThread(); if (stealingQueue.isEmpty()) { - slave.finished(); + forkedJvmIdle.finished(); } else { String suiteName = stealingQueue.pop(); - slave.newSuite(suiteName); + forkedJvmIdle.newSuite(suiteName); } foo = null; @@ -75,17 +75,17 @@ public void onSlaveIdle(SlaveIdle slave) { // stress. ExecutorService executor = Executors.newCachedThreadPool(); - final List> slaves = new ArrayList<>(); + final List> forkedJvms = new ArrayList<>(); for (int i = 0; i < randomIntBetween(1, 10); i++) { - slaves.add(new Callable() { + forkedJvms.add(new Callable() { @Override public Void call() throws Exception { - aggregatedBus.post(new SlaveIdle()); + aggregatedBus.post(new ForkedJvmIdle()); return null; } }); } - for (Future f : executor.invokeAll(slaves)) { + for (Future f : executor.invokeAll(forkedJvms)) { f.get(); } executor.shutdown(); diff --git a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestCrashesAndExceptions.java b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestCrashesAndExceptions.java index 3fa34d43..f6e6f296 100644 --- a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestCrashesAndExceptions.java +++ b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestCrashesAndExceptions.java @@ -8,8 +8,8 @@ public class TestCrashesAndExceptions extends JUnit4XmlTestBase { @Test - public void slavehanging() { - executeTarget("slavehanging"); + public void forkedjvmhanging() { + executeTarget("forkedjvmhanging"); assertLogContains("Caused by: java.lang.ArithmeticException"); } diff --git a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestShutdownHookDeadlock.java b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestShutdownHookDeadlock.java index d1cecd1e..071df556 100644 --- a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestShutdownHookDeadlock.java +++ b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestShutdownHookDeadlock.java @@ -6,7 +6,7 @@ public class TestShutdownHookDeadlock extends JUnit4XmlTestBase { @Test - public void slavehanging() { + public void forkedjvmhanging() { long start = System.currentTimeMillis(); executeForkedTarget("shutdownhook", 120 * 1000L); long end = System.currentTimeMillis(); diff --git a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestTextReport.java b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestTextReport.java index 435c5ff4..fa578362 100644 --- a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestTextReport.java +++ b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestTextReport.java @@ -98,7 +98,7 @@ public void filtertrace_default() { assertLogDoesNotContain("at sun.reflect."); assertLogDoesNotContain("at java.lang.reflect.Method"); assertLogDoesNotContain("at org.junit.runners."); - assertLogDoesNotContain("at com.carrotsearch.ant.tasks.junit4.slave.SlaveMain"); + assertLogDoesNotContain("at com.carrotsearch.ant.tasks.junit4.forked.ForkedMain"); } @Test @@ -107,7 +107,7 @@ public void filtertrace_custom() { assertLogContains("java.lang.reflect.Method"); assertLogDoesNotContain("at org.junit."); - assertLogDoesNotContain(".SlaveMain."); + assertLogDoesNotContain(".ForkedMain."); } @Test diff --git a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestUnhandledSlaveFailure.java b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestUnhandledForkedJvmFailure.java similarity index 54% rename from junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestUnhandledSlaveFailure.java rename to junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestUnhandledForkedJvmFailure.java index 5f73cac8..aee945db 100644 --- a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestUnhandledSlaveFailure.java +++ b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/it/TestUnhandledForkedJvmFailure.java @@ -6,10 +6,10 @@ import com.carrotsearch.ant.tasks.junit4.tests.FireUnhandledRunnerException; -public class TestUnhandledSlaveFailure extends JUnit4XmlTestBase { +public class TestUnhandledForkedJvmFailure extends JUnit4XmlTestBase { @Test - public void checkSlaveMainFailure() throws IOException { - super.expectBuildExceptionContaining("slavemainfailure", "process threw an exception"); + public void checkForkedMainFailure() throws IOException { + super.expectBuildExceptionContaining("forkedmainfailure", "process threw an exception"); assertLogContains(FireUnhandledRunnerException.EXCEPTION_MESSAGE); } } diff --git a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/FireUnhandledRunnerException.java b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/FireUnhandledRunnerException.java index 11856df3..e93fc731 100644 --- a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/FireUnhandledRunnerException.java +++ b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/FireUnhandledRunnerException.java @@ -2,13 +2,13 @@ import org.junit.Test; -import com.carrotsearch.ant.tasks.junit4.slave.SlaveMain; +import com.carrotsearch.ant.tasks.junit4.forked.ForkedMain; public class FireUnhandledRunnerException { public static final String EXCEPTION_MESSAGE = "BAMBOOOOOCHA!"; @Test public void polluteRunner() { - System.setProperty(SlaveMain.SYSPROP_FIRERUNNERFAILURE, EXCEPTION_MESSAGE); + System.setProperty(ForkedMain.SYSPROP_FIRERUNNERFAILURE, EXCEPTION_MESSAGE); } } diff --git a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/SlaveHangingBackgroundThreads.java b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/ForkedJvmHangingBackgroundThreads.java similarity index 93% rename from junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/SlaveHangingBackgroundThreads.java rename to junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/ForkedJvmHangingBackgroundThreads.java index 053476e1..1a502062 100644 --- a/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/SlaveHangingBackgroundThreads.java +++ b/junit4-ant/src/test/java/com/carrotsearch/ant/tasks/junit4/tests/ForkedJvmHangingBackgroundThreads.java @@ -5,7 +5,7 @@ import org.junit.Test; -public class SlaveHangingBackgroundThreads { +public class ForkedJvmHangingBackgroundThreads { static { final CountDownLatch latch = new CountDownLatch(1); new Thread("background-non-daemon") { diff --git a/junit4-ant/src/test/resources/junit4.xml b/junit4-ant/src/test/resources/junit4.xml index a8472ab7..d8e3a8ac 100644 --- a/junit4-ant/src/test/resources/junit4.xml +++ b/junit4-ant/src/test/resources/junit4.xml @@ -24,7 +24,7 @@ - + @@ -637,10 +637,10 @@ - + - + @@ -931,7 +931,7 @@ - + @@ -1074,7 +1074,7 @@ - + @@ -1096,7 +1096,7 @@ - + @@ -1111,7 +1111,7 @@ - + @@ -1245,10 +1245,7 @@ - + @@ -1266,7 +1263,7 @@ - + diff --git a/junit4-maven-plugin/src/main/java/com/carrotsearch/maven/plugins/junit4/JUnit4Mojo.java b/junit4-maven-plugin/src/main/java/com/carrotsearch/maven/plugins/junit4/JUnit4Mojo.java index 05c8c803..45fcfb7d 100644 --- a/junit4-maven-plugin/src/main/java/com/carrotsearch/maven/plugins/junit4/JUnit4Mojo.java +++ b/junit4-maven-plugin/src/main/java/com/carrotsearch/maven/plugins/junit4/JUnit4Mojo.java @@ -86,7 +86,7 @@ public class JUnit4Mojo extends AbstractMojo { private MavenProject project; /** - * Base directory to invoke slave VMs in. Also note isolateWorkingDirectories + * Base directory to invoke forked VMs in. Also note isolateWorkingDirectories * parameter. */ @Parameter( @@ -135,12 +135,23 @@ public class JUnit4Mojo extends AbstractMojo { /** * Predictably shuffle tests order after balancing. This will help in spreading - * lighter and heavier tests over a single slave's execution timeline while + * lighter and heavier tests over a single forked JVM execution timeline while * still keeping the same tests order depending on the seed. + * + * @deprecated Use {@link #shuffleOnForkedJvm} */ @Parameter(defaultValue = "true") - private boolean shuffleOnSlave = JUnit4.DEFAULT_SHUFFLE_ON_SLAVE; - + @Deprecated + private boolean shuffleOnSlave = JUnit4.DEFAULT_SHUFFLE_ON_FORKED_JVM; + + /** + * Predictably shuffle tests order after balancing. This will help in spreading + * lighter and heavier tests over a single forked JVM execution timeline while + * still keeping the same tests order depending on the seed. + */ + @Parameter(defaultValue = "true") + private boolean shuffleOnForkedJvm = JUnit4.DEFAULT_SHUFFLE_ON_FORKED_JVM; + /** * Prints the summary of all executed, ignored etc. tests at the end. */ @@ -182,7 +193,7 @@ public class JUnit4Mojo extends AbstractMojo { /** * Specifies the ratio of suites moved to dynamic assignment list. A dynamic - * assignment list dispatches suites to the first idle slave JVM. Theoretically + * assignment list dispatches suites to the first idle forked JVM. Theoretically * this is an optimal strategy, but it is usually better to have some static assignments * to avoid communication costs. * @@ -192,7 +203,7 @@ public class JUnit4Mojo extends AbstractMojo { *

    The list of dynamic assignments is sorted by decreasing cost (always) and * is inherently prone to race conditions in distributing suites. Should there * be an error based on suite-dependency it will not be directly repeatable. In such - * case use the per-slave-jvm list of suites file dumped to disk for each slave JVM. + * case use the per-forked-jvm list of suites file dumped to disk for each forked JVM. * (see leaveTemporary parameter). */ @Parameter(defaultValue = "0.25") @@ -608,7 +619,7 @@ private void populateJUnitElement(Element junit4) { if (statsPropertyPrefix != null) junit4.addAttribute("statsPropertyPrefix", statsPropertyPrefix); if (onNonEmptyWorkDirectory != null) junit4.addAttribute("onNonEmptyWorkDirectory", onNonEmptyWorkDirectory); - junit4.addAttribute("shuffleOnSlave", Boolean.toString(shuffleOnSlave)); + junit4.addAttribute("shuffleOnForkedJvm", Boolean.toString(shuffleOnSlave && shuffleOnForkedJvm)); junit4.addAttribute("printSummary", Boolean.toString(printSummary)); junit4.addAttribute("isolateWorkingDirectories", Boolean.toString(isolateWorkingDirectories)); junit4.addAttribute("haltOnFailure", Boolean.toString(haltOnFailure)); diff --git a/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/MixWithSuiteName.java b/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/MixWithSuiteName.java index 8ee997c1..085303de 100644 --- a/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/MixWithSuiteName.java +++ b/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/MixWithSuiteName.java @@ -4,7 +4,7 @@ /** * A {@link SeedDecorator} to be used with {@link SeedDecorators} annotation - * to modify the master {@link Randomness} with a hash off the suite's class name. + * to modify the main {@link Randomness} with a hash off the suite's class name. */ public class MixWithSuiteName implements SeedDecorator { private long xorHash; diff --git a/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedContext.java b/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedContext.java index c29a16d0..2395df17 100644 --- a/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedContext.java +++ b/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedContext.java @@ -80,7 +80,7 @@ long getRunnerSeed() { } /** - * Returns the runner's master seed, formatted. + * Returns the runner's main seed, formatted. */ public String getRunnerSeedAsString() { checkDisposed(); diff --git a/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedRunner.java b/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedRunner.java index a11d5891..7c5a1bc1 100644 --- a/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedRunner.java +++ b/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/RandomizedRunner.java @@ -104,7 +104,7 @@ * methods declared in superclasses are called after methods declared in subclasses, *

  • {@link BeforeClass}, {@link Before}, {@link AfterClass}, {@link After} * methods declared within the same class are called in randomized order - * derived from the master seed (repeatable with the same seed),
  • + * derived from the main seed (repeatable with the same seed), *
* *

Deviations from "standard" JUnit: @@ -223,11 +223,11 @@ public Class getTestClass() { /** The class with test methods (suite). */ private final Class suiteClass; - /** The runner's seed (master). */ + /** The runner's seed (main seed). */ final Randomness runnerRandomness; /** - * If {@link SysGlobals#SYSPROP_RANDOM_SEED} property is used with two arguments (master:method) + * If {@link SysGlobals#SYSPROP_RANDOM_SEED} property is used with two arguments (main:method) * then this field contains method-level override. */ private Randomness testCaseRandomnessOverride; @@ -324,7 +324,7 @@ public RandomizedRunner(Class testClass) throws InitializationError { // behavior slightly. this.containerRunner = detectContainer(); - // Initialize the runner's master seed/ randomness source. + // Initialize the runner's main seed/ randomness source. { List decorators = new ArrayList(); for (SeedDecorators decAnn : getAnnotationsFromClassHierarchy(testClass, SeedDecorators.class)) { @@ -929,7 +929,7 @@ private Statement withClassRules(Statement s) { } /** - * Runs a single test in the "master" test thread. + * Runs a single test in the "main" test thread. */ void runSingleTest(final RunNotifier notifier, final TestCandidate c, diff --git a/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/annotations/SeedDecorators.java b/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/annotations/SeedDecorators.java index 45926fec..2cebfce4 100644 --- a/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/annotations/SeedDecorators.java +++ b/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/annotations/SeedDecorators.java @@ -5,12 +5,12 @@ import com.carrotsearch.randomizedtesting.SeedDecorator; /** - * Allows modifying the master seed (before the suite is started). + * Allows modifying the main seed (before the suite is started). * - *

Use this annotation when you want to perturb or modify the master seed. This may be + *

Use this annotation when you want to perturb or modify the main seed. This may be * useful if there are decisions taken in static contexts of multiple suites. In such a case * these decisions would always be identical (because at static context level the seed is - * always derived from the same master). With a {@link SeedDecorator} one can perturb + * always derived from the same main seed). With a {@link SeedDecorator} one can perturb * the seed for every suite. * *