aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar mjhalupka <mjhalupka@google.com>2018-08-10 11:57:28 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-10 11:59:34 -0700
commit287c1e7136ea07a538d57d3ad4d98aa36987736b (patch)
treee3ea9b433c7b2f199f20a308736e4d098aceb03f
parentda493a94561286493523b18cd037247898eb04fb (diff)
PiperOrigin-RevId: 208245798
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java26
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java23
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<Artifact, PathFragment> PARENT_RELATIVE_PATHS =
+ new Function<Artifact, PathFragment>() {
+ @Override
+ public PathFragment apply(Artifact artifact) {
+ return artifact.getParentRelativePath();
+ }
+ };
private final byte[] digest;
- private final ImmutableSortedMap<TreeFileArtifact, FileArtifactValue> childData;
+ private final Map<TreeFileArtifact, FileArtifactValue> childData;
@AutoCodec.VisibleForSerialization
TreeArtifactValue(byte[] digest, Map<TreeFileArtifact, FileArtifactValue> 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<TreeFileArtifact, FileArtifactValue> sortedCopy(
- Map<TreeFileArtifact, FileArtifactValue> data) {
- return ImmutableSortedMap.copyOf(data,
- Comparator.comparing(TreeFileArtifact::getParentRelativePath));
+ ImmutableMap.copyOf(childFileValues));
}
FileArtifactValue getSelfData() {
@@ -80,8 +81,7 @@ class TreeArtifactValue implements SkyValue {
}
Set<PathFragment> 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;
@@ -129,24 +124,6 @@ public class TreeArtifactMetadataTest extends ArtifactFunctionTestCase {
}
@Test
- public void testTreeArtifactOrdering() throws Exception {
- int rangeSize = 100;
- int attempts = 10;
- List<PathFragment> 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");
ImmutableList<PathFragment> children =