aboutsummaryrefslogtreecommitdiffstats
path: root/vespa_feed_perf
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-04-24 11:54:21 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2019-04-24 12:59:23 +0200
commit0be90c67258e78ee886b4c96ea443f9b0317ca32 (patch)
treee6a81ea59779fbc0395be0af89b3b99d0eb9604d /vespa_feed_perf
parent82643b519b995d654aca59ed86bdc72c1de4d8df (diff)
Add support for json
Diffstat (limited to 'vespa_feed_perf')
-rw-r--r--vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java16
-rw-r--r--vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java25
2 files changed, 38 insertions, 3 deletions
diff --git a/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java b/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
index e55cd27f7da..0b6604fed1e 100644
--- a/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
+++ b/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.feed.perf;
import com.yahoo.concurrent.ThreadFactoryFactory;
import com.yahoo.document.DocumentPut;
import com.yahoo.document.DocumentTypeManager;
+import com.yahoo.document.json.JsonFeedReader;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
import com.yahoo.documentapi.messagebus.protocol.PutDocumentMessage;
import com.yahoo.documentapi.messagebus.protocol.RemoveDocumentMessage;
@@ -19,6 +20,7 @@ import com.yahoo.messagebus.SourceSessionParams;
import com.yahoo.messagebus.StaticThrottlePolicy;
import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
import com.yahoo.messagebus.routing.Route;
+import com.yahoo.vespaxmlparser.FeedReader;
import com.yahoo.vespaxmlparser.VespaXMLFeedReader;
import java.io.IOException;
@@ -86,6 +88,18 @@ public class SimpleFeeder implements ReplyHandler {
} catch (InterruptedException e) {}
}
+ private FeedReader createFeedReader() throws Exception {
+ in.mark(8);
+ byte b[] = new byte[1];
+ in.read(b);
+ in.reset();
+ if (b[0] == '[') {
+ return new JsonFeedReader(in, docTypeMgr);
+ } else {
+ return new VespaXMLFeedReader(in, docTypeMgr);
+ }
+ }
+
SimpleFeeder run() throws Throwable {
ExecutorService executor = (numThreads > 1)
? new ThreadPoolExecutor(numThreads, numThreads, 0L, TimeUnit.SECONDS,
@@ -93,7 +107,7 @@ public class SimpleFeeder implements ReplyHandler {
ThreadFactoryFactory.getDaemonThreadFactory("perf-feeder"),
new ThreadPoolExecutor.CallerRunsPolicy())
: null;
- VespaXMLFeedReader reader = new VespaXMLFeedReader(in, docTypeMgr);
+ FeedReader reader = createFeedReader();
printHeader();
long numMessages = 0;
diff --git a/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java b/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java
index 89e52eeee19..25c56a5cc57 100644
--- a/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java
+++ b/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java
@@ -36,7 +36,7 @@ public class SimpleFeederTest {
private static final String CONFIG_DIR = "target/test-classes/";
@Test
- public void requireThatFeederWorks() throws Throwable {
+ public void requireThatXMLFeederWorks() throws Throwable {
assertFeed("<vespafeed>" +
" <document documenttype='simple' documentid='doc:scheme:0'>" +
" <my_str>foo</my_str>" +
@@ -61,6 +61,27 @@ public class SimpleFeederTest {
}
@Test
+ public void requireThatJsonFeederWorks() throws Throwable {
+ assertFeed("[" +
+ " { \"put\": \"id:simple:simple::0\", \"fields\": { \"my_str\":\"foo\"}}," +
+ " { \"update\": \"id:simple:simple::1\", \"fields\": { \"my_str\": { \"assign\":\"bar\"}}}," +
+ " { \"remove\": \"id:simple:simple::2\"}" +
+ "]",
+ new MessageHandler() {
+
+ @Override
+ public void handleMessage(Message msg) {
+ Reply reply = ((DocumentMessage)msg).createReply();
+ reply.swapState(msg);
+ reply.popHandler().handleReply(reply);
+ }
+ },
+ "",
+ "(.+\n)+" +
+ "\\s*\\d+,\\s*3,.+\n");
+ }
+
+ @Test
public void requireThatParseFailuresThrowInMainThread() throws Throwable {
TestDriver driver = new TestDriver(new FeederParams(),
"<vespafeed>" +
@@ -175,7 +196,7 @@ public class SimpleFeederTest {
final SimpleFeeder feeder;
final SimpleServer server;
- public TestDriver(FeederParams params, String in, MessageHandler validator)
+ TestDriver(FeederParams params, String in, MessageHandler validator)
throws IOException, ListenFailedException {
server = new SimpleServer(CONFIG_DIR, validator);
feeder = new SimpleFeeder(params.setConfigId("dir:" + CONFIG_DIR)