mirror of
https://github.com/Febbweiss/logstash-forwarder-java.git
synced 2026-03-04 22:25:39 +00:00
Improved InputReader testing.
This commit is contained in:
@@ -56,4 +56,8 @@ public class Event {
|
|||||||
public Map<String,byte[]> getKeyValues() {
|
public Map<String,byte[]> getKeyValues() {
|
||||||
return keyValues;
|
return keyValues;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public byte[] getValue(String fieldName) {
|
||||||
|
return keyValues.get(fieldName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.io.RandomAccessFile;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|||||||
@@ -20,21 +20,17 @@ package info.fetter.logstashforwarder;
|
|||||||
import static org.apache.log4j.Level.*;
|
import static org.apache.log4j.Level.*;
|
||||||
import info.fetter.logstashforwarder.util.AdapterException;
|
import info.fetter.logstashforwarder.util.AdapterException;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PipedInputStream;
|
import java.io.PipedInputStream;
|
||||||
import java.io.PipedOutputStream;
|
import java.io.PipedOutputStream;
|
||||||
import java.io.PrintWriter;
|
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.BasicConfigurator;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.apache.log4j.spi.RootLogger;
|
import org.apache.log4j.spi.RootLogger;
|
||||||
import org.junit.AfterClass;
|
import org.junit.AfterClass;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
public class InputReaderTest {
|
public class InputReaderTest {
|
||||||
Logger logger = Logger.getLogger(InputReaderTest.class);
|
Logger logger = Logger.getLogger(InputReaderTest.class);
|
||||||
@@ -52,39 +48,77 @@ public class InputReaderTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testInputReader1() throws IOException, InterruptedException, AdapterException {
|
public void testInputReader1() throws IOException, InterruptedException, AdapterException {
|
||||||
|
int numberOfEvents = 0;
|
||||||
PipedInputStream in = new PipedInputStream();
|
PipedInputStream in = new PipedInputStream();
|
||||||
PipedOutputStream out = new PipedOutputStream(in);
|
PipedOutputStream out = new PipedOutputStream(in);
|
||||||
PrintWriter writer = new PrintWriter(out);
|
PrintWriter writer = new PrintWriter(out);
|
||||||
InputReader reader = new InputReader(2, in, null);
|
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.println("line1");
|
||||||
writer.flush();
|
writer.flush();
|
||||||
reader.readInput();
|
numberOfEvents = reader.readInput();
|
||||||
|
assertEquals(1, numberOfEvents);
|
||||||
|
assertArrayEquals("line1".getBytes(), adapter.getLastEvents().get(0).getValue("line"));
|
||||||
|
|
||||||
writer.print("line2");
|
writer.print("line2");
|
||||||
writer.flush();
|
writer.flush();
|
||||||
reader.readInput();
|
numberOfEvents = reader.readInput();
|
||||||
|
assertEquals(0, numberOfEvents);
|
||||||
|
|
||||||
writer.println();
|
writer.println();
|
||||||
writer.flush();
|
writer.flush();
|
||||||
reader.readInput();
|
numberOfEvents = reader.readInput();
|
||||||
|
assertEquals(1, numberOfEvents);
|
||||||
|
assertArrayEquals("line2".getBytes(), adapter.getLastEvents().get(0).getValue("line"));
|
||||||
|
|
||||||
writer.println("line3");
|
writer.println("line3");
|
||||||
writer.println("line4");
|
writer.println("line4");
|
||||||
writer.println("line5");
|
writer.println("line5");
|
||||||
writer.flush();
|
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();
|
numberOfEvents = reader.readInput();
|
||||||
reader.readInput();
|
assertEquals(1, numberOfEvents);
|
||||||
|
assertArrayEquals("line5".getBytes(), adapter.getLastEvents().get(0).getValue("line"));
|
||||||
|
|
||||||
|
numberOfEvents = reader.readInput();
|
||||||
|
assertEquals(0, numberOfEvents);
|
||||||
|
|
||||||
while(in.available() > 0) {
|
assertEquals(0, in.available());
|
||||||
logger.trace("read : " + in.read());
|
|
||||||
}
|
|
||||||
|
|
||||||
writer.close();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,12 +17,14 @@ package info.fetter.logstashforwarder;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
public class MockProtocolAdapter implements ProtocolAdapter {
|
public class MockProtocolAdapter implements ProtocolAdapter {
|
||||||
private static Logger logger = Logger.getLogger(MockProtocolAdapter.class);
|
private static Logger logger = Logger.getLogger(MockProtocolAdapter.class);
|
||||||
|
private List<Event> lastEvents;
|
||||||
|
|
||||||
public int sendEvents(List<Event> eventList) {
|
public int sendEvents(List<Event> eventList) {
|
||||||
for(Event event : eventList) {
|
for(Event event : eventList) {
|
||||||
@@ -31,8 +33,13 @@ public class MockProtocolAdapter implements ProtocolAdapter {
|
|||||||
logger.trace("-- " + key + ":" + new String(event.getKeyValues().get(key)));
|
logger.trace("-- " + key + ":" + new String(event.getKeyValues().get(key)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
lastEvents = new ArrayList<Event>(eventList);
|
||||||
return eventList.size();
|
return eventList.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Event> getLastEvents() {
|
||||||
|
return lastEvents;
|
||||||
|
}
|
||||||
|
|
||||||
public void close() {
|
public void close() {
|
||||||
// not implemented
|
// not implemented
|
||||||
|
|||||||
Reference in New Issue
Block a user