diff options
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.java | 36 |
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(); |