diff options
author | cpeyser <cpeyser@google.com> | 2018-03-22 10:22:28 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-22 10:23:28 -0700 |
commit | 39cef6d6a4a9e3ae80b11a9ccc0f35325852777c (patch) | |
tree | 3b2049a00099cd444c347f0ae90d4f231f0f8034 /src/test/java/com/google/devtools/build/lib/collect | |
parent | 76c3c5f98991dd4acad9e351f5ce748e590d7f55 (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.java | 25 |
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()); |