diff options
author | Janak Ramakrishnan <janakr@google.com> | 2015-09-22 17:37:10 +0000 |
---|---|---|
committer | Lukacs Berki <lberki@google.com> | 2015-09-23 10:31:45 +0000 |
commit | 5877b8b39a7d88f4501ab1736f8ac2fe65431579 (patch) | |
tree | 946f1ee782e403e9de737a63ee66f79c0e9432df /src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java | |
parent | 095190962d6ddf91bd8378ff7fe4e0543f74091f (diff) |
Don't remove reverse deps until node is known to be changed. This helps avoid mutating the deps of nodes that are still going to be deps after evaluation is finished.
--
MOS_MIGRATED_REVID=103659429
Diffstat (limited to 'src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java')
-rw-r--r-- | src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java b/src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java index 623e08874c..5b5790fdee 100644 --- a/src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java @@ -126,6 +126,10 @@ public class EagerInvalidatorTest { throw new UnsupportedOperationException("Sublcasses must override"); } + protected boolean reverseDepsPresent() { + throw new UnsupportedOperationException("Subclasses must override"); + } + // Convenience method for eval-ing a single value. protected SkyValue eval(boolean keepGoing, SkyKey key) throws InterruptedException { SkyKey[] keys = { key }; @@ -349,10 +353,20 @@ public class EagerInvalidatorTest { assertTrue(isInvalidated(skyKey("ab"))); assertTrue(isInvalidated(skyKey("abc"))); - // The reverse deps to ab and ab_c should have been removed. - assertThat(graph.get(skyKey("a")).getReverseDeps()).isEmpty(); - assertThat(graph.get(skyKey("b")).getReverseDeps()).containsExactly(skyKey("bc")); - assertThat(graph.get(skyKey("c")).getReverseDeps()).containsExactly(skyKey("bc")); + // The reverse deps to ab and ab_c should have been removed if reverse deps are cleared. + Set<SkyKey> reverseDeps = new HashSet<>(); + if (reverseDepsPresent()) { + reverseDeps.add(skyKey("ab")); + } + assertThat(graph.get(skyKey("a")).getReverseDeps()).containsExactlyElementsIn(reverseDeps); + reverseDeps.add(skyKey("bc")); + assertThat(graph.get(skyKey("b")).getReverseDeps()).containsExactlyElementsIn(reverseDeps); + reverseDeps.clear(); + if (reverseDepsPresent()) { + reverseDeps.add(skyKey("ab_c")); + } + reverseDeps.add(skyKey("bc")); + assertThat(graph.get(skyKey("c")).getReverseDeps()).containsExactlyElementsIn(reverseDeps); } @Test @@ -612,6 +626,11 @@ public class EagerInvalidatorTest { return InvalidationType.DELETED; } + @Override + protected boolean reverseDepsPresent() { + return false; + } + @Test public void dirtyKeyTrackerWorksWithDeletingInvalidator() throws Exception { setupInvalidatableGraph(); @@ -628,7 +647,7 @@ public class EagerInvalidatorTest { Iterable<SkyKey> diff = ImmutableList.of(skyKey("a")); Preconditions.checkNotNull(EagerInvalidator.createDeletingVisitorIfNeeded(graph, diff, receiver, state, true, dirtyKeyTracker)).run(); - assertThat(dirtyKeyTracker.getDirtyKeys()).containsExactly(skyKey("ab")); + assertThat(dirtyKeyTracker.getDirtyKeys()).isEmpty(); } } @@ -670,6 +689,11 @@ public class EagerInvalidatorTest { return InvalidationType.CHANGED; } + @Override + protected boolean reverseDepsPresent() { + return true; + } + @Test public void dirtyKeyTrackerWorksWithDirtyingInvalidator() throws Exception { setupInvalidatableGraph(); |