aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/collect
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2018-03-22 10:22:28 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-22 10:23:28 -0700
commit39cef6d6a4a9e3ae80b11a9ccc0f35325852777c (patch)
tree3b2049a00099cd444c347f0ae90d4f231f0f8034 /src/test/java/com/google/devtools/build/lib/collect
parent76c3c5f98991dd4acad9e351f5ce748e590d7f55 (diff)
Allow NestedSetCodec to share members across multiple deserializations.
This avoids redundancy in memory when multiple NestedSets share a member PiperOrigin-RevId: 190085907
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/collect')
-rw-r--r--src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java b/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java
index 978d7a0bb5..74eea2176d 100644
--- a/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java
+++ b/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java
@@ -15,8 +15,12 @@ package com.google.devtools.build.lib.collect.nestedset;
import static com.google.common.truth.Truth.assertThat;
+import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.skyframe.serialization.AutoRegistry;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodecs;
import com.google.devtools.build.lib.skyframe.serialization.SerializationConstants;
import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
+import com.google.protobuf.ByteString;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -66,6 +70,27 @@ public class NestedSetCodecTest {
.runTests();
}
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testDeserializedNestedSetsShareChildren() throws Exception {
+ ObjectCodecs objectCodecs =
+ new ObjectCodecs(
+ AutoRegistry.get().getBuilder().setAllowDefaultCodec(true).build(), ImmutableMap.of());
+ NestedSet<String> originalChild = NestedSetBuilder.create(Order.STABLE_ORDER, "a", "b", "c");
+ NestedSet<String> originalA =
+ new NestedSetBuilder<String>(Order.STABLE_ORDER).addTransitive(originalChild).build();
+ NestedSet<String> originalB =
+ new NestedSetBuilder<String>(Order.STABLE_ORDER).addTransitive(originalChild).build();
+
+ ByteString serializedA = objectCodecs.serialize(originalA);
+ ByteString serializedB = objectCodecs.serialize(originalB);
+
+ NestedSet<String> deserializedA = (NestedSet<String>) objectCodecs.deserialize(serializedA);
+ NestedSet<String> deserializedB = (NestedSet<String>) objectCodecs.deserialize(serializedB);
+
+ assertThat(deserializedA.rawChildren()).isSameAs(deserializedB.rawChildren());
+ }
+
private static void verifyDeserialization(
NestedSet<String> subject, NestedSet<String> deserialized) {
assertThat(subject.getOrder()).isEqualTo(deserialized.getOrder());