diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2019-03-27 17:41:39 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2019-04-24 17:39:30 +0200 |
commit | bfdd40f8fc37a62851ce52dfc7962d551d3c5f23 (patch) | |
tree | 8997537d69c4f4eeda855fbdb52de181420bbe2b /logserver/src/test | |
parent | 3975dbc206434999e1b7f262b7dd58749e29a013 (diff) |
Remove legacy protocol from logserver
Diffstat (limited to 'logserver/src/test')
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; - } -} |