diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-06-27 22:05:20 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-06-27 22:05:20 +0200 |
commit | 9116588b56c3d28637429338dbef46c58227e7bd (patch) | |
tree | a3960466016502180083689659850378ee8880b3 /container-search/src/test/java/com | |
parent | 24c7eee36b9c251fc754e6ca51c921e97be44aeb (diff) |
Avoid building full Slime AST when decoding json just to throw it all away when making it into a string.
Instead try cheap stream parsing with jackson and keep strings for as long as possible.
Diffstat (limited to 'container-search/src/test/java/com')
-rw-r--r-- | container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java (renamed from container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java) | 9 | ||||
-rw-r--r-- | container-search/src/test/java/com/yahoo/search/handler/Json2SinglelevelMapTestCase.java | 32 |
2 files changed, 36 insertions, 5 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java b/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java index dd78cfefe28..b92bf68e099 100644 --- a/container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java @@ -1,5 +1,5 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.search.handler.test; +package com.yahoo.search.handler; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -24,6 +24,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -324,8 +325,7 @@ public class JSONSearchHandlerTestCase { json.set("select", select); Inspector inspector = SlimeUtils.jsonToSlime(json.toString().getBytes(StandardCharsets.UTF_8)).get(); - Map<String, String> map = new HashMap<>(); - searchHandler.createRequestMapping(inspector, map, ""); + Map<String, String> map = new Json2SingleLevelMap(new ByteArrayInputStream(inspector.toString().getBytes(StandardCharsets.UTF_8))).parse(); JsonNode processedWhere = jsonMapper.readTree(map.get("select.where")); JsonTestHelper.assertJsonEquals(where.toString(), processedWhere.toString()); @@ -510,8 +510,7 @@ public class JSONSearchHandlerTestCase { // Create mapping Inspector inspector = SlimeUtils.jsonToSlime(json.toString().getBytes(StandardCharsets.UTF_8)).get(); - Map<String, String> map = new HashMap<>(); - searchHandler.createRequestMapping(inspector, map, ""); + Map<String, String> map = new Json2SingleLevelMap(new ByteArrayInputStream(inspector.toString().getBytes(StandardCharsets.UTF_8))).parse(); // Create GET-request with same query String url = uri + "&model.sources=source1%2Csource2&select=_all&model.language=en&presentation.timing=false&pos.attribute=default&pos.radius=71234m&model.searchPath=node1&nocachewrite=false&ranking.matchPhase.maxHits=100&presentation.summary=none" + diff --git a/container-search/src/test/java/com/yahoo/search/handler/Json2SinglelevelMapTestCase.java b/container-search/src/test/java/com/yahoo/search/handler/Json2SinglelevelMapTestCase.java new file mode 100644 index 00000000000..d8db88323c7 --- /dev/null +++ b/container-search/src/test/java/com/yahoo/search/handler/Json2SinglelevelMapTestCase.java @@ -0,0 +1,32 @@ +package com.yahoo.search.handler; + +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.nio.charset.StandardCharsets; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class Json2SinglelevelMapTestCase { + @Test + public void testDecodeString() { + Map<String, String> m = new Json2SingleLevelMap(new ByteArrayInputStream("{\"yql\":\"text\", \"f1\":7.3, \"i1\":7, \"t\":true, \"f\":false, \"n\":null, \"a\":[0.786, 0.193]}".getBytes(StandardCharsets.UTF_8))).parse(); + assertEquals(7, m.size()); + assertTrue(m.containsKey("yql")); + assertTrue(m.containsKey("f1")); + assertTrue(m.containsKey("i1")); + assertTrue(m.containsKey("t")); + assertTrue(m.containsKey("f")); + assertTrue(m.containsKey("n")); + assertTrue(m.containsKey("a")); + assertEquals("text", m.get("yql")); + assertEquals("7.3", m.get("f1")); + assertEquals("7", m.get("i1")); + assertEquals("true", m.get("t")); + assertEquals("false", m.get("f")); + assertEquals("null", m.get("n")); + assertEquals("[0.786, 0.193]", m.get("a")); + } +} |