You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2016/09/03 17:40:59 UTC

[05/10] logging-log4j2 git commit: Better test, less globals.

Better test, less globals.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/8cf7b108
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/8cf7b108
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/8cf7b108

Branch: refs/heads/master
Commit: 8cf7b1084887b1bfb6ce6bd6901480f6199625ae
Parents: 3659a82
Author: ggregory <gg...@apache.org>
Authored: Fri Sep 2 14:06:44 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Fri Sep 2 14:06:44 2016 -0700

----------------------------------------------------------------------
 .../log4j/core/appender/SocketAppenderTest.java | 72 +++++++++++---------
 1 file changed, 40 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8cf7b108/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java
index 648feed..b60ae6b 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java
@@ -63,38 +63,41 @@ public class SocketAppenderTest {
     private static final int DYN_PORT = AvailablePortFinder.getNextAvailable();
     private static final int ERROR_PORT = AvailablePortFinder.getNextAvailable();
 
-    static TCPSocketServer tcpServer;
-    static UDPSocketServer udpServer;
+    static TcpSocketTestServer tcpServer;
+    static UdpSocketTestServer udpServer;
 
     private LoggerContext context = LoggerContext.getContext();
-    private Logger root = context.getLogger(SocketAppenderTest.class.getName());
+    private Logger logger = context.getLogger(SocketAppenderTest.class.getName());
 
     @BeforeClass
     public static void setupClass() throws Exception {
-        tcpServer = new TCPSocketServer(PORT);
+        tcpServer = new TcpSocketTestServer(PORT);
         tcpServer.start();
-        udpServer = new UDPSocketServer();
+        udpServer = new UdpSocketTestServer();
         udpServer.start();
         (LoggerContext.getContext()).reconfigure();
+        ThreadContext.clearAll();
     }
 
     @AfterClass
     public static void cleanupClass() {
         tcpServer.shutdown();
         udpServer.shutdown();
+        ThreadContext.clearAll();
     }
 
     @After
     public void teardown() {
+        ThreadContext.clearAll();
         removeAndStopAppenders();
         reset();
     }
 
     void removeAndStopAppenders() {
-        final Map<String, Appender> map = root.getAppenders();
+        final Map<String, Appender> map = logger.getAppenders();
         for (final Map.Entry<String, Appender> entry : map.entrySet()) {
             final Appender appender = entry.getValue();
-            root.removeAppender(appender);
+            logger.removeAppender(appender);
             appender.stop();
         }
     }
@@ -106,21 +109,21 @@ public class SocketAppenderTest {
 
     @Test
     public void testTcpAppender1() throws Exception {
-        testTcpAppender(root, Constants.ENCODER_BYTE_BUFFER_SIZE, tcpServer.getQueue());
+        testTcpAppender(tcpServer, logger, Constants.ENCODER_BYTE_BUFFER_SIZE);
     }
 
     @Test
     @Ignore("WIP Bug when this method runs after testTcpAppender1()")
     public void testTcpAppender2() throws Exception {
-        testTcpAppender(root, Constants.ENCODER_BYTE_BUFFER_SIZE, tcpServer.getQueue());
+        testTcpAppender(tcpServer, logger, Constants.ENCODER_BYTE_BUFFER_SIZE);
     }
 
-    static void testTcpAppender(final Logger rootLogger, final int bufferSize, final BlockingQueue<LogEvent> blockingQ)
+    static void testTcpAppender(TcpSocketTestServer tcpTestServer, final Logger rootLogger, final int bufferSize)
             throws Exception {
         // @formatter:off
         final SocketAppender appender = SocketAppender.newBuilder()
                 .withHost("localhost")
-                .withPort(PORT)
+                .withPort(tcpTestServer.getLocalPort())
                 .withReconnectDelayMillis(-1)
                 .withName("test")
                 .withImmediateFail(false)
@@ -149,15 +152,15 @@ public class SocketAppenderTest {
             ThreadContext.pop();
         }
         Thread.sleep(250);
-        LogEvent event = blockingQ.poll(3, TimeUnit.SECONDS);
+        LogEvent event = tcpTestServer.getQueue().poll(3, TimeUnit.SECONDS);
         assertNotNull("No event retrieved", event);
         assertTrue("Incorrect event", event.getMessage().getFormattedMessage().equals("This is a test message"));
-        assertTrue("Message not delivered via TCP", tcpServer.getCount() > 0);
+        assertTrue("Message not delivered via TCP", tcpTestServer.getCount() > 0);
         assertEquals(expectedUuidStr, event.getContextMap().get(tcKey));
-        event = blockingQ.poll(3, TimeUnit.SECONDS);
+        event = tcpTestServer.getQueue().poll(3, TimeUnit.SECONDS);
         assertNotNull("No event retrieved", event);
         assertTrue("Incorrect event", event.getMessage().getFormattedMessage().equals("Throwing an exception"));
-        assertTrue("Message not delivered via TCP", tcpServer.getCount() > 1);
+        assertTrue("Message not delivered via TCP", tcpTestServer.getCount() > 1);
         assertEquals(expectedUuidStr, event.getContextStack().pop());
         assertNotNull(event.getThrownProxy());
         assertEquals(expectedExMsg, event.getThrownProxy().getMessage());
@@ -199,10 +202,10 @@ public class SocketAppenderTest {
         appender.start();
 
         // set appender on root and set level to debug
-        root.addAppender(appender);
-        root.setAdditive(false);
-        root.setLevel(Level.DEBUG);
-        root.debug("This is a udp message");
+        logger.addAppender(appender);
+        logger.setAdditive(false);
+        logger.setLevel(Level.DEBUG);
+        logger.debug("This is a udp message");
         final LogEvent event = udpServer.getQueue().poll(3, TimeUnit.SECONDS);
         assertNotNull("No event retrieved", event);
         assertTrue("Incorrect event", event.getMessage().getFormattedMessage().equals("This is a udp message"));
@@ -223,15 +226,15 @@ public class SocketAppenderTest {
         // @formatter:on
         appender.start();
         // set appender on root and set level to debug
-        root.addAppender(appender);
-        root.setAdditive(false);
-        root.setLevel(Level.DEBUG);
+        logger.addAppender(appender);
+        logger.setAdditive(false);
+        logger.setLevel(Level.DEBUG);
 
-        final TCPSocketServer tcpSocketServer = new TCPSocketServer(DYN_PORT);
+        final TcpSocketTestServer tcpSocketServer = new TcpSocketTestServer(DYN_PORT);
         try {
             tcpSocketServer.start();
 
-            root.debug("This message is written because a deadlock never.");
+            logger.debug("This message is written because a deadlock never.");
 
             final LogEvent event = tcpSocketServer.getQueue().poll(3, TimeUnit.SECONDS);
             assertNotNull("No event retrieved", event);
@@ -254,12 +257,12 @@ public class SocketAppenderTest {
         // @formatter:on
         appender.start();
         // set appender on root and set level to debug
-        root.addAppender(appender);
-        root.setAdditive(false);
-        root.setLevel(Level.DEBUG);
+        logger.addAppender(appender);
+        logger.setAdditive(false);
+        logger.setLevel(Level.DEBUG);
 
         try {
-            root.debug("This message is written because a deadlock never.");
+            logger.debug("This message is written because a deadlock never.");
             fail("No Exception was thrown");
         } catch (final Exception ex) {
             // TODO: move exception to @Test(expect = Exception.class)
@@ -268,7 +271,8 @@ public class SocketAppenderTest {
         }
     }
 
-    public static class UDPSocketServer extends Thread {
+    public static class UdpSocketTestServer extends Thread {
+        
         private final DatagramSocket sock;
         private boolean shutdown = false;
         private Thread thread;
@@ -276,7 +280,7 @@ public class SocketAppenderTest {
         private volatile int count = 0;
         private final BlockingQueue<LogEvent> queue;
 
-        public UDPSocketServer() throws IOException {
+        public UdpSocketTestServer() throws IOException {
             this.sock = new DatagramSocket(PORT);
             this.queue = new ArrayBlockingQueue<>(10);
         }
@@ -323,18 +327,22 @@ public class SocketAppenderTest {
         }
     }
 
-    public static class TCPSocketServer extends Thread {
+    public static class TcpSocketTestServer extends Thread {
 
         private final ServerSocket sock;
         private volatile boolean shutdown = false;
         private volatile int count = 0;
         private final BlockingQueue<LogEvent> queue;
 
-        public TCPSocketServer(final int port) throws IOException {
+        public TcpSocketTestServer(final int port) throws IOException {
             this.sock = new ServerSocket(port);
             this.queue = new ArrayBlockingQueue<>(10);
         }
 
+        public int getLocalPort() {
+            return sock.getLocalPort();
+        }
+        
         public void reset() {
             queue.clear();
             count = 0;