use of com.facebook.buck.util.cache.FileHashCache in project buck by facebook.
the class ManifestTest method lookupMatch.
@Test
public void lookupMatch() throws IOException {
RuleKey key = new RuleKey("aa");
SourcePath input = new FakeSourcePath("input.h");
HashCode hashCode = HashCode.fromInt(20);
Manifest manifest = Manifest.fromMap(ImmutableMap.of(key, ImmutableMap.of(RESOLVER.getRelativePath(input).toString(), hashCode)));
FileHashCache fileHashCache = new FakeFileHashCache(ImmutableMap.of(RESOLVER.getAbsolutePath(input), hashCode));
assertThat(manifest.lookup(fileHashCache, RESOLVER, ImmutableSet.of(input)), Matchers.equalTo(Optional.of(key)));
}
use of com.facebook.buck.util.cache.FileHashCache in project buck by facebook.
the class ManifestTest method addEntryFromArchive.
@Test
public void addEntryFromArchive() throws IOException {
Manifest manifest = new Manifest();
RuleKey key = new RuleKey("aa");
SourcePath input = new ArchiveMemberSourcePath(new FakeSourcePath("somewhere/a.jar"), Paths.get("Member.class"));
HashCode hashCode = HashCode.fromInt(20);
FileHashCache fileHashCache = new FakeFileHashCache(new HashMap<>(), ImmutableMap.of(RESOLVER.getAbsoluteArchiveMemberPath(input), hashCode), new HashMap<>());
manifest.addEntry(fileHashCache, key, RESOLVER, ImmutableSet.of(input), ImmutableSet.of(input));
assertThat(manifest.toMap(), Matchers.equalTo(ImmutableMap.of(key, ImmutableMap.of(RESOLVER.getRelativeArchiveMemberPath(input).toString(), hashCode))));
}
use of com.facebook.buck.util.cache.FileHashCache in project buck by facebook.
the class ManifestTest method addEntry.
@Test
public void addEntry() throws IOException {
Manifest manifest = new Manifest();
RuleKey key = new RuleKey("aa");
SourcePath input = new FakeSourcePath("input.h");
HashCode hashCode = HashCode.fromInt(20);
FileHashCache fileHashCache = new FakeFileHashCache(ImmutableMap.of(RESOLVER.getAbsolutePath(input), hashCode));
manifest.addEntry(fileHashCache, key, RESOLVER, ImmutableSet.of(input), ImmutableSet.of(input));
assertThat(manifest.toMap(), Matchers.equalTo(ImmutableMap.of(key, ImmutableMap.of(RESOLVER.getRelativePath(input).toString(), hashCode))));
}
use of com.facebook.buck.util.cache.FileHashCache in project buck by facebook.
the class ManifestTest method lookupMatchAfterHashMismatch.
@Test
public void lookupMatchAfterHashMismatch() throws IOException {
RuleKey key1 = new RuleKey("aa");
RuleKey key2 = new RuleKey("bb");
SourcePath input = new FakeSourcePath("input.h");
Manifest manifest = Manifest.fromMap(ImmutableMap.of(key1, ImmutableMap.of(RESOLVER.getRelativePath(input).toString(), HashCode.fromInt(1)), key2, ImmutableMap.of(RESOLVER.getRelativePath(input).toString(), HashCode.fromInt(2))));
FileHashCache fileHashCache = new FakeFileHashCache(ImmutableMap.of(RESOLVER.getAbsolutePath(input), HashCode.fromInt(2)));
assertThat(manifest.lookup(fileHashCache, RESOLVER, ImmutableSet.of(input)), Matchers.equalTo(Optional.of(key2)));
}
use of com.facebook.buck.util.cache.FileHashCache in project buck by facebook.
the class CalculateAbiTest method inputRuleKeyDoesNotChangeIfGeneratedBinaryJarDoesNotChange.
@Test
public void inputRuleKeyDoesNotChangeIfGeneratedBinaryJarDoesNotChange() throws Exception {
BuildRuleResolver resolver = new BuildRuleResolver(TargetGraph.EMPTY, new DefaultTargetNodeToBuildRuleTransformer());
SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(resolver);
SourcePathResolver pathResolver = new SourcePathResolver(ruleFinder);
ProjectFilesystem filesystem = new FakeProjectFilesystem();
// Setup the initial java library.
Path input = Paths.get("input.java");
BuildTarget javaLibraryTarget = BuildTargetFactory.newInstance("//:library");
JavaLibraryBuilder builder = JavaLibraryBuilder.createBuilder(javaLibraryTarget).addSrc(new PathSourcePath(filesystem, input));
DefaultJavaLibrary javaLibrary = builder.build(resolver, filesystem);
// Write something to the library source and geneated JAR, so they exist to generate rule keys.
filesystem.writeContentsToPath("stuff", input);
filesystem.writeContentsToPath("stuff", pathResolver.getRelativePath(javaLibrary.getSourcePathToOutput()));
BuildTarget target = BuildTargetFactory.newInstance("//:library-abi");
CalculateAbi calculateAbi = CalculateAbi.of(target, ruleFinder, builder.createBuildRuleParams(resolver, filesystem), new DefaultBuildTargetSourcePath(javaLibraryTarget));
FileHashCache initialHashCache = new StackedFileHashCache(ImmutableList.of(DefaultFileHashCache.createDefaultFileHashCache(filesystem)));
DefaultRuleKeyFactory initialRuleKeyFactory = new DefaultRuleKeyFactory(0, initialHashCache, pathResolver, ruleFinder);
RuleKey initialKey = initialRuleKeyFactory.build(calculateAbi);
RuleKey initialInputKey = new InputBasedRuleKeyFactory(0, initialHashCache, pathResolver, ruleFinder).build(calculateAbi);
// Write something to the library source and geneated JAR, so they exist to generate rule keys.
filesystem.writeContentsToPath("new stuff", input);
// Re-setup some entities to drop internal rule key caching.
resolver = new BuildRuleResolver(TargetGraph.EMPTY, new DefaultTargetNodeToBuildRuleTransformer());
ruleFinder = new SourcePathRuleFinder(resolver);
pathResolver = new SourcePathResolver(ruleFinder);
builder.build(resolver, filesystem);
FileHashCache alteredHashCache = new StackedFileHashCache(ImmutableList.of(DefaultFileHashCache.createDefaultFileHashCache(filesystem)));
DefaultRuleKeyFactory alteredRuleKeyFactory = new DefaultRuleKeyFactory(0, alteredHashCache, pathResolver, ruleFinder);
RuleKey alteredKey = alteredRuleKeyFactory.build(calculateAbi);
RuleKey alteredInputKey = new InputBasedRuleKeyFactory(0, alteredHashCache, pathResolver, ruleFinder).build(calculateAbi);
assertThat(initialKey, Matchers.not(Matchers.equalTo(alteredKey)));
assertThat(initialInputKey, Matchers.equalTo(alteredInputKey));
}
Aggregations