diff --git a/src/main/java/info/fetter/logstashforwarder/Event.java b/src/main/java/info/fetter/logstashforwarder/Event.java index 0746722..1ae1c50 100644 --- a/src/main/java/info/fetter/logstashforwarder/Event.java +++ b/src/main/java/info/fetter/logstashforwarder/Event.java @@ -56,4 +56,8 @@ public class Event { public Map getKeyValues() { return keyValues; } + + public byte[] getValue(String fieldName) { + return keyValues.get(fieldName); + } } diff --git a/src/main/java/info/fetter/logstashforwarder/FileReader.java b/src/main/java/info/fetter/logstashforwarder/FileReader.java index b5a5588..39ce483 100644 --- a/src/main/java/info/fetter/logstashforwarder/FileReader.java +++ b/src/main/java/info/fetter/logstashforwarder/FileReader.java @@ -25,7 +25,6 @@ import java.io.RandomAccessFile; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.apache.log4j.Logger; diff --git a/src/test/java/info/fetter/logstashforwarder/InputReaderTest.java b/src/test/java/info/fetter/logstashforwarder/InputReaderTest.java index 90e32dd..4eb2ae6 100644 --- a/src/test/java/info/fetter/logstashforwarder/InputReaderTest.java +++ b/src/test/java/info/fetter/logstashforwarder/InputReaderTest.java @@ -20,21 +20,17 @@ package info.fetter.logstashforwarder; import static org.apache.log4j.Level.*; import info.fetter.logstashforwarder.util.AdapterException; -import java.io.File; import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.io.FileUtils; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import org.apache.log4j.spi.RootLogger; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; +import static org.junit.Assert.*; public class InputReaderTest { Logger logger = Logger.getLogger(InputReaderTest.class); @@ -52,39 +48,77 @@ public class InputReaderTest { @Test public void testInputReader1() throws IOException, InterruptedException, AdapterException { + int numberOfEvents = 0; PipedInputStream in = new PipedInputStream(); PipedOutputStream out = new PipedOutputStream(in); PrintWriter writer = new PrintWriter(out); InputReader reader = new InputReader(2, in, null); - reader.setAdapter(new MockProtocolAdapter()); + MockProtocolAdapter adapter = new MockProtocolAdapter(); + reader.setAdapter(adapter); - reader.readInput(); + numberOfEvents = reader.readInput(); + assertEquals(0, numberOfEvents); writer.println("line1"); writer.flush(); - reader.readInput(); + numberOfEvents = reader.readInput(); + assertEquals(1, numberOfEvents); + assertArrayEquals("line1".getBytes(), adapter.getLastEvents().get(0).getValue("line")); writer.print("line2"); writer.flush(); - reader.readInput(); + numberOfEvents = reader.readInput(); + assertEquals(0, numberOfEvents); writer.println(); writer.flush(); - reader.readInput(); + numberOfEvents = reader.readInput(); + assertEquals(1, numberOfEvents); + assertArrayEquals("line2".getBytes(), adapter.getLastEvents().get(0).getValue("line")); writer.println("line3"); writer.println("line4"); writer.println("line5"); writer.flush(); - reader.readInput(); + numberOfEvents = reader.readInput(); + assertEquals(2, numberOfEvents); + assertArrayEquals("line3".getBytes(), adapter.getLastEvents().get(0).getValue("line")); + assertArrayEquals("line4".getBytes(), adapter.getLastEvents().get(1).getValue("line")); - reader.readInput(); - reader.readInput(); + numberOfEvents = reader.readInput(); + assertEquals(1, numberOfEvents); + assertArrayEquals("line5".getBytes(), adapter.getLastEvents().get(0).getValue("line")); + + numberOfEvents = reader.readInput(); + assertEquals(0, numberOfEvents); - while(in.available() > 0) { - logger.trace("read : " + in.read()); - } + assertEquals(0, in.available()); writer.close(); } + + @Test + public void testInputReaderCloseStream() throws AdapterException, IOException { + int numberOfEvents = 0; + PipedInputStream in = new PipedInputStream(); + PipedOutputStream out = new PipedOutputStream(in); + PrintWriter writer = new PrintWriter(out); + InputReader reader = new InputReader(2, in, null); + MockProtocolAdapter adapter = new MockProtocolAdapter(); + reader.setAdapter(adapter); + + numberOfEvents = reader.readInput(); + assertEquals(0, numberOfEvents); + + writer.println("line1"); + writer.flush(); + numberOfEvents = reader.readInput(); + assertEquals(1, numberOfEvents); + assertArrayEquals("line1".getBytes(), adapter.getLastEvents().get(0).getValue("line")); + + writer.close(); + in.close(); + + numberOfEvents = reader.readInput(); + } } diff --git a/src/test/java/info/fetter/logstashforwarder/MockProtocolAdapter.java b/src/test/java/info/fetter/logstashforwarder/MockProtocolAdapter.java index 12185f0..a281466 100644 --- a/src/test/java/info/fetter/logstashforwarder/MockProtocolAdapter.java +++ b/src/test/java/info/fetter/logstashforwarder/MockProtocolAdapter.java @@ -17,12 +17,14 @@ package info.fetter.logstashforwarder; * */ +import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; public class MockProtocolAdapter implements ProtocolAdapter { private static Logger logger = Logger.getLogger(MockProtocolAdapter.class); + private List lastEvents; public int sendEvents(List eventList) { for(Event event : eventList) { @@ -31,8 +33,13 @@ public class MockProtocolAdapter implements ProtocolAdapter { logger.trace("-- " + key + ":" + new String(event.getKeyValues().get(key))); } } + lastEvents = new ArrayList(eventList); return eventList.size(); } + + public List getLastEvents() { + return lastEvents; + } public void close() { // not implemented