diff options
author | Nathan Harmata <nharmata@google.com> | 2015-03-27 01:47:10 +0000 |
---|---|---|
committer | Lukacs Berki <lberki@google.com> | 2015-03-27 13:12:28 +0000 |
commit | bd0174f33405775ad7d9f4f9c57ccf3643be429f (patch) | |
tree | a05454e23a4be925b4f93fa971d9085fe7d75126 /src/test/java/com/google/devtools/build | |
parent | 1deaf23afc39fe4ba3beecb3000e5e50f1f0c1f8 (diff) |
Fixed up test that assumed a certain order in which deps, within the same dependency group, were checked for dirtiness.
--
MOS_MIGRATED_REVID=89658366
Diffstat (limited to 'src/test/java/com/google/devtools/build')
-rw-r--r-- | src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java | 40 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java | 6 |
2 files changed, 35 insertions, 11 deletions
diff --git a/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java b/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java index 71f658309f..dbab08cfc0 100644 --- a/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java +++ b/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java @@ -13,7 +13,12 @@ // limitations under the License. package com.google.devtools.build.skyframe; +import com.google.common.collect.Lists; +import com.google.devtools.build.lib.util.GroupedList; +import com.google.devtools.build.lib.util.GroupedList.GroupedListHelper; + import java.util.Collection; +import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Set; @@ -21,6 +26,14 @@ import java.util.TreeSet; /** {@link NotifyingInMemoryGraph} that returns reverse deps ordered alphabetically. */ public class DeterministicInMemoryGraph extends NotifyingInMemoryGraph { + private static final Comparator<SkyKey> ALPHABETICAL_SKYKEY_COMPARATOR = + new Comparator<SkyKey>() { + @Override + public int compare(SkyKey o1, SkyKey o2) { + return o1.toString().compareTo(o2.toString()); + } + }; + public DeterministicInMemoryGraph(Listener listener) { super(listener); } @@ -43,16 +56,10 @@ public class DeterministicInMemoryGraph extends NotifyingInMemoryGraph { super(myKey); } - final Comparator<SkyKey> valueEntryComparator = new Comparator<SkyKey>() { - @Override - public int compare(SkyKey o1, SkyKey o2) { - return o1.toString().compareTo(o2.toString()); - } - }; @SuppressWarnings("unchecked") @Override public synchronized Iterable<SkyKey> getReverseDeps() { - TreeSet<SkyKey> result = new TreeSet<SkyKey>(valueEntryComparator); + TreeSet<SkyKey> result = new TreeSet<SkyKey>(ALPHABETICAL_SKYKEY_COMPARATOR); if (reverseDeps instanceof List) { result.addAll((Collection<? extends SkyKey>) reverseDeps); } else { @@ -63,9 +70,26 @@ public class DeterministicInMemoryGraph extends NotifyingInMemoryGraph { @Override public synchronized Set<SkyKey> getInProgressReverseDeps() { - TreeSet<SkyKey> result = new TreeSet<SkyKey>(valueEntryComparator); + TreeSet<SkyKey> result = new TreeSet<SkyKey>(ALPHABETICAL_SKYKEY_COMPARATOR); result.addAll(buildingState.getReverseDepsToSignal()); return result; } + + @Override + public synchronized void addTemporaryDirectDeps(GroupedListHelper<SkyKey> helper) { + GroupedList<SkyKey> groupedList = new GroupedList<>(); + groupedList.append(helper); + GroupedListHelper<SkyKey> orderedHelper = new GroupedListHelper<>(); + for (Iterable<SkyKey> group : groupedList) { + orderedHelper.startGroup(); + List<SkyKey> orderedGroup = Lists.newArrayList(group); + Collections.sort(orderedGroup, ALPHABETICAL_SKYKEY_COMPARATOR); + for (SkyKey dep : orderedGroup) { + orderedHelper.add(dep); + } + orderedHelper.endGroup(); + } + super.addTemporaryDirectDeps(orderedHelper); + } } } diff --git a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java index 67a22ccfe4..230cae00b2 100644 --- a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java @@ -1363,14 +1363,14 @@ public class MemoizingEvaluatorTest { // Value to be built. It will be signaled to rebuild before it has finished checking its deps. final SkyKey top = GraphTester.toSkyKey("top"); // Dep that blocks before it acknowledges being added as a dep by top, so the firstKey value has - // time to signal top. - final SkyKey slowAddingDep = GraphTester.toSkyKey("dep"); + // time to signal top. (Importantly its key is alphabetically after 'firstKey'). + final SkyKey slowAddingDep = GraphTester.toSkyKey("slowDep"); // Don't perform any blocking on the first build. final AtomicBoolean delayTopSignaling = new AtomicBoolean(false); final CountDownLatch topSignaled = new CountDownLatch(1); final CountDownLatch topRestartedBuild = new CountDownLatch(1); final TrackingAwaiter trackingAwaiter = new TrackingAwaiter(); - setGraphForTesting(new NotifyingInMemoryGraph(new Listener() { + setGraphForTesting(new DeterministicInMemoryGraph(new Listener() { @Override public void accept(SkyKey key, EventType type, Order order, Object context) { if (!delayTopSignaling.get()) { |