aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java59
1 files changed, 56 insertions, 3 deletions
diff --git a/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java b/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java
index e3c1069403..dfd14d480e 100644
--- a/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java
+++ b/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
@@ -89,12 +90,19 @@ public class ParallelEvaluatorTest {
}
private ParallelEvaluator makeEvaluator(ProcessableGraph graph,
- ImmutableMap<SkyFunctionName, ? extends SkyFunction> builders, boolean keepGoing) {
+ ImmutableMap<SkyFunctionName, ? extends SkyFunction> builders, boolean keepGoing,
+ Predicate<Event> storedEventFilter) {
Version oldGraphVersion = graphVersion;
graphVersion = graphVersion.next();
return new ParallelEvaluator(graph, oldGraphVersion,
- builders, reporter, new MemoizingEvaluator.EmittedEventState(), keepGoing,
- 150, revalidationReceiver, new DirtyKeyTrackerImpl());
+ builders, reporter, new MemoizingEvaluator.EmittedEventState(), storedEventFilter,
+ keepGoing, 150, revalidationReceiver, new DirtyKeyTrackerImpl());
+ }
+
+ private ParallelEvaluator makeEvaluator(ProcessableGraph graph,
+ ImmutableMap<SkyFunctionName, ? extends SkyFunction> builders, boolean keepGoing) {
+ return makeEvaluator(graph, builders, keepGoing,
+ InMemoryMemoizingEvaluator.DEFAULT_STORED_EVENT_FILTER);
}
/** Convenience method for eval-ing a single value. */
@@ -457,6 +465,51 @@ public class ParallelEvaluatorTest {
}
@Test
+ public void storedEventFilter() throws Exception {
+ graph = new InMemoryGraph();
+ SkyKey a = GraphTester.toSkyKey("a");
+ final AtomicBoolean evaluated = new AtomicBoolean(false);
+ tester.getOrCreate(a).setBuilder(new SkyFunction() {
+ @Nullable
+ @Override
+ public SkyValue compute(SkyKey skyKey, Environment env) {
+ evaluated.set(true);
+ env.getListener().handle(Event.error(null, "boop"));
+ env.getListener().handle(Event.warn(null, "beep"));
+ return new StringValue("a");
+ }
+
+ @Nullable
+ @Override
+ public String extractTag(SkyKey skyKey) {
+ return null;
+ }
+ });
+ ParallelEvaluator evaluator = makeEvaluator(graph,
+ ImmutableMap.of(GraphTester.NODE_TYPE, tester.createDelegatingFunction()),
+ /*keepGoing=*/false, new Predicate<Event>() {
+ @Override
+ public boolean apply(Event event) {
+ return event.getKind() == EventKind.ERROR;
+ }
+ });
+ evaluator.eval(ImmutableList.of(a));
+ assertTrue(evaluated.get());
+ JunitTestUtils.assertEventCount(2, eventCollector);
+ JunitTestUtils.assertContainsEvent(eventCollector, "boop");
+ JunitTestUtils.assertContainsEvent(eventCollector, "beep");
+ eventCollector.clear();
+ evaluator = makeEvaluator(graph,
+ ImmutableMap.of(GraphTester.NODE_TYPE, tester.createDelegatingFunction()),
+ /*keepGoing=*/false);
+ evaluated.set(false);
+ evaluator.eval(ImmutableList.of(a));
+ assertFalse(evaluated.get());
+ JunitTestUtils.assertEventCount(1, eventCollector);
+ JunitTestUtils.assertContainsEvent(eventCollector, "boop");
+ }
+
+ @Test
public void shouldCreateErrorValueWithRootCause() throws Exception {
graph = new InMemoryGraph();
set("a", "a");