aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestCaseNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestCaseNode.java')
-rw-r--r--src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestCaseNode.java36
1 files changed, 26 insertions, 10 deletions
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestCaseNode.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestCaseNode.java
index 74ab90b090..50cb8b7e83 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestCaseNode.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestCaseNode.java
@@ -16,15 +16,11 @@ package com.google.testing.junit.runner.model;
import static com.google.testing.junit.runner.util.TestPropertyExporter.INITIAL_INDEX_FOR_REPEATED_PROPERTY;
-import com.google.common.collect.ConcurrentHashMultiset;
-import com.google.common.collect.LinkedListMultimap;
-import com.google.common.collect.ListMultimap;
-import com.google.common.collect.Multimaps;
-import com.google.common.collect.Multiset;
import com.google.testing.junit.runner.model.TestResult.Status;
import com.google.testing.junit.runner.util.TestPropertyExporter;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Queue;
@@ -39,10 +35,10 @@ import org.junit.runner.Description;
class TestCaseNode extends TestNode implements TestPropertyExporter.Callback {
private final TestSuiteNode parent;
private final Map<String, String> properties = new ConcurrentHashMap<>();
- private final Multiset<String> repeatedPropertyNames = ConcurrentHashMultiset.create();
+ private final Map<String, Integer> repeatedPropertyNamesToRepetitions = new HashMap<>();
private final Queue<Throwable> globalFailures = new ConcurrentLinkedQueue<>();
- private final ListMultimap<Description, Throwable> dynamicTestToFailures =
- Multimaps.synchronizedListMultimap(LinkedListMultimap.<Description, Throwable>create());
+ private final ConcurrentHashMap<Description, List<Throwable>> dynamicTestToFailures =
+ new ConcurrentHashMap<>();
@Nullable private volatile TestInterval runTimeInterval = null;
private volatile State state = State.INITIAL;
@@ -117,11 +113,12 @@ class TestCaseNode extends TestNode implements TestPropertyExporter.Callback {
@Override
public void dynamicTestFailure(Description test, Throwable throwable, long now) {
compareAndSetState(State.INITIAL, State.FINISHED, now);
- dynamicTestToFailures.put(test, throwable);
+ addThrowableToDynamicTestToFailures(test, throwable);
}
private String getRepeatedPropertyName(String name) {
- int index = repeatedPropertyNames.add(name, 1) + INITIAL_INDEX_FOR_REPEATED_PROPERTY;
+ int index = addNameToRepeatedPropertyNamesAndGetRepetitionsNr(name)
+ + INITIAL_INDEX_FOR_REPEATED_PROPERTY;
return name + index;
}
@@ -130,6 +127,25 @@ class TestCaseNode extends TestNode implements TestPropertyExporter.Callback {
return true;
}
+ private synchronized void addThrowableToDynamicTestToFailures(
+ Description test, Throwable throwable) {
+ List<Throwable> throwables = dynamicTestToFailures.get(test);
+ if (throwables == null) {
+ throwables = new ArrayList<Throwable>();
+ dynamicTestToFailures.put(test, throwables);
+ }
+ throwables.add(throwable);
+ }
+
+ private synchronized int addNameToRepeatedPropertyNamesAndGetRepetitionsNr(String name) {
+ Integer previousRepetitionsNr = repeatedPropertyNamesToRepetitions.get(name);
+ if (previousRepetitionsNr == null) {
+ previousRepetitionsNr = 0;
+ }
+ repeatedPropertyNamesToRepetitions.put(name, previousRepetitionsNr + 1);
+ return previousRepetitionsNr;
+ }
+
private synchronized boolean compareAndSetState(State fromState, State toState, long now) {
if (fromState == null || toState == null || state == null) {
throw new NullPointerException();