From 287c1e7136ea07a538d57d3ad4d98aa36987736b Mon Sep 17 00:00:00 2001 From: mjhalupka Date: Fri, 10 Aug 2018 11:57:28 -0700 Subject: PiperOrigin-RevId: 208245798 --- .../build/lib/skyframe/TreeArtifactValue.java | 26 +++++++++++----------- .../lib/skyframe/TreeArtifactMetadataTest.java | 23 ------------------- 2 files changed, 13 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java index aca26775a1..13ff08a65f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java @@ -13,12 +13,13 @@ // limitations under the License. package com.google.devtools.build.lib.skyframe; +import com.google.common.base.Function; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.ImmutableSortedMap; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; +import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.cache.DigestUtils; @@ -28,7 +29,6 @@ import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.SkyValue; import java.io.IOException; import java.util.Arrays; -import java.util.Comparator; import java.util.Map; import java.util.Set; import javax.annotation.Nullable; @@ -39,14 +39,21 @@ import javax.annotation.Nullable; */ @AutoCodec class TreeArtifactValue implements SkyValue { + private static final Function PARENT_RELATIVE_PATHS = + new Function() { + @Override + public PathFragment apply(Artifact artifact) { + return artifact.getParentRelativePath(); + } + }; private final byte[] digest; - private final ImmutableSortedMap childData; + private final Map childData; @AutoCodec.VisibleForSerialization TreeArtifactValue(byte[] digest, Map childData) { this.digest = digest; - this.childData = sortedCopy(childData); + this.childData = ImmutableMap.copyOf(childData); } /** @@ -62,13 +69,7 @@ class TreeArtifactValue implements SkyValue { return new TreeArtifactValue( DigestUtils.fromMetadata(digestBuilder).getDigestBytesUnsafe(), - sortedCopy(childFileValues)); - } - - private static ImmutableSortedMap sortedCopy( - Map data) { - return ImmutableSortedMap.copyOf(data, - Comparator.comparing(TreeFileArtifact::getParentRelativePath)); + ImmutableMap.copyOf(childFileValues)); } FileArtifactValue getSelfData() { @@ -80,8 +81,7 @@ class TreeArtifactValue implements SkyValue { } Set getChildPaths() { - return ImmutableSet.copyOf(Iterables.transform(childData.keySet(), - TreeFileArtifact::getParentRelativePath)); + return ImmutableSet.copyOf(Iterables.transform(childData.keySet(), PARENT_RELATIVE_PATHS)); } @Nullable diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java index 15e7b82168..0f5d21bca7 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java @@ -55,14 +55,9 @@ import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import java.io.IOException; import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Random; -import java.util.stream.Collectors; -import java.util.stream.IntStream; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -128,24 +123,6 @@ public class TreeArtifactMetadataTest extends ArtifactFunctionTestCase { assertThat(value.getDigest()).isEqualTo(new byte[16]); } - @Test - public void testTreeArtifactOrdering() throws Exception { - int rangeSize = 100; - int attempts = 10; - List children = - IntStream.range(0, rangeSize) - .mapToObj(i -> PathFragment.create("file" + i)) - .collect(Collectors.toList()); - - for (int i = 0; i < attempts; i++) { - Collections.shuffle(children, new Random()); - Artifact treeArtifact = createTreeArtifact("out"); - TreeArtifactValue value = evaluateTreeArtifact(treeArtifact, children); - assertThat(value.getChildPaths()).containsExactlyElementsIn(children); - assertThat(value.getChildPaths()).isOrdered(Comparator.naturalOrder()); - } - } - @Test public void testEqualTreeArtifacts() throws Exception { Artifact treeArtifact = createTreeArtifact("out"); -- cgit v1.2.3