aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/serialization/ArrayCodecTest.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/ArrayCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/ArrayCodecTest.java
index c12e228941..58bcd4a66f 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/ArrayCodecTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/ArrayCodecTest.java
@@ -16,7 +16,10 @@ package com.google.devtools.build.lib.skyframe.serialization;
import static com.google.common.truth.Truth.assertThat;
+import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
+import com.google.devtools.build.lib.skyframe.serialization.testutils.TestUtils;
+import com.google.devtools.build.lib.testutil.MoreAsserts;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -37,6 +40,19 @@ public class ArrayCodecTest {
.runTests();
}
+ @Test
+ public void stackOverflowTransformedIntoSerializationException() {
+ int depth = 4000;
+ Object[] obj = new Object[1];
+ Object[] cur = obj;
+ for (int i = 0; i < depth; i++) {
+ cur[0] = new Object[1];
+ cur = (Object[]) cur[0];
+ }
+ MoreAsserts.assertThrows(
+ SerializationException.class, () -> TestUtils.toBytes(obj, ImmutableMap.of()));
+ }
+
private static void verifyDeserialized(Object[] original, Object[] deserialized) {
assertThat(deserialized).hasLength(original.length);
for (int i = 0; i < deserialized.length; i++) {