aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java')
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java67
1 files changed, 62 insertions, 5 deletions
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java
index a9eb9c5e6ce..421f70c8d07 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java
@@ -141,9 +141,9 @@ public class SlimeSummaryTestCase {
@Test
public void testFieldAccessAPI() {
- DocsumDefinitionSet docsum = createDocsumDefinitionSet(summary_cf);
DocsumDefinitionSet partialDocsum1 = createDocsumDefinitionSet(partial_summary1_cf);
DocsumDefinitionSet partialDocsum2 = createDocsumDefinitionSet(partial_summary2_cf);
+ DocsumDefinitionSet fullDocsum = createDocsumDefinitionSet(summary_cf);
FastHit hit = new FastHit();
Map<String, Object> expected = new HashMap<>();
@@ -261,6 +261,18 @@ public class SlimeSummaryTestCase {
fieldIterator.remove();
expected.remove("integer_field");
assertFields(expected, hit);
+
+ // --- Add full summary
+ assertNull(fullDocsum.lazyDecode("default", fullishSummary(), hit));
+ expected.put("integer_field", 4);
+ expected.put("short_field", (short)2);
+ expected.put("byte_field", (byte)1);
+ expected.put("float_field", 4.5f);
+ expected.put("double_field", 8.75d);
+ expected.put("int64_field", 8L);
+ expected.put("string_field", "string_value");
+ expected.put("longstring_field", "longstring_value");
+ assertFields(expected, hit);
}
@@ -274,11 +286,16 @@ public class SlimeSummaryTestCase {
traversed.put(name, value);
});
assertEquals(expected, traversed);
+ // raw utf8 field traverser
+ Map<String, Object> traversedUtf8 = new HashMap<>();
+ hit.forEachFieldAsRaw(new Utf8FieldTraverser(traversedUtf8));
+ assertEquals(expected, traversedUtf8);
// fieldKeys
int fieldNameIteratorFieldCount = 0;
for (Iterator<String> i = hit.fieldKeys().iterator(); i.hasNext(); ) {
fieldNameIteratorFieldCount++;
- assertTrue(expected.containsKey(i.next()));
+ String name = i.next();
+ assertTrue("Expected field " + name, expected.containsKey(name));
}
assertEquals(expected.size(), fieldNameIteratorFieldCount);
// fieldKeys
@@ -304,7 +321,7 @@ public class SlimeSummaryTestCase {
return encode((slime));
}
- private byte [] timeoutSummary() {
+ private byte[] timeoutSummary() {
Slime slime = new Slime();
slime.setString("Timed out....");
return encode((slime));
@@ -327,6 +344,22 @@ public class SlimeSummaryTestCase {
return encode((slime));
}
+ private byte[] fullishSummary() {
+ Slime slime = new Slime();
+ Cursor docsum = slime.setObject();
+ docsum.setLong("integer_field", 4);
+ docsum.setLong("short_field", 2);
+ docsum.setLong("byte_field", 1);
+ docsum.setDouble("float_field", 4.5);
+ docsum.setDouble("double_field", 8.75);
+ docsum.setLong("int64_field", 8);
+ docsum.setString("string_field", "string_value");
+ //docsum.setData("data_field", "data_value".getBytes(StandardCharsets.UTF_8));
+ docsum.setString("longstring_field", "longstring_value");
+ //docsum.setData("longdata_field", "longdata_value".getBytes(StandardCharsets.UTF_8));
+ return encode((slime));
+ }
+
private byte[] fullSummary(Tensor tensor1, Tensor tensor2) {
Slime slime = new Slime();
Cursor docsum = slime.setObject();
@@ -346,8 +379,10 @@ public class SlimeSummaryTestCase {
field.setLong("foo", 1);
field.setLong("bar", 2);
}
- docsum.setData("tensor_field1", TypedBinaryFormat.encode(tensor1));
- docsum.setData("tensor_field2", TypedBinaryFormat.encode(tensor2));
+ if (tensor1 != null)
+ docsum.setData("tensor_field1", TypedBinaryFormat.encode(tensor1));
+ if (tensor2 != null)
+ docsum.setData("tensor_field2", TypedBinaryFormat.encode(tensor2));
return encode((slime));
}
@@ -371,4 +406,26 @@ public class SlimeSummaryTestCase {
return new DocsumDefinitionSet(config.documentdb(0), legacyEmulationConfig);
}
+ private static class Utf8FieldTraverser implements Hit.RawUtf8Consumer {
+
+ private Map<String, Object> traversed;
+
+ public Utf8FieldTraverser(Map<String, Object> traversed) {
+ this.traversed = traversed;
+ }
+
+ @Override
+ public void accept(String fieldName, byte[] utf8Data, int offset, int length) {
+ traversed.put(fieldName, new String(utf8Data, offset, length, StandardCharsets.UTF_8));
+ }
+
+ @Override
+ public void accept(String name, Object value) {
+ if (name.equals("string_value"))
+ fail("Expected string_value to be received as UTF-8");
+ traversed.put(name, value);
+ }
+
+ }
+
}