You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/09/06 06:58:58 UTC

[25/29] git commit: Add backwards compatibility tests for JMS appender.

Add backwards compatibility tests for JMS appender.


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

Branch: refs/heads/master
Commit: 7aec0b5ab93533d73ae2ecd8f6d348152f619008
Parents: a1ea15b
Author: Matt Sicker <ma...@apache.org>
Authored: Fri Sep 5 23:46:37 2014 -0500
Committer: Matt Sicker <ma...@apache.org>
Committed: Fri Sep 5 23:46:37 2014 -0500

----------------------------------------------------------------------
 .../log4j/mom/jms/appender/JmsAppenderTest.java | 85 +++++++++++++++-----
 .../src/test/resources/JmsAppenderTest.xml      | 15 +++-
 2 files changed, 77 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7aec0b5a/log4j-jms/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-jms/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsAppenderTest.java b/log4j-jms/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsAppenderTest.java
index 8e54681..743a4eb 100644
--- a/log4j-jms/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsAppenderTest.java
+++ b/log4j-jms/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsAppenderTest.java
@@ -1,6 +1,7 @@
 package org.apache.logging.log4j.mom.jms.appender;
 
 import javax.jms.Message;
+import javax.jms.ObjectMessage;
 import javax.jms.TextMessage;
 import javax.naming.Context;
 import javax.naming.InitialContext;
@@ -8,16 +9,17 @@ import javax.naming.InitialContext;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.apache.logging.log4j.core.util.Closer;
+import org.apache.logging.log4j.core.util.JndiCloser;
 import org.apache.logging.log4j.junit.InitialLoggerContext;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.junit.AfterClass;
-import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.mockejb.jms.MockQueue;
+import org.mockejb.jms.MockTopic;
 import org.mockejb.jms.QueueConnectionFactoryImpl;
+import org.mockejb.jms.TopicConnectionFactoryImpl;
 import org.mockejb.jndi.MockContextFactory;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
@@ -25,55 +27,96 @@ import static org.junit.Assert.*;
 
 public class JmsAppenderTest {
 
-    private static final String CONNECTION_FACTORY_NAME = "jms/activemq";
+    private static final String CONNECTION_FACTORY_NAME = "jms/queues";
+    private static final String TOPIC_FACTORY_NAME = "jms/topics";
     private static final String DESTINATION_NAME = "jms/destination";
+    private static final String QUEUE_NAME = "jms/queue";
+    private static final String TOPIC_NAME = "jms/topic";
     private static final String LOG_MESSAGE = "Hello, world!";
 
     private static Context context;
 
-    private JmsAppender appender;
+    private static MockQueue destination;
     private static MockQueue queue;
+    private static MockTopic topic;
 
     @BeforeClass
     public static void setUpClass() throws Exception {
         MockContextFactory.setAsInitial();
         context = new InitialContext();
         context.rebind(CONNECTION_FACTORY_NAME, new QueueConnectionFactoryImpl());
-        queue = new MockQueue(DESTINATION_NAME);
-        context.rebind(DESTINATION_NAME, queue);
+        context.rebind(TOPIC_FACTORY_NAME, new TopicConnectionFactoryImpl());
+        destination = new MockQueue(DESTINATION_NAME);
+        context.rebind(DESTINATION_NAME, destination);
+        queue = new MockQueue(QUEUE_NAME);
+        context.rebind(QUEUE_NAME, queue);
+        topic = new MockTopic(TOPIC_NAME);
+        context.rebind(TOPIC_NAME, topic);
     }
 
     @AfterClass
     public static void tearDownClass() throws Exception {
-        Closer.closeSilently(context);
+        JndiCloser.close(context);
     }
 
     @Rule
     public InitialLoggerContext ctx = new InitialLoggerContext("JmsAppenderTest.xml");
 
-    @Before
-    public void setUp() throws Exception {
-        appender = (JmsAppender) ctx.getAppender("JmsQueueAppender");
-        assertEquals(0, queue.size());
-    }
-
     @Test
     public void testAppendToQueue() throws Exception {
-        final String loggerName = this.getClass().getName();
-        final long now = System.currentTimeMillis();
-        final LogEvent event = createLogEvent(loggerName, now);
+        assertEquals(0, destination.size());
+        final JmsAppender appender = (JmsAppender) ctx.getRequiredAppender("JmsAppender");
+        final LogEvent event = createLogEvent();
         appender.append(event);
-        assertEquals(1, queue.size());
-        final Message message = queue.getMessageAt(0);
+        assertEquals(1, destination.size());
+        final Message message = destination.getMessageAt(0);
         assertNotNull(message);
         assertThat(message, instanceOf(TextMessage.class));
         final TextMessage textMessage = (TextMessage) message;
         assertEquals(LOG_MESSAGE, textMessage.getText());
     }
 
-    private static Log4jLogEvent createLogEvent(String loggerName, long now) {
-        return Log4jLogEvent.createEvent(loggerName, null, loggerName, Level.INFO,
-            new SimpleMessage(LOG_MESSAGE), null, null, null, null, Thread.currentThread().getName(), null, now);
+    @Test
+    public void testJmsQueueAppenderCompatibility() throws Exception {
+        assertEquals(0, queue.size());
+        final JmsAppender appender = (JmsAppender) ctx.getRequiredAppender("JmsQueueAppender");
+        final LogEvent expected = createLogEvent();
+        appender.append(expected);
+        assertEquals(1, queue.size());
+        final Message message = queue.getMessageAt(0);
+        assertNotNull(message);
+        assertThat(message, instanceOf(ObjectMessage.class));
+        final ObjectMessage objectMessage = (ObjectMessage) message;
+        final Object o = objectMessage.getObject();
+        assertThat(o, instanceOf(LogEvent.class));
+        final LogEvent actual = (LogEvent) o;
+        assertEquals(expected.getMessage().getFormattedMessage(), actual.getMessage().getFormattedMessage());
+    }
+
+    @Test
+    public void testJmsTopicAppenderCompatibility() throws Exception {
+        assertEquals(0, topic.size());
+        final JmsAppender appender = (JmsAppender) ctx.getRequiredAppender("JmsTopicAppender");
+        final LogEvent expected = createLogEvent();
+        appender.append(expected);
+        assertEquals(1, topic.size());
+        final Message message = topic.getMessageAt(0);
+        assertNotNull(message);
+        assertThat(message, instanceOf(ObjectMessage.class));
+        final ObjectMessage objectMessage = (ObjectMessage) message;
+        final Object o = objectMessage.getObject();
+        assertThat(o, instanceOf(LogEvent.class));
+        final LogEvent actual = (LogEvent) o;
+        assertEquals(expected.getMessage().getFormattedMessage(), actual.getMessage().getFormattedMessage());
+    }
+
+    private static Log4jLogEvent createLogEvent() {
+        return Log4jLogEvent.newBuilder()
+            .setLoggerName(JmsAppenderTest.class.getName())
+            .setLoggerFqcn(JmsAppenderTest.class.getName())
+            .setLevel(Level.INFO)
+            .setMessage(new SimpleMessage(LOG_MESSAGE))
+            .build();
     }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7aec0b5a/log4j-jms/src/test/resources/JmsAppenderTest.xml
----------------------------------------------------------------------
diff --git a/log4j-jms/src/test/resources/JmsAppenderTest.xml b/log4j-jms/src/test/resources/JmsAppenderTest.xml
index ceccbaa..56b3f25 100644
--- a/log4j-jms/src/test/resources/JmsAppenderTest.xml
+++ b/log4j-jms/src/test/resources/JmsAppenderTest.xml
@@ -18,11 +18,22 @@
 -->
 <Configuration name="JmsAppenderTest" status="OFF">
   <Appenders>
-    <JMS name="JmsQueueAppender"
-         factoryBindingName="jms/activemq"
+    <JMS name="JmsAppender"
+         factoryBindingName="jms/queues"
          destinationBindingName="jms/destination">
       <PatternLayout pattern="%m"/>
     </JMS>
+    <!-- backwards compatibility tests -->
+    <JMSQueue name="JmsQueueAppender"
+              factoryBindingName="jms/queues"
+              queueBindingName="jms/queue">
+      <SerializedLayout/>
+    </JMSQueue>
+    <JMSTopic name="JmsTopicAppender"
+              factoryBindingName="jms/topics"
+              topicBindingName="jms/topic">
+      <SerializedLayout/>
+    </JMSTopic>
   </Appenders>
   <Loggers>
     <Root level="info">