aboutsummaryrefslogtreecommitdiffstats
path: root/logserver/src/test
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2019-03-27 17:41:39 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2019-04-24 17:39:30 +0200
commitbfdd40f8fc37a62851ce52dfc7962d551d3c5f23 (patch)
tree8997537d69c4f4eeda855fbdb52de181420bbe2b /logserver/src/test
parent3975dbc206434999e1b7f262b7dd58749e29a013 (diff)
Remove legacy protocol from logserver
Diffstat (limited to 'logserver/src/test')
-rw-r--r--logserver/src/test/files/logEntries.txt3
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/ServerTestCase.java6
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/net/test/LogConnectionTestCase.java210
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/test/MockLogEntries.java53
4 files changed, 2 insertions, 270 deletions
diff --git a/logserver/src/test/files/logEntries.txt b/logserver/src/test/files/logEntries.txt
deleted file mode 100644
index 776e3de882d..00000000000
--- a/logserver/src/test/files/logEntries.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1096639280.524133 malfunction 26851 - logtest info Starting up, called as ./log/logtest
-1096639280.524164 malfunction 26851 - logtest info backslash: \\
-1096639280.524133 malfunction 26851 - logtest fatal Starting up, called as ./log/logtest
diff --git a/logserver/src/test/java/com/yahoo/logserver/ServerTestCase.java b/logserver/src/test/java/com/yahoo/logserver/ServerTestCase.java
index e3793ee3057..23fa0b868b3 100644
--- a/logserver/src/test/java/com/yahoo/logserver/ServerTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/ServerTestCase.java
@@ -7,8 +7,6 @@ import com.yahoo.logserver.handlers.logmetrics.LogMetricsPlugin;
import com.yahoo.logserver.test.LogDispatcherTestCase;
import org.junit.Test;
-import java.io.IOException;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -21,10 +19,10 @@ import static org.junit.Assert.fail;
public class ServerTestCase {
@Test
- public void testStartupAndRegHandlers() throws IOException, InterruptedException {
+ public void testStartupAndRegHandlers() {
Server.help();
Server server = Server.getInstance();
- server.initialize(18322, 18323); // TODO Stop using hardcoded ports
+ server.initialize(0);
LogSetup.clearHandlers();
Thread serverThread = new Thread(server);
serverThread.start();
diff --git a/logserver/src/test/java/com/yahoo/logserver/net/test/LogConnectionTestCase.java b/logserver/src/test/java/com/yahoo/logserver/net/test/LogConnectionTestCase.java
deleted file mode 100644
index a68b62b122b..00000000000
--- a/logserver/src/test/java/com/yahoo/logserver/net/test/LogConnectionTestCase.java
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.logserver.net.test;
-
-import com.yahoo.log.LogLevel;
-import com.yahoo.log.LogMessage;
-import com.yahoo.logserver.LogDispatcher;
-import com.yahoo.logserver.handlers.AbstractLogHandler;
-import com.yahoo.logserver.net.LogConnection;
-import com.yahoo.logserver.test.MockLogEntries;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.nio.ByteBuffer;
-import java.nio.channels.ServerSocketChannel;
-import java.nio.channels.SocketChannel;
-import java.nio.charset.Charset;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.BrokenBarrierException;
-import java.util.concurrent.CyclicBarrier;
-import java.util.logging.Logger;
-
-import static org.junit.Assert.*;
-
-/**
- * Unit tests for the log connection class. Wow is this too
- * complex!
- *
- * @author Bjorn Borud
- */
-public class LogConnectionTestCase {
- private static final Logger log = Logger.getLogger(LogConnectionTestCase.class.getName());
-
- private static final Charset charset = Charset.forName("utf-8");
- private static final ByteBuffer bigBuffer;
- private int port;
-
- static {
- StringBuilder sb = new StringBuilder(LogConnection.READBUFFER_SIZE * 6)
- .append(MockLogEntries.getMessages()[0].toString())
- .append(MockLogEntries.getMessages()[1].toString())
- .append(MockLogEntries.getMessages()[2].toString());
-
- // get a valid log message prefix
- String prefix = MockLogEntries.getMessages()[2].toString();
- prefix = prefix.substring(0, prefix.length() - 1);
- sb.append(prefix);
-
- // fill up the remaining buffer with rubbish to make
- // it too long
- for (int i = 0; i < (LogConnection.READBUFFER_SIZE * 3); i++) {
- sb.append("a");
- }
- sb.append('\n');
- sb.append(MockLogEntries.getMessages()[2].toString());
- bigBuffer = charset.encode(sb.toString());
- }
-
- /**
- * this code is nothing short of completely hideous. the exception
- * handling is awful and the code is messy, but it should be a fairly
- * efficient and robust way of testing buffer overflow conditions.
- */
- @Test
- public void testOverflow() {
- final CyclicBarrier barrier = new CyclicBarrier(2);
-
-
- // this inner class is used to define a mock handler
- // which will help us examine the messages actually
- // handled.
- class MockHandler extends AbstractLogHandler {
- private final List<LogMessage> messages = new LinkedList<LogMessage>();
-
- public boolean doHandle(LogMessage msg) {
- messages.add(msg);
- return true;
- }
-
- public List<LogMessage> getMessages() {
- return messages;
- }
-
- public void flush() {
- }
-
- public void close() {
- }
-
- public String toString() {
- return null;
- }
- }
-
- Thread serverThread = new Thread() {
- public void run() {
- ServerSocketChannel ss = setUpListenSocket();
- if (ss == null) {
- fail("unable to set up listen socket");
- return;
- }
-
- setPort(ss.socket().getLocalPort());
-
- // listen port is up now so we can trigger the barrier
- try {
- barrier.await();
-
- while (!Thread.currentThread().isInterrupted()) {
- SocketChannel s = ss.accept();
- pushBigBuffer(s);
- s.close();
- }
- } catch (BrokenBarrierException e) {
- fail(e.getMessage());
- return;
- } catch (InterruptedException | java.nio.channels.ClosedByInterruptException e) {
- return;
- } catch (IOException e) {
- log.log(LogLevel.ERROR, "argh", e);
- fail();
- return;
- }
-
- }
- };
- serverThread.start();
- assertTrue(serverThread.isAlive());
-
- try {
- barrier.await();
- } catch (BrokenBarrierException e) {
- fail(e.getMessage());
- return;
- } catch (InterruptedException e) {
- return;
- }
-
- SocketChannel sock;
- try {
- sock = SocketChannel.open(new InetSocketAddress("localhost", port));
- } catch (IOException e) {
- fail(e.getMessage());
- return;
- }
-
- LogDispatcher dispatcher = new LogDispatcher();
- MockHandler mock = new MockHandler();
- assertTrue(mock.getName().endsWith("MockHandler"));
- dispatcher.registerLogHandler(mock);
- LogConnection logConnection =
- new LogConnection(sock, dispatcher);
-
- try {
- for (int i = 0; i < 100; i++) {
- logConnection.read();
- }
- } catch (java.nio.channels.ClosedChannelException e) {
- // ignore, this is normal
- } catch (IOException e) {
- log.log(LogLevel.ERROR, "error during reading", e);
- }
-
- // there should be 5 messages
- assertEquals(5, mock.getMessages().size());
- assertEquals(5, mock.getCount());
-
- // the 4'th message should be long
- String m = (mock.getMessages().get(3)).getPayload();
- assertTrue(m.length() > 10000);
-
- serverThread.interrupt();
- try {
- serverThread.join();
- assertTrue(true);
- } catch (InterruptedException e) {
- fail();
- }
- }
-
- private void pushBigBuffer(SocketChannel socket) {
- try {
- ByteBuffer slice = bigBuffer.slice();
- while (slice.hasRemaining()) {
- @SuppressWarnings("unused")
- int ret = socket.write(slice);
- }
- } catch (java.io.IOException e) {
-
- }
- }
-
- private void setPort(int port) {
- this.port = port;
- }
-
- private ServerSocketChannel setUpListenSocket() {
- int p = 18327;
- try {
- ServerSocketChannel s = ServerSocketChannel.open();
- s.socket().setReuseAddress(true);
- s.socket().bind(new InetSocketAddress("127.0.0.1", p));
- return s;
- } catch (Exception e) {
- fail(e.getMessage());
- }
- return null;
- }
-}
diff --git a/logserver/src/test/java/com/yahoo/logserver/test/MockLogEntries.java b/logserver/src/test/java/com/yahoo/logserver/test/MockLogEntries.java
deleted file mode 100644
index 67a51843de9..00000000000
--- a/logserver/src/test/java/com/yahoo/logserver/test/MockLogEntries.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.logserver.test;
-
-import com.yahoo.log.InvalidLogFormatException;
-import com.yahoo.log.LogMessage;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * This class is used to gain access to a bunch of log entries
- * so we can use the same log messages in several different tests
- *
- * @author Bjorn Borud
- */
-public class MockLogEntries {
- private static final MockLogEntries instance = new MockLogEntries();
-
- private final LogMessage[] messages;
-
- /**
- * Private constructor which reads the log messages and builds
- * an array of LogMessage entries.
- */
- private MockLogEntries() {
- List<LogMessage> msgs = new LinkedList<LogMessage>();
- try {
- String name = "src/test/files/logEntries.txt";
- BufferedReader br = new BufferedReader(new FileReader(name));
- for (String line = br.readLine(); line != null; line = br.readLine()) {
- LogMessage m = LogMessage.parseNativeFormat(line);
- msgs.add(m);
- }
- } catch (InvalidLogFormatException | IOException e) {
- // do nothing
- }
-
- LogMessage[] m = new LogMessage[msgs.size()];
- msgs.toArray(m);
- messages = m;
- }
-
- /**
- * Return the LogMessage instances we've constructed from the
- * stored log messages we have.
- */
- public static LogMessage[] getMessages() {
- return instance.messages;
- }
-}