summaryrefslogtreecommitdiffstats
path: root/vespaclient-container-plugin
diff options
context:
space:
mode:
authorLester Solbakken <lesters@oath.com>2022-06-08 14:19:44 +0200
committerLester Solbakken <lesters@oath.com>2022-06-08 14:19:44 +0200
commit61d512485d2251a9937b2a5aa1b2327228495077 (patch)
tree101e20ffb73115ccb92b890fcc0ebba1f617a441 /vespaclient-container-plugin
parente78c022215e81b1f1538043c96bbe723622446d7 (diff)
Test short format in document/v1
Diffstat (limited to 'vespaclient-container-plugin')
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java17
-rw-r--r--vespaclient-container-plugin/src/test/cfg/music.sd1
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java24
3 files changed, 29 insertions, 13 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
index e7b58bf083d..626d4f57c58 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
@@ -713,12 +713,17 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
}
- synchronized void writeSingleDocument(Document document) throws IOException {
- boolean tensorShortForm = false;
- if (request != null && request.parameters().containsKey("format.tensors")) {
- tensorShortForm = !(request.parameters().get("format.tensors").contains("long"));
+ private boolean tensorShortForm() {
+ if (request != null &&
+ request.parameters().containsKey("format.tensors") &&
+ request.parameters().get("format.tensors").contains("long")) {
+ return false;
}
- new JsonWriter(json, tensorShortForm).writeFields(document);
+ return true; // default
+ }
+
+ synchronized void writeSingleDocument(Document document) throws IOException {
+ new JsonWriter(json, tensorShortForm()).writeFields(document);
}
synchronized void writeDocumentsArrayStart() throws IOException {
@@ -737,7 +742,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
ByteArrayOutputStream myOut = new ByteArrayOutputStream(1);
myOut.write(','); // Prepend rather than append, to avoid double memory copying.
try (JsonGenerator myJson = jsonFactory.createGenerator(myOut)) {
- new JsonWriter(myJson).write(document);
+ new JsonWriter(myJson, tensorShortForm()).write(document);
}
docs.add(myOut);
diff --git a/vespaclient-container-plugin/src/test/cfg/music.sd b/vespaclient-container-plugin/src/test/cfg/music.sd
index 75a1918de5b..86597379dd3 100644
--- a/vespaclient-container-plugin/src/test/cfg/music.sd
+++ b/vespaclient-container-plugin/src/test/cfg/music.sd
@@ -2,5 +2,6 @@
search music {
document music {
field artist type string { }
+ field embedding type tensor(x[3]) {}
}
}
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
index bdb6c6d5580..74a86b6a7b7 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
@@ -14,6 +14,7 @@ import com.yahoo.document.FixedBucketSpaces;
import com.yahoo.document.TestAndSetCondition;
import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.document.datatypes.StringFieldValue;
+import com.yahoo.document.datatypes.TensorFieldValue;
import com.yahoo.document.restapi.DocumentOperationExecutorConfig;
import com.yahoo.document.restapi.resource.DocumentV1ApiHandler.StorageCluster;
import com.yahoo.document.update.FieldUpdate;
@@ -51,6 +52,7 @@ import com.yahoo.schema.derived.Deriver;
import com.yahoo.slime.Inspector;
import com.yahoo.slime.JsonFormat;
import com.yahoo.slime.SlimeUtils;
+import com.yahoo.tensor.Tensor;
import com.yahoo.test.ManualClock;
import com.yahoo.vdslib.VisitorStatistics;
import com.yahoo.vespa.config.content.AllClustersBucketSpacesConfig;
@@ -118,7 +120,9 @@ public class DocumentV1ApiTest {
final Document doc3 = new Document(manager.getDocumentType("music"), "id:space:music:g=a:three");
{
doc1.setFieldValue("artist", "Tom Waits");
+ doc1.setFieldValue("embedding", new TensorFieldValue(Tensor.from("tensor(x[3]):[1,2,3]")));
doc2.setFieldValue("artist", "Asa-Chan & Jun-Ray");
+ doc2.setFieldValue("embedding", new TensorFieldValue(Tensor.from("tensor(x[3]):[4,5,6]")));
}
final Map<String, StorageCluster> clusters = Map.of("content", new StorageCluster("content",
@@ -229,13 +233,15 @@ public class DocumentV1ApiTest {
" {" +
" \"id\": \"id:space:music::one\"," +
" \"fields\": {" +
- " \"artist\": \"Tom Waits\"" +
+ " \"artist\": \"Tom Waits\", " +
+ " \"embedding\": { \"type\": \"tensor(x[3])\", \"values\": [1.0,2.0,3.0] } " +
" }" +
" }," +
" {" +
" \"id\": \"id:space:music:n=1:two\"," +
" \"fields\": {" +
- " \"artist\": \"Asa-Chan & Jun-Ray\"" +
+ " \"artist\": \"Asa-Chan & Jun-Ray\", " +
+ " \"embedding\": { \"type\": \"tensor(x[3])\", \"values\": [4.0,5.0,6.0] } " +
" }" +
" }," +
" {" +
@@ -278,13 +284,15 @@ public class DocumentV1ApiTest {
" {" +
" \"id\": \"id:space:music::one\"," +
" \"fields\": {" +
- " \"artist\": \"Tom Waits\"" +
+ " \"artist\": \"Tom Waits\"," +
+ " \"embedding\": { \"type\": \"tensor(x[3])\", \"values\": [1.0,2.0,3.0] } " +
" }" +
" }," +
" {" +
" \"id\": \"id:space:music:n=1:two\"," +
" \"fields\": {" +
- " \"artist\": \"Asa-Chan & Jun-Ray\"" +
+ " \"artist\": \"Asa-Chan & Jun-Ray\"," +
+ " \"embedding\": { \"type\": \"tensor(x[3])\", \"values\": [4.0,5.0,6.0] } " +
" }" +
" }" +
" ]," +
@@ -491,12 +499,13 @@ public class DocumentV1ApiTest {
parameters.responseHandler().get().handleResponse(new DocumentResponse(0, doc1));
return new Result();
});
- response = driver.sendRequest("http://localhost/document/v1/space/music/docid/one?");
+ response = driver.sendRequest("http://localhost/document/v1/space/music/docid/one?format.tensors=long");
assertSameJson("{" +
" \"pathId\": \"/document/v1/space/music/docid/one\"," +
" \"id\": \"id:space:music::one\"," +
" \"fields\": {" +
- " \"artist\": \"Tom Waits\"" +
+ " \"artist\": \"Tom Waits\"," +
+ " \"embedding\": { \"cells\": [{\"address\":{\"x\":\"0\"},\"value\":1.0},{\"address\":{\"x\":\"1\"},\"value\": 2.0},{\"address\":{\"x\":\"2\"},\"value\": 3.0}]}" +
" }" +
"}", response.readAll());
assertEquals(200, response.getStatus());
@@ -532,7 +541,8 @@ public class DocumentV1ApiTest {
response = driver.sendRequest("http://localhost/document/v1/space/music/number/1/two?condition=test%20it&tracelevel=9", POST,
"{" +
" \"fields\": {" +
- " \"artist\": \"Asa-Chan & Jun-Ray\"" +
+ " \"artist\": \"Asa-Chan & Jun-Ray\"," +
+ " \"embedding\": { \"values\": [4.0,5.0,6.0] } " +
" }" +
"}");
assertSameJson("{" +