aboutsummaryrefslogtreecommitdiffstats
path: root/vespa_feed_perf/src/test
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-04-24 15:33:05 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2019-04-24 21:47:37 +0200
commit7ad9d874ba3f3fa003e7a60c0980967e01273272 (patch)
tree4cba4d302573deea84a75035998161224eb31222 /vespa_feed_perf/src/test
parent3975dbc206434999e1b7f262b7dd58749e29a013 (diff)
Add support for dumping as json
Diffstat (limited to 'vespa_feed_perf/src/test')
-rw-r--r--vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/FeederParamsTest.java45
-rw-r--r--vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java87
2 files changed, 105 insertions, 27 deletions
diff --git a/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/FeederParamsTest.java b/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/FeederParamsTest.java
index f08e494a717..b2800110a39 100644
--- a/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/FeederParamsTest.java
+++ b/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/FeederParamsTest.java
@@ -4,14 +4,20 @@ package com.yahoo.vespa.feed.perf;
import com.yahoo.messagebus.routing.Route;
import org.apache.commons.cli.ParseException;
import org.junit.Test;
-import org.mockito.Mockito;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.io.PrintStream;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
@@ -19,28 +25,24 @@ import static org.junit.Assert.assertTrue;
* @author Simon Thoresen Hult
*/
public class FeederParamsTest {
+ static final String TESTFILE = "test.json";
@Test
public void requireThatAccessorsWork() {
FeederParams params = new FeederParams();
- InputStream stdIn = Mockito.mock(InputStream.class);
+ InputStream stdIn = new ByteArrayInputStream(new byte[1]);
params.setStdIn(stdIn);
assertSame(stdIn, params.getStdIn());
- PrintStream stdErr = Mockito.mock(PrintStream.class);
+ PrintStream stdErr = new PrintStream(new ByteArrayOutputStream());
params.setStdErr(stdErr);
assertSame(stdErr, params.getStdErr());
- PrintStream stdOut = Mockito.mock(PrintStream.class);
+ PrintStream stdOut = new PrintStream(new ByteArrayOutputStream());
params.setStdOut(stdOut);
assertSame(stdOut, params.getStdOut());
- Route route = Route.parse("my_route");
- params.setRoute(route);
- assertEquals(route, params.getRoute());
- assertNotSame(route, params.getRoute());
-
params.setConfigId("my_config_id");
assertEquals("my_config_id", params.getConfigId());
@@ -62,7 +64,7 @@ public class FeederParamsTest {
}
@Test
- public void requireThatSerialTransferOptionIsParsed() throws ParseException {
+ public void requireThatSerialTransferOptionIsParsed() throws ParseException, FileNotFoundException {
assertTrue(new FeederParams().parseArgs("-s").isSerialTransferEnabled());
assertTrue(new FeederParams().parseArgs("foo", "-s").isSerialTransferEnabled());
assertTrue(new FeederParams().parseArgs("-s", "foo").isSerialTransferEnabled());
@@ -72,23 +74,30 @@ public class FeederParamsTest {
}
@Test
- public void requireThatArgumentsAreParsedAsRoute() throws ParseException {
- assertEquals(Route.parse("foo bar"), new FeederParams().parseArgs("foo", "bar").getRoute());
- assertEquals(Route.parse("foo bar"), new FeederParams().parseArgs("-s", "foo", "bar").getRoute());
- assertEquals(Route.parse("foo bar"), new FeederParams().parseArgs("foo", "-s", "bar").getRoute());
- assertEquals(Route.parse("foo bar"), new FeederParams().parseArgs("foo", "bar", "-s").getRoute());
+ public void requireThatArgumentsAreParsedAsRoute() throws ParseException, FileNotFoundException {
+ assertEquals(Route.parse("foo bar"), new FeederParams().parseArgs("-r foo bar").getRoute());
+ assertEquals(Route.parse("foo bar"), new FeederParams().parseArgs("--route","foo bar").getRoute());
}
@Test
- public void requireThatRouteIsAnOptionalArgument() throws ParseException {
+ public void requireThatRouteIsAnOptionalArgument() throws ParseException, FileNotFoundException {
assertEquals(Route.parse("default"), new FeederParams().parseArgs().getRoute());
assertEquals(Route.parse("default"), new FeederParams().parseArgs("-s").getRoute());
}
@Test
- public void requireThatNumThreadsAreParsed() throws ParseException {
+ public void requireThatNumThreadsAreParsed() throws ParseException, FileNotFoundException {
assertEquals(1, new FeederParams().getNumDispatchThreads());
assertEquals(17, new FeederParams().parseArgs("-n 17").getNumDispatchThreads());
}
+ @Test
+ public void requireThatDumpStreamAreParsed() throws ParseException, IOException {
+ assertNull(new FeederParams().getDumpStream());
+ OutputStream dumpStream = new FeederParams().parseArgs("-o " + TESTFILE).getDumpStream();
+ assertNotNull(dumpStream);
+ dumpStream.close();
+ assertTrue(new File(TESTFILE).delete());
+ }
+
}
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 25c56a5cc57..f93657138ca 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
@@ -61,6 +61,76 @@ public class SimpleFeederTest {
}
@Test
+ public void requireThatXML2JsonFeederWorks() throws Throwable {
+ ByteArrayOutputStream dump = new ByteArrayOutputStream();
+ assertFeed(new FeederParams().setDumpStream(dump),
+ "<vespafeed>" +
+ " <document documenttype='simple' documentid='id:simple:simple::0'>" +
+ " <my_str>foo</my_str>" +
+ " </document>" +
+ " <update documenttype='simple' documentid='id:simple:simple::1'>" +
+ " <assign field='my_str'>bar</assign>" +
+ " </update>" +
+ " <remove documenttype='simple' documentid='id:simple:simple::2'/>" +
+ "</vespafeed>",
+ 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");
+ assertEquals(58, dump.size());
+ assertEquals("[\n{\"id\":\"id:simple:simple::0\",\"fields\":{\"my_str\":\"foo\"}}\n]", dump.toString());
+ }
+
+ @Test
+ public void requireThatDualPutXML2JsonFeederWorks() throws Throwable {
+ ByteArrayOutputStream dump = new ByteArrayOutputStream();
+ assertFeed(new FeederParams().setDumpStream(dump),
+ "<vespafeed>" +
+ " <document documenttype='simple' documentid='id:simple:simple::0'>" +
+ " <my_str>foo</my_str>" +
+ " </document>" +
+ " <document documenttype='simple' documentid='id:simple:simple::1'>" +
+ " <my_str>bar</my_str>" +
+ " </document>" +
+ " <remove documenttype='simple' documentid='id:simple:simple::2'/>" +
+ "</vespafeed>",
+ 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");
+ assertEquals(115, dump.size());
+ assertEquals("[\n{\"id\":\"id:simple:simple::0\",\"fields\":{\"my_str\":\"foo\"}},\n {\"id\":\"id:simple:simple::1\",\"fields\":{\"my_str\":\"bar\"}}\n]", dump.toString());
+ assertFeed(dump.toString(),
+ new MessageHandler() {
+ @Override
+ public void handleMessage(Message msg) {
+ Reply reply = ((DocumentMessage)msg).createReply();
+ reply.swapState(msg);
+ reply.popHandler().handleReply(reply);
+ }
+ },
+ "",
+ "(.+\n)+" +
+ "\\s*\\d+,\\s*2,.+\n");
+ }
+
+ @Test
public void requireThatJsonFeederWorks() throws Throwable {
assertFeed("[" +
" { \"put\": \"id:simple:simple::0\", \"fields\": { \"my_str\":\"foo\"}}," +
@@ -105,7 +175,7 @@ public class SimpleFeederTest {
" <document documenttype='simple' documentid='doc:scheme:0'/>" +
"</vespafeed>",
null);
- getSourceSession(driver).close();
+ driver.feeder.getSourceSession().close();
try {
driver.run();
fail();
@@ -156,12 +226,8 @@ public class SimpleFeederTest {
assertTrue(driver.close());
}
- private static SourceSession getSourceSession(TestDriver driver) {
- return (SourceSession)getField(driver.feeder, "session");
- }
-
private static ThrottlePolicy getThrottlePolicy(TestDriver driver) {
- return (ThrottlePolicy)getField(getSourceSession(driver), "throttlePolicy");
+ return (ThrottlePolicy)getField(driver.feeder.getSourceSession(), "throttlePolicy");
}
private static Object getField(Object obj, String fieldName) {
@@ -174,9 +240,12 @@ public class SimpleFeederTest {
}
}
- private static void assertFeed(String in, MessageHandler validator, String expectedErr, String expectedOut)
+ private static void assertFeed(String in, MessageHandler validator, String expectedErr, String expectedOut) throws Throwable {
+ assertFeed(new FeederParams(), in, validator, expectedErr, expectedOut);
+ }
+ private static void assertFeed(FeederParams params, String in, MessageHandler validator, String expectedErr, String expectedOut)
throws Throwable {
- TestDriver driver = new TestDriver(new FeederParams(), in, validator);
+ TestDriver driver = new TestDriver(params, in, validator);
driver.run();
assertMatches(expectedErr, new String(driver.err.toByteArray(), StandardCharsets.UTF_8));
assertMatches(expectedOut, new String(driver.out.toByteArray(), StandardCharsets.UTF_8));
@@ -209,7 +278,7 @@ public class SimpleFeederTest {
feeder.run();
}
- boolean close() {
+ boolean close() throws Exception {
feeder.close();
server.close();
return true;