Repository: johnzon Updated Branches: refs/heads/master ade1c2717 -> c15ee3137
JOHNZON-134 add a test with a very large Json structure. Testing the auto-extend mechanism Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/c15ee313 Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/c15ee313 Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/c15ee313 Branch: refs/heads/master Commit: c15ee3137e9310d0f34de91a58fac1d9674c0f8d Parents: ade1c27 Author: Mark Struberg <[email protected]> Authored: Tue Sep 26 08:11:22 2017 +0200 Committer: Mark Struberg <[email protected]> Committed: Tue Sep 26 08:11:22 2017 +0200 ---------------------------------------------------------------------- .../org/apache/johnzon/core/OverflowTest.java | 36 ++++++++++++++++++++ 1 file changed, 36 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/c15ee313/johnzon-core/src/test/java/org/apache/johnzon/core/OverflowTest.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/OverflowTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/OverflowTest.java index 8087fdd..218789d 100644 --- a/johnzon-core/src/test/java/org/apache/johnzon/core/OverflowTest.java +++ b/johnzon-core/src/test/java/org/apache/johnzon/core/OverflowTest.java @@ -18,11 +18,21 @@ */ package org.apache.johnzon.core; +import org.junit.Assert; import org.junit.Test; import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonArrayBuilder; +import javax.json.JsonBuilderFactory; import javax.json.JsonObject; +import javax.json.JsonReaderFactory; +import javax.json.JsonWriter; +import javax.json.JsonWriterFactory; +import javax.json.spi.JsonProvider; + import java.io.StringReader; +import java.io.StringWriter; import java.util.HashMap; import static org.junit.Assert.assertEquals; @@ -52,4 +62,30 @@ public class OverflowTest { put(JsonParserFactoryImpl.AUTO_ADJUST_STRING_BUFFER, "false"); }}).createReader(new StringReader("{\"another\":\"value too long\"}")).readObject(); } + + @Test + public void testVeryLargeJson() { + JsonWriterFactory writerFactory = Json.createWriterFactory(new HashMap<String, Object>() {{ + put(JsonParserFactoryImpl.BUFFER_LENGTH, "256"); + }}); + + int itemSize = 50_000; + + StringWriter sw = new StringWriter(); + JsonWriter writer = writerFactory.createWriter(sw); + + JsonArrayBuilder arrayBuilder = Json.createArrayBuilder(); + for (int i = 0; i < itemSize; i++) { + arrayBuilder.add("0123456789012345-" + i); + } + writer.writeArray(arrayBuilder.build()); + + String json = sw.toString(); + System.out.println("Created a JSON of size " + json.length() + " bytes"); + + // read it back in + JsonArray jsonArray = Json.createReader(new StringReader(json)).readArray(); + Assert.assertEquals(itemSize, jsonArray.size()); + + } }
