aboutsummaryrefslogtreecommitdiffstats
path: root/vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahooinc.com>2022-12-05 13:56:34 +0100
committerTor Brede Vekterli <vekterli@yahooinc.com>2022-12-05 14:02:05 +0100
commit23e9f20ebc1b0d013bd3f95a9463a9fe92a2cb44 (patch)
tree0343335032ebc686ae2d91ebabacb46dfde982f3 /vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java
parent8890a936e4fddea023fcb94b2841f5b4208ad908 (diff)
Add tensor short form output option to vespa-visit tool
Specified with `--tensor-short-form`. No single-char option alias, as short form output will be the default on Vespa 9 and we're running out of usable option characters for this tool anyway.
Diffstat (limited to 'vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java')
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java56
1 files changed, 53 insertions, 3 deletions
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java b/vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java
index f109b0ad56b..a2e9f91d503 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java
@@ -1,7 +1,18 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespavisit;
+import com.yahoo.document.Document;
+import com.yahoo.document.DocumentPut;
+import com.yahoo.document.DocumentType;
+import com.yahoo.document.TensorDataType;
+import com.yahoo.document.datatypes.TensorFieldValue;
+import com.yahoo.documentapi.AckToken;
+import com.yahoo.documentapi.VisitorControlSession;
import com.yahoo.documentapi.VisitorDataHandler;
+import com.yahoo.documentapi.messagebus.protocol.PutDocumentMessage;
+import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.TensorType;
+import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
@@ -9,6 +20,7 @@ import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.mock;
/**
* @author bjorncs
@@ -30,7 +42,7 @@ public class StdOutVisitorHandlerTest {
initStdOutVisitorHandlerTest(jsonOutput);
ByteArrayOutputStream out = new ByteArrayOutputStream();
StdOutVisitorHandler visitorHandler =
- new StdOutVisitorHandler(/*printIds*/true, false, false, false, false, false, 0, jsonOutput, new PrintStream(out, true));
+ new StdOutVisitorHandler(/*printIds*/true, false, false, false, false, false, 0, jsonOutput, false, new PrintStream(out, true));
VisitorDataHandler dataHandler = visitorHandler.getDataHandler();
dataHandler.onDone();
String output = out.toString();
@@ -43,11 +55,49 @@ public class StdOutVisitorHandlerTest {
initStdOutVisitorHandlerTest(jsonOutput);
ByteArrayOutputStream out = new ByteArrayOutputStream();
StdOutVisitorHandler visitorHandler =
- new StdOutVisitorHandler(/*printIds*/false, false, false, false, false, false, 0, jsonOutput, new PrintStream(out, true));
+ new StdOutVisitorHandler(/*printIds*/false, false, false, false, false, false, 0, jsonOutput, false, new PrintStream(out, true));
VisitorDataHandler dataHandler = visitorHandler.getDataHandler();
dataHandler.onDone();
String expectedOutput = jsonOutput ? "[]" : "";
String output = out.toString().trim();
assertEquals(expectedOutput, output);
}
-} \ No newline at end of file
+
+ void do_test_json_tensor_fields_can_be_output_in_short_or_long_form(boolean tensorShortForm, String expectedOutput) {
+ var docType = new DocumentType("foo");
+ docType.addField("bar", TensorDataType.getTensor(TensorType.fromSpec("tensor(x[3])")));
+ var doc = new Document(docType, "id:baz:foo::tensor-stuff");
+ doc.setFieldValue("bar", new TensorFieldValue(Tensor.from("tensor(x[3]):[1,2,3]")));
+ var putMsg = new PutDocumentMessage(new DocumentPut(doc));
+
+ var out = new ByteArrayOutputStream();
+ var visitorHandler = new StdOutVisitorHandler(/*printIds*/false, false, false, false, false, false,
+ 0, true, tensorShortForm, new PrintStream(out, true));
+ var dataHandler = visitorHandler.getDataHandler();
+ var controlSession = mock(VisitorControlSession.class);
+ var ackToken = mock(AckToken.class);
+ dataHandler.setSession(controlSession);
+ dataHandler.onMessage(putMsg, ackToken);
+ dataHandler.onDone();
+
+ String output = out.toString().trim();
+ assertEquals(expectedOutput, output);
+ }
+
+ @Test
+ void json_tensor_fields_can_be_output_in_long_form() {
+ var expectedOutput = """
+ [
+ {"id":"id:baz:foo::tensor-stuff","fields":{"bar":{"cells":[{"address":{"x":"0"},"value":1.0},{"address":{"x":"1"},"value":2.0},{"address":{"x":"2"},"value":3.0}]}}}]""";
+ do_test_json_tensor_fields_can_be_output_in_short_or_long_form(false, expectedOutput);
+ }
+
+ @Test
+ void json_tensor_fields_can_be_output_in_short_form() {
+ var expectedOutput = """
+ [
+ {"id":"id:baz:foo::tensor-stuff","fields":{"bar":{"type":"tensor(x[3])","values":[1.0,2.0,3.0]}}}]""";
+ do_test_json_tensor_fields_can_be_output_in_short_or_long_form(true, expectedOutput);
+ }
+
+}