aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-01-29 14:28:29 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-29 14:30:29 -0800
commitac03ccfc4377d4de0385ef05702289c9fa285d69 (patch)
tree93ff6aee563079b13a8c9a385c2f1849ae50ec90 /src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java
parente046d3a301c328cb5621d715545a996f86685b82 (diff)
Use nested set cache in key computation for CustomCommandLine.
RELNOTES: None PiperOrigin-RevId: 183727976
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java b/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java
index 9fa980ce37..975f97c972 100644
--- a/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java
@@ -17,6 +17,8 @@ import static com.google.common.truth.Truth.assertThat;
import com.google.common.collect.HashMultiset;
import com.google.common.collect.Multiset;
+import com.google.devtools.build.lib.analysis.actions.CommandLineItem;
+import com.google.devtools.build.lib.analysis.actions.CommandLineItem.MapFn;
import com.google.devtools.build.lib.util.Fingerprint;
import org.junit.Before;
import org.junit.Test;
@@ -28,11 +30,11 @@ import org.junit.runners.JUnit4;
public class NestedSetFingerprintCacheTest {
private class TestNestedSetFingerprintCache extends NestedSetFingerprintCache {
- private final Multiset<Object> fingerprinted = HashMultiset.create();
+ private Multiset<Object> fingerprinted = HashMultiset.create();
@Override
- <T> void addToFingerprint(Fingerprint fingerprint, T object) {
- super.addToFingerprint(fingerprint, object);
+ <T> void addToFingerprint(MapFn<? super T> mapFn, Fingerprint fingerprint, T object) {
+ super.addToFingerprint(mapFn, fingerprint, object);
fingerprinted.add(object);
}
}
@@ -85,4 +87,29 @@ public class NestedSetFingerprintCacheTest {
assertThat(entry.getCount()).isEqualTo(1);
}
}
+
+ @Test
+ public void testMapFn() {
+ // Make sure that the map function assigns completely different key spaces
+ NestedSet<String> a = NestedSetBuilder.<String>stableOrder().add("a0").add("a1").build();
+
+ Fingerprint defaultMapFnFingerprint = new Fingerprint();
+ cache.addNestedSetToFingerprint(defaultMapFnFingerprint, a);
+ Fingerprint explicitDefaultMapFnFingerprint = new Fingerprint();
+ cache.addNestedSetToFingerprint(
+ CommandLineItem.MapFn.DEFAULT, explicitDefaultMapFnFingerprint, a);
+ Fingerprint mappedFingerprint = new Fingerprint();
+ cache.addNestedSetToFingerprint(s -> s + "_mapped", mappedFingerprint, a);
+
+ String defaultMapFnDigest = defaultMapFnFingerprint.hexDigestAndReset();
+ String explicitDefaultMapFnDigest = explicitDefaultMapFnFingerprint.hexDigestAndReset();
+ String mappedDigest = mappedFingerprint.hexDigestAndReset();
+ assertThat(defaultMapFnDigest).isEqualTo(explicitDefaultMapFnDigest);
+ assertThat(mappedDigest).isNotEqualTo(defaultMapFnDigest);
+
+ assertThat(cache.fingerprinted.elementSet()).containsExactly("a0", "a1");
+ for (Multiset.Entry<Object> entry : cache.fingerprinted.entrySet()) {
+ assertThat(entry.getCount()).isEqualTo(2);
+ }
+ }
}