diff options
Diffstat (limited to 'vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java')
-rw-r--r-- | vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java | 633 |
1 files changed, 0 insertions, 633 deletions
diff --git a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java deleted file mode 100644 index ec20e82763c..00000000000 --- a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java +++ /dev/null @@ -1,633 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hadoop.pig; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.pig.data.BagFactory; -import org.apache.pig.data.DataBag; -import org.apache.pig.data.DataByteArray; -import org.apache.pig.data.DataType; -import org.apache.pig.data.SortedDataBag; -import org.apache.pig.data.Tuple; -import org.apache.pig.data.TupleFactory; -import org.apache.pig.impl.logicalLayer.FrontendException; -import org.apache.pig.impl.logicalLayer.schema.Schema; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class VespaDocumentOperationTest { - private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); - private final PrintStream originalOut = System.out; - - @BeforeEach - public void setUpStreams() { - System.setOut(new PrintStream(outContent)); - } - - @AfterEach - public void restoreStreams() { - System.setOut(originalOut); - } - @Test - public void requireThatUDFReturnsCorrectJson() throws Exception { - String json = getDocumentOperationJson("docid=id:<application>:metrics::<name>-<date>"); - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.path("fields"); - - // operation put is default - assertEquals("id:testapp:metrics::clicks-20160112", root.get("put").asText()); - assertEquals("testapp", fields.get("application").asText()); - assertEquals("clicks", fields.get("name").asText()); - assertEquals(3, fields.get("value").asInt()); - } - - - @Test - public void requireThatUDFSupportsUpdateAssign() throws IOException { - String json = getDocumentOperationJson("docid=id:<application>:metrics::<name>-<date>", "operation=update"); - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.path("fields"); - - assertEquals("id:testapp:metrics::clicks-20160112", root.get("update").asText()); - assertEquals("testapp", fields.get("application").get("assign").asText()); - assertEquals("clicks", fields.get("name").get("assign").asText()); - assertEquals(3, fields.get("value").get("assign").asInt()); - } - - @Test - public void requireThatUDFSupportsConditionalUpdateAssign() throws IOException { - String json = getDocumentOperationJson("docid=id:<application>:metrics::<name>-<date>", "operation=update", "condition=clicks < <value>"); - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.path("fields"); - - assertEquals("id:testapp:metrics::clicks-20160112", root.get("update").asText()); - assertEquals("clicks < 3", root.get("condition").asText()); - assertEquals("testapp", fields.get("application").get("assign").asText()); - assertEquals("clicks", fields.get("name").get("assign").asText()); - assertEquals(3, fields.get("value").get("assign").asInt()); - } - - @Test - public void requireThatUDFSupportsCreateIfNonExistent() throws IOException { - String json = getDocumentOperationJson("docid=id:<application>:metrics::<name>-<date>", "operation=update", - "create-if-non-existent=true"); - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.path("fields"); - - assertEquals("id:testapp:metrics::clicks-20160112", root.get("update").asText()); - assertTrue(root.get("create").asBoolean()); - assertEquals("testapp", fields.get("application").get("assign").asText()); - assertEquals("clicks", fields.get("name").get("assign").asText()); - assertEquals(3, fields.get("value").get("assign").asInt()); - } - - - @Test - public void requireThatUDFReturnsNullForMissingConfig() throws Exception { - String json = getDocumentOperationJson(); - assertNull(json); - } - - - @Test - public void requireThatUDFCorrectlyGeneratesRemoveBagAsMapOperation() throws Exception { - DataBag bag = BagFactory.getInstance().newDefaultBag(); - - Schema innerObjectSchema = new Schema(); - Tuple innerObjectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("year", DataType.CHARARRAY, "2020", innerObjectSchema, innerObjectTuple); - addToTuple("month", DataType.INTEGER, 3, innerObjectSchema, innerObjectTuple); - - Schema objectSchema = new Schema(); - Tuple objectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("key", DataType.CHARARRAY, "234566", objectSchema, objectTuple); - addToTuple("value", DataType.TUPLE, innerObjectTuple,innerObjectSchema,objectSchema, objectTuple); - - Schema bagSchema = new Schema(); - addToBagWithSchema("firstLayerTuple",DataType.TUPLE,objectTuple,objectSchema,bagSchema,bag); - - innerObjectSchema = new Schema(); - innerObjectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("year", DataType.CHARARRAY, "2020", innerObjectSchema, innerObjectTuple); - addToTuple("month", DataType.INTEGER, 3, innerObjectSchema, innerObjectTuple); - - objectSchema = new Schema(); - objectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("key", DataType.CHARARRAY, "123456", objectSchema, objectTuple); - addToTuple("value", DataType.TUPLE, innerObjectTuple,innerObjectSchema,objectSchema, objectTuple); - - addToBagWithSchema("firstLayerTuple",DataType.TUPLE,objectTuple,objectSchema,bagSchema,bag); - - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - addToTuple("bag", DataType.BAG, bag, bagSchema, schema, tuple); - addToTuple("id", DataType.CHARARRAY, "123", schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=id", "remove-map-fields=bag","operation=update"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.get("fields"); - assertEquals("{\"remove\":0}", fields.get("bag{123456}").toString()); - assertEquals("{\"remove\":0}", fields.get("bag{234566}").toString()); - - } - - @Test - public void requireThatUDFCorrectlyGeneratesAddBagAsMapOperation() throws Exception { - - DataBag bag = BagFactory.getInstance().newDefaultBag(); - - Schema innerObjectSchema = new Schema(); - Tuple innerObjectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("year", DataType.CHARARRAY, "2020", innerObjectSchema, innerObjectTuple); - addToTuple("month", DataType.INTEGER, 3, innerObjectSchema, innerObjectTuple); - - Schema objectSchema = new Schema(); - Tuple objectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("key", DataType.CHARARRAY, "123456", objectSchema, objectTuple); - addToTuple("value", DataType.TUPLE, innerObjectTuple,innerObjectSchema,objectSchema, objectTuple); - - Schema bagSchema = new Schema(); - addToBagWithSchema("firstLayerTuple",DataType.TUPLE,objectTuple,objectSchema,bagSchema,bag); - - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - addToTuple("bag", DataType.BAG, bag, bagSchema, schema, tuple); - addToTuple("id", DataType.CHARARRAY, "123", schema, tuple); - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=id", "update-map-fields=bag","operation=update"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - - JsonNode fields = root.get("fields"); - JsonNode value = fields.get("bag{123456}"); - JsonNode assign = value.get("assign"); - assertEquals("2020", assign.get("year").asText()); - assertEquals(3, assign.get("month").asInt()); - } - - @Test - public void requireThatUDFCorrectlyGeneratesAddTensorOperation() throws Exception { - - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - - // Please refer to the tensor format documentation - - Map<String, Double> tensor = new HashMap<String, Double>() {{ - put("x:label1,y:label2,z:label4", 2.0); - put("x:label3", 3.0); - }}; - - addToTuple("id", DataType.CHARARRAY, "123", schema, tuple); - addToTuple("tensor", DataType.MAP, tensor, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=empty", "update-tensor-fields=tensor","operation=update"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.get("fields"); - JsonNode tensorValue = fields.get("tensor"); - JsonNode add = tensorValue.get("add"); - JsonNode cells = add.get("cells"); - Iterator<JsonNode> cellsIterator = cells.iterator(); - - JsonNode element = cellsIterator.next(); - assertEquals("label1", element.get("address").get("x").asText()); - assertEquals("label2", element.get("address").get("y").asText()); - assertEquals("label4", element.get("address").get("z").asText()); - assertEquals("2.0", element.get("value").toString()); - - element = cellsIterator.next(); - assertEquals("label3", element.get("address").get("x").asText()); - assertEquals("3.0", element.get("value").toString()); - } - - @Test - public void requireThatUDFCorrectlyGeneratesRemoveTensorOperation() throws Exception { - - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - - // Please refer to the tensor format documentation - - Map<String, Double> tensor = new HashMap<String, Double>() {{ - put("x:label1,y:label2,z:label4", 2.0); - put("x:label3", 3.0); - }}; - - addToTuple("id", DataType.CHARARRAY, "123", schema, tuple); - addToTuple("tensor", DataType.MAP, tensor, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=empty", "remove-tensor-fields=tensor","operation=update"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.get("fields"); - JsonNode tensorValue = fields.get("tensor"); - JsonNode remove = tensorValue.get("remove"); - JsonNode address = remove.get("addresses"); - - Iterator<JsonNode> addressIterator = address.iterator(); - - JsonNode element = addressIterator.next(); - assertEquals("label1", element.get("x").asText()); - - element = addressIterator.next(); - assertEquals("label2", element.get("y").asText()); - - element = addressIterator.next(); - assertEquals("label4", element.get("z").asText()); - - element = addressIterator.next(); - assertEquals("label3", element.get("x").asText()); - } - - @Test - public void requireThatUDFReturnsNullWhenExceptionHappens() throws IOException { - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - - // broken DELTA format that would throw internally - Map<String, Double> tensor = new HashMap<String, Double>() {{ - put("xlabel1", 2.0); // missing : between 'x' and 'label1' - }}; - - addToTuple("id", DataType.CHARARRAY, "123", schema, tuple); - addToTuple("tensor", DataType.MAP, tensor, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=empty", "create-tensor-fields=tensor"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - assertNull(json); - } - - @Test - public void requireThatUDFCorrectlyGeneratesRemoveOperation() throws Exception { - String json = getDocumentOperationJson("operation=remove", "docid=id:<application>:metrics::<name>-<date>"); - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.get("fields"); - - assertEquals("id:testapp:metrics::clicks-20160112", root.get("remove").asText()); - assertNull(fields); - } - - - @Test - public void requireThatUDFGeneratesComplexDataTypes() throws Exception { - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - - Tuple intTuple = TupleFactory.getInstance().newTuple(); - int[] intArray = {1, 2, 3}; - for (int i : intArray) { intTuple.append(i); } - - Tuple stringTuple = TupleFactory.getInstance().newTuple(); - String[] stringArray = {"a", "b", "c"}; - for (String s : stringArray) { stringTuple.append(s); } - - DataBag bag = new SortedDataBag(null); - bag.add(intTuple); - bag.add(stringTuple); - - Map<String, Object> innerMap = new HashMap<String, Object>() {{ - put("a", "string"); - put("tuple", intTuple); - }}; - - DataByteArray bytes = new DataByteArray("testdata".getBytes()); - - Map<String, Object> outerMap = new HashMap<String, Object>() {{ - put("string", "value"); - put("int", 3); - put("float", 3.145); - put("bool", true); - put("byte", bytes); - put("map", innerMap); - put("bag", bag); - }}; - - addToTuple("map", DataType.MAP, outerMap, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=empty"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.get("fields"); - JsonNode map = fields.get("map"); - - assertEquals("value", map.get("string").asText()); - assertEquals(3, map.get("int").asInt()); - assertEquals(3.145, map.get("float").asDouble(), 1e-6); - assertTrue(map.get("bool").asBoolean()); - assertEquals("dGVzdGRhdGE=", map.get("byte").asText()); - - assertEquals("string", map.get("map").get("a").asText()); - for (int i = 0; i < intArray.length; ++i) { - assertEquals(intArray[i], map.get("map").get("tuple").get(i).asInt()); - } - - JsonNode bagField = map.get("bag"); - for (int i = 0; i < intArray.length; ++i) { - assertEquals(intArray[i], bagField.get(0).get(i).asInt()); - } - for (int i = 0; i < stringArray.length; ++i) { - assertEquals(stringArray[i], bagField.get(1).get(i).asText()); - } - } - - - @Test - public void requireThatSimpleArraysMustBeConfigured() throws Exception { - String[] stringArray = {"a", "b", "c"}; - JsonNode array = setupSimpleArrayOperation("array", stringArray, "docid=empty"); // simple arrays not configured - // json: [["a"], ["b"], ["c"]] - assertEquals("a", array.get(0).get(0).asText()); - assertEquals("b", array.get(1).get(0).asText()); - assertEquals("c", array.get(2).get(0).asText()); - } - - - @Test - public void requireThatSimpleArraysAreSupported() throws Exception { - String[] stringArray = {"a", "b", "c"}; - JsonNode array = setupSimpleArrayOperation("array", stringArray, "docid=empty", "simple-array-fields=array"); - // json: ["a", "b", "c"] - assertEquals("a", array.get(0).asText()); - assertEquals("b", array.get(1).asText()); - assertEquals("c", array.get(2).asText()); - } - - - @Test - public void requireThatSimpleArraysCanBeConfiguredWithWildcard() throws Exception { - String[] stringArray = {"a", "b", "c"}; - JsonNode array = setupSimpleArrayOperation("array", stringArray, "docid=empty", "simple-array-fields=*"); - // json: ["a", "b", "c"] - assertEquals("a", array.get(0).asText()); - assertEquals("b", array.get(1).asText()); - assertEquals("c", array.get(2).asText()); - } - - - @Test - public void requireThatMultipleSimpleArraysAreSupported() throws Exception { - String[] stringArray = {"a", "b", "c"}; - JsonNode array = setupSimpleArrayOperation("array", stringArray, "docid=empty", "simple-array-fields=empty,array"); - // json: ["a", "b", "c"] - assertEquals("a", array.get(0).asText()); - assertEquals("b", array.get(1).asText()); - assertEquals("c", array.get(2).asText()); - } - - - private JsonNode setupSimpleArrayOperation(String name, String[] array, String... params) throws IOException { - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - - DataBag bag = new SortedDataBag(null); - for (String s : array) { - Tuple stringTuple = TupleFactory.getInstance().newTuple(); - stringTuple.append(s); - bag.add(stringTuple); - } - addToTuple(name, DataType.BAG, bag, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation(params); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.get("fields"); - return fields.get(name); - } - - - @Test - public void requireThatUDFSupportsTensors() throws IOException { - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - - // Please refer to the tensor format documentation - - Map<String, Double> tensor = new HashMap<String, Double>() {{ - put("x:label1,y:label2,z:label4", 2.0); - put("x:label3", 3.0); - }}; - - addToTuple("id", DataType.CHARARRAY, "123", schema, tuple); - addToTuple("tensor", DataType.MAP, tensor, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=empty", "create-tensor-fields=tensor"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.get("fields"); - JsonNode tensorNode = fields.get("tensor"); - JsonNode cells = tensorNode.get("cells"); - - assertEquals("label1", cells.get(0).get("address").get("x").asText()); - assertEquals("label2", cells.get(0).get("address").get("y").asText()); - assertEquals("label4", cells.get(0).get("address").get("z").asText()); - assertEquals("label3", cells.get(1).get("address").get("x").asText()); - - assertEquals(2.0, cells.get(0).get("value").asDouble(), 1e-6); - assertEquals(3.0, cells.get(1).get("value").asDouble(), 1e-6); - } - - - @Test - public void requireThatUDFCanExcludeFields() throws IOException { - String json = getDocumentOperationJson("docid=id:<application>:metrics::<name>-<date>", "exclude-fields=application,date"); - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.path("fields"); - - // 'application' and 'date' fields should not appear in JSON - assertNull(fields.get("application")); - assertNull(fields.get("date")); - assertNotNull(fields.get("name")); - assertNotNull(fields.get("value")); - } - - - private String getDocumentOperationJson(String... params) throws IOException { - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - - addToTuple("application", DataType.CHARARRAY, "testapp", schema, tuple); - addToTuple("name", DataType.CHARARRAY, "clicks", schema, tuple); - addToTuple("date", DataType.CHARARRAY, "20160112", schema, tuple); - addToTuple("value", DataType.CHARARRAY, 3, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation(params); - docOp.setInputSchema(schema); - return docOp.exec(tuple); - } - - - @Test - public void requireThatUDFSupportsSimpleObjectFields() throws IOException { - Schema objectSchema = new Schema(); - Tuple objectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("id", DataType.LONG, 123456789L, objectSchema, objectTuple); - addToTuple("url", DataType.CHARARRAY, "example.com", objectSchema, objectTuple); - addToTuple("value", DataType.INTEGER, 123, objectSchema, objectTuple); - - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - addToTuple("object", DataType.TUPLE, objectTuple, objectSchema, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=empty", "simple-object-fields=object"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.get("fields"); - JsonNode objectNode = fields.get("object"); - - assertEquals(123456789L, objectNode.get("id").asLong()); - assertEquals("example.com", objectNode.get("url").asText()); - assertEquals(123, objectNode.get("value").asInt()); - } - - - @Test - public void requireThatUDFSupportsBagAsMapFields() throws IOException { - DataBag bag = BagFactory.getInstance().newDefaultBag(); - - Schema objectSchema = new Schema(); - Tuple objectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("key", DataType.CHARARRAY, "123456", objectSchema, objectTuple); - addToTuple("value", DataType.INTEGER, 123456, objectSchema, objectTuple); - bag.add(objectTuple); - - objectSchema = new Schema(); - objectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("key", DataType.CHARARRAY, "234567", objectSchema, objectTuple); - addToTuple("value", DataType.INTEGER, 234567, objectSchema, objectTuple); - bag.add(objectTuple); - - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - addToTuple("bag", DataType.BAG, bag, objectSchema, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=empty", "bag-as-map-fields=bag"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - ObjectMapper m = new ObjectMapper(); - JsonNode root = m.readTree(json); - JsonNode fields = root.get("fields"); - JsonNode bagNode = fields.get("bag"); - - assertEquals(123456, bagNode.get("123456").asInt()); - assertEquals(234567, bagNode.get("234567").asInt()); - } - - @Test - public void requireThatUDFPrintIdWhenVerbose() throws IOException { - DataBag bag = BagFactory.getInstance().newDefaultBag(); - - Schema objectSchema = new Schema(); - Tuple objectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("key", DataType.CHARARRAY, "123456", objectSchema, objectTuple); - addToTuple("value", DataType.INTEGER, 123456, objectSchema, objectTuple); - bag.add(objectTuple); - - objectSchema = new Schema(); - objectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("key", DataType.CHARARRAY, "234567", objectSchema, objectTuple); - addToTuple("value", DataType.INTEGER, 234567, objectSchema, objectTuple); - bag.add(objectTuple); - - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - addToTuple("bag", DataType.BAG, bag, objectSchema, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=7654321", "bag-as-map-fields=bag","verbose=true"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - assertTrue(outContent.toString().contains("Processing docId: 7654321")); - } - - @Test - public void requireThatUDFVerboseSetToFalseByDefault() throws IOException { - DataBag bag = BagFactory.getInstance().newDefaultBag(); - - Schema objectSchema = new Schema(); - Tuple objectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("key", DataType.CHARARRAY, "123456", objectSchema, objectTuple); - addToTuple("value", DataType.INTEGER, 123456, objectSchema, objectTuple); - bag.add(objectTuple); - - objectSchema = new Schema(); - objectTuple = TupleFactory.getInstance().newTuple(); - addToTuple("key", DataType.CHARARRAY, "234567", objectSchema, objectTuple); - addToTuple("value", DataType.INTEGER, 234567, objectSchema, objectTuple); - bag.add(objectTuple); - - Schema schema = new Schema(); - Tuple tuple = TupleFactory.getInstance().newTuple(); - addToTuple("bag", DataType.BAG, bag, objectSchema, schema, tuple); - - VespaDocumentOperation docOp = new VespaDocumentOperation("docid=7654321", "bag-as-map-fields=bag"); - docOp.setInputSchema(schema); - String json = docOp.exec(tuple); - - assertEquals("", outContent.toString()); - } - - private void addToTuple(String alias, byte type, Object value, Schema schema, Tuple tuple) { - schema.add(new Schema.FieldSchema(alias, type)); - tuple.append(value); - } - - - private void addToTuple(String alias, byte type, Object value, Schema schemaInField, Schema schema, Tuple tuple) - throws FrontendException { - schema.add(new Schema.FieldSchema(alias, schemaInField, type)); - tuple.append(value); - } - - private void addToBagWithSchema(String alias, byte type, Tuple value, Schema schemaInField, Schema schema,DataBag bag) - throws FrontendException { - schema.add(new Schema.FieldSchema(alias, schemaInField, type)); - bag.add(value); - } -} |