aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Nathan Harmata <nharmata@google.com>2015-03-27 01:47:10 +0000
committerGravatar Lukacs Berki <lberki@google.com>2015-03-27 13:12:28 +0000
commitbd0174f33405775ad7d9f4f9c57ccf3643be429f (patch)
treea05454e23a4be925b4f93fa971d9085fe7d75126 /src/test/java/com/google/devtools/build
parent1deaf23afc39fe4ba3beecb3000e5e50f1f0c1f8 (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.java40
-rw-r--r--src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java6
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()) {