diff options
author | 2018-01-29 14:28:29 -0800 | |
---|---|---|
committer | 2018-01-29 14:30:29 -0800 | |
commit | ac03ccfc4377d4de0385ef05702289c9fa285d69 (patch) | |
tree | 93ff6aee563079b13a8c9a385c2f1849ae50ec90 /src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java | |
parent | e046d3a301c328cb5621d715545a996f86685b82 (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.java | 33 |
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); + } + } } |