aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-06-19 14:07:39 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-19 14:09:19 -0700
commite032e31abefe9643ded6686a30458429690a4cf5 (patch)
tree79eec26b2ed8c042066f2bec51bdd04417f94b3b /src/test
parent13dc3882e84fb139cc1756fd610c028e3de74516 (diff)
Expand the abilities of codecs. Let ImmutableMultimapCodec actually handle LinkedHashMultimap as well. Let ImmutableSetRuntimeCodec handle some other sets. We squash these extra types into the same codec because we want them to become immutable anyway, and they can be dealt with easily by the existing codecs.
Add some more non-Bazel classes that should be DynamicCodec'ed. Also, when a disallowed value is serialized, throw a SerializationException instead of crashing. This makes it easier to recover in tests. PiperOrigin-RevId: 201237631
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/serialization/MultimapCodecTest.java (renamed from src/test/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableMultimapCodecTest.java)12
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/serialization/SerializationContextTest.java9
2 files changed, 13 insertions, 8 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableMultimapCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/MultimapCodecTest.java
index dbcf4aa618..9209c93476 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableMultimapCodecTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/MultimapCodecTest.java
@@ -19,21 +19,25 @@ import static com.google.common.truth.Truth.assertThat;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSetMultimap;
+import com.google.common.collect.LinkedHashMultimap;
import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester.VerificationFunction;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-/** Tests for {@link ImmutableMultimapCodec}. */
+/** Tests for {@link MultimapCodec}. */
@RunWith(JUnit4.class)
-public class ImmutableMultimapCodecTest {
+public class MultimapCodecTest {
@Test
- public void testImmutableMultimap() throws Exception {
+ public void testMultimap() throws Exception {
+ LinkedHashMultimap<String, String> linkedHashMultimap = LinkedHashMultimap.create();
+ linkedHashMultimap.put("A", "//foo:B");
new SerializationTester(
ImmutableMultimap.of(),
ImmutableMultimap.of("A", "//foo:A"),
- ImmutableMultimap.builder().putAll("B", "//foo:B1", "//foo:B2").build())
+ ImmutableMultimap.builder().putAll("B", "//foo:B1", "//foo:B2").build(),
+ linkedHashMultimap)
.runTests();
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/SerializationContextTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/SerializationContextTest.java
index 36f93a1265..4976a2869e 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/SerializationContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/SerializationContextTest.java
@@ -141,17 +141,17 @@ public class SerializationContextTest {
}
@Test
- public void explicitlyAllowedClassCheck() {
+ public void explicitlyAllowedClassCheck() throws SerializationException {
SerializationContext underTest =
new SerializationContext(ObjectCodecRegistry.newBuilder().build(), ImmutableMap.of())
.getMemoizingContext();
underTest.addExplicitlyAllowedClass(String.class);
underTest.checkClassExplicitlyAllowed(String.class);
assertThrows(
- RuntimeException.class, () -> underTest.checkClassExplicitlyAllowed(Integer.class));
+ SerializationException.class, () -> underTest.checkClassExplicitlyAllowed(Integer.class));
// Explicitly registered classes do not carry over to a new context.
assertThrows(
- RuntimeException.class,
+ SerializationException.class,
() -> underTest.getNewMemoizingContext().checkClassExplicitlyAllowed(String.class));
}
@@ -159,7 +159,8 @@ public class SerializationContextTest {
public void explicitlyAllowedClassCheckFailsIfNotMemoizing() {
SerializationContext underTest =
new SerializationContext(ObjectCodecRegistry.newBuilder().build(), ImmutableMap.of());
- assertThrows(RuntimeException.class, () -> underTest.addExplicitlyAllowedClass(String.class));
+ assertThrows(
+ SerializationException.class, () -> underTest.addExplicitlyAllowedClass(String.class));
}
private static class CodecMemoizing implements ObjectCodec<ImmutableList<Object>> {