diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-04-24 15:33:05 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-04-24 21:47:37 +0200 |
commit | 7ad9d874ba3f3fa003e7a60c0980967e01273272 (patch) | |
tree | 4cba4d302573deea84a75035998161224eb31222 /vespa_feed_perf/src/test | |
parent | 3975dbc206434999e1b7f262b7dd58749e29a013 (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.java | 45 | ||||
-rw-r--r-- | vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java | 87 |
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; |