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 2017/01/07 23:29:04 UTC

[1/4] logging-log4j2 git commit: [LOG4J2-1774]: Refactor InterpolatorTest to use JndiRule

Repository: logging-log4j2
Updated Branches:
  refs/heads/master ac89d8a36 -> ae677405e


[LOG4J2-1774]: Refactor InterpolatorTest to use JndiRule


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

Branch: refs/heads/master
Commit: b1cabb925981a3621c02ff7ce6bd658fd95d8672
Parents: ac89d8a
Author: Matt Sicker <ma...@spr.com>
Authored: Sat Jan 7 16:34:39 2017 -0600
Committer: Matt Sicker <ma...@spr.com>
Committed: Sat Jan 7 16:34:39 2017 -0600

----------------------------------------------------------------------
 .../log4j/core/lookup/InterpolatorTest.java     | 43 ++++++++------------
 1 file changed, 16 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b1cabb92/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
index 1fcadef..aceba57 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
@@ -21,15 +21,12 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
 import org.apache.logging.log4j.ThreadContext;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.apache.logging.log4j.junit.JndiRule;
+import org.junit.ClassRule;
 import org.junit.Test;
-import org.mockejb.jndi.MockContextFactory;
+import org.junit.rules.ExternalResource;
+import org.junit.rules.RuleChain;
 
 import static org.junit.Assert.*;
 
@@ -44,27 +41,19 @@ public class InterpolatorTest {
     private static final String TEST_CONTEXT_RESOURCE_NAME = "logging/context-name";
     private static final String TEST_CONTEXT_NAME = "app-1";
 
-    private static Context context;
-
-    @BeforeClass
-    public static void before() throws NamingException {
-        System.setProperty(TESTKEY, TESTVAL);
-
-        MockContextFactory.setAsInitial();
-        context = new InitialContext();
-        context.bind(JndiLookup.CONTAINER_JNDI_RESOURCE_PATH_PREFIX + TEST_CONTEXT_RESOURCE_NAME, TEST_CONTEXT_NAME);
-    }
-
-    @AfterClass
-    public static void after() {
-        try {
-            context.close();
-        } catch (final NamingException ignored) {
+    @ClassRule
+    public static RuleChain rules = RuleChain.outerRule(new ExternalResource() {
+        @Override
+        protected void before() throws Throwable {
+            System.setProperty(TESTKEY, TESTVAL);
         }
-        MockContextFactory.revertSetAsInitial();
 
-        System.clearProperty(TESTKEY);
-    }
+        @Override
+        protected void after() {
+            System.clearProperty(TESTKEY);
+        }
+    }).around(new JndiRule(
+        JndiLookup.CONTAINER_JNDI_RESOURCE_PATH_PREFIX + TEST_CONTEXT_RESOURCE_NAME, TEST_CONTEXT_NAME));
 
     @Test
     public void testLookup() {
@@ -93,7 +82,7 @@ public class InterpolatorTest {
         assertFalse(value.isEmpty());
         System.out.println(key + " = " + value);
     }
-    
+
     @Test
     public void testLookupWithDefaultInterpolator() {
         final StrLookup lookup = new Interpolator();


[2/4] logging-log4j2 git commit: [LOG4J2-1774]: Refactor RoutingAppenderWithJndiTest to use JndiRule

Posted by ma...@apache.org.
[LOG4J2-1774]: Refactor RoutingAppenderWithJndiTest to use JndiRule


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

Branch: refs/heads/master
Commit: 3c7a91fd119348ccba3c78313302c609122ed53f
Parents: b1cabb9
Author: Matt Sicker <ma...@spr.com>
Authored: Sat Jan 7 16:38:51 2017 -0600
Committer: Matt Sicker <ma...@spr.com>
Committed: Sat Jan 7 16:38:51 2017 -0600

----------------------------------------------------------------------
 .../routing/RoutingAppenderWithJndiTest.java       | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3c7a91fd/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithJndiTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithJndiTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithJndiTest.java
index 71ebb67..02a8a79 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithJndiTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithJndiTest.java
@@ -16,16 +16,14 @@
  */
 package org.apache.logging.log4j.core.appender.routing;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
 import java.io.File;
-
+import java.util.Collections;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
 import org.apache.logging.log4j.EventLogger;
+import org.apache.logging.log4j.junit.JndiRule;
 import org.apache.logging.log4j.junit.LoggerContextRule;
 import org.apache.logging.log4j.message.StructuredDataMessage;
 import org.apache.logging.log4j.test.appender.ListAppender;
@@ -33,7 +31,9 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 import org.junit.Test;
-import org.mockejb.jndi.MockContextFactory;
+import org.junit.rules.RuleChain;
+
+import static org.junit.Assert.*;
 
 /**
  * RoutingAppenderWithJndiTest
@@ -44,12 +44,14 @@ public class RoutingAppenderWithJndiTest {
     private ListAppender listAppender1;
     private ListAppender listAppender2;
 
-    @ClassRule
     public static LoggerContextRule loggerContextRule = new LoggerContextRule("log4j-routing-by-jndi.xml");
 
+    @ClassRule
+    public static RuleChain rules = RuleChain.outerRule(new JndiRule(Collections.<String, Object>emptyMap()))
+        .around(loggerContextRule);
+
     @Before
     public void before() throws NamingException {
-        MockContextFactory.setAsInitial();
         listAppender1 = RoutingAppenderWithJndiTest.loggerContextRule.getListAppender("List1");
         listAppender2 = RoutingAppenderWithJndiTest.loggerContextRule.getListAppender("List2");
     }
@@ -58,7 +60,6 @@ public class RoutingAppenderWithJndiTest {
     public void after() {
         listAppender1.clear();
         listAppender2.clear();
-        MockContextFactory.revertSetAsInitial();
     }
 
     @Test


[4/4] logging-log4j2 git commit: [LOG4J2-1774]: Remove MockEJB dependency

Posted by ma...@apache.org.
[LOG4J2-1774]: Remove MockEJB dependency


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

Branch: refs/heads/master
Commit: ae677405e2b22e866b629af906a29a9b664f0137
Parents: 50609f9
Author: Matt Sicker <ma...@spr.com>
Authored: Sat Jan 7 17:28:59 2017 -0600
Committer: Matt Sicker <ma...@spr.com>
Committed: Sat Jan 7 17:28:59 2017 -0600

----------------------------------------------------------------------
 log4j-core/pom.xml      |  5 -----
 pom.xml                 | 12 ------------
 src/changes/changes.xml |  3 +++
 3 files changed, 3 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ae677405/log4j-core/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-core/pom.xml b/log4j-core/pom.xml
index 1862d6a..6cb6f29 100644
--- a/log4j-core/pom.xml
+++ b/log4j-core/pom.xml
@@ -232,11 +232,6 @@
     </dependency>
     <!-- JPA, JNDI and JMS tests -->
     <dependency>
-      <groupId>org.mockejb</groupId>
-      <artifactId>mockejb</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-broker</artifactId>
       <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ae677405/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 19249ff..42187b4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -596,18 +596,6 @@
         <version>${activemq.version}</version>
       </dependency>
       <dependency>
-        <groupId>org.mockejb</groupId>
-        <artifactId>mockejb</artifactId>
-        <version>0.6-beta2</version>
-        <scope>test</scope>
-        <exclusions>
-          <exclusion>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
         <groupId>org.apache.kafka</groupId>
         <artifactId>kafka-clients</artifactId>
         <version>0.10.1.1</version>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ae677405/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b349e70..b4f4e28 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -195,6 +195,9 @@
       <action issue="LOG4J2-1756" dev="ggregory" type="fix" due-to="shubhankar1100">
         Adds xmlns in schema and some other tags.
       </action>
+      <action issue="LOG4J2-1774" dev="mattsicker" type="update">
+        Replace MockEJB dependency in unit tests with Spring Test and Mockito.
+      </action>
       <action issue="LOG4J2-1644" dev="ggregory" type="update" due-to="Tim Gokcen, Pavel Sivolobtchik">
         Inefficient locking in AbstractLoggerAdapter.
       </action>


[3/4] logging-log4j2 git commit: [LOG4J2-1774]: Refactor JmsAppenderTest to use JndiRule and Mockito

Posted by ma...@apache.org.
[LOG4J2-1774]: Refactor JmsAppenderTest to use JndiRule and Mockito


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

Branch: refs/heads/master
Commit: 50609f9c70679c03bc94229ea4fdd3d11337bb92
Parents: 3c7a91f
Author: Matt Sicker <ma...@spr.com>
Authored: Sat Jan 7 17:26:48 2017 -0600
Committer: Matt Sicker <ma...@spr.com>
Committed: Sat Jan 7 17:26:48 2017 -0600

----------------------------------------------------------------------
 .../core/appender/mom/JmsAppenderTest.java      | 139 ++++++++++---------
 .../src/test/resources/JmsAppenderTest.xml      |   2 +-
 2 files changed, 76 insertions(+), 65 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/50609f9c/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/JmsAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/JmsAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/JmsAppenderTest.java
index 9d1c65a..ddd87cc 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/JmsAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/JmsAppenderTest.java
@@ -17,114 +17,125 @@
 
 package org.apache.logging.log4j.core.appender.mom;
 
-import javax.jms.Message;
+import java.io.Serializable;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.MessageProducer;
 import javax.jms.ObjectMessage;
+import javax.jms.Session;
 import javax.jms.TextMessage;
-import javax.naming.Context;
-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.JndiCloser;
+import org.apache.logging.log4j.junit.JndiRule;
 import org.apache.logging.log4j.junit.LoggerContextRule;
 import org.apache.logging.log4j.message.SimpleMessage;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.Before;
 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 org.junit.rules.RuleChain;
 
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.*;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isA;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.BDDMockito.then;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
 
 public class JmsAppenderTest {
 
-    private static final String CONNECTION_FACTORY_NAME = "jms/queues";
+    private static final String CONNECTION_FACTORY_NAME = "jms/connectionFactory";
+    private static final String QUEUE_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 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());
-        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);
+    private ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
+    private Connection connection = mock(Connection.class);
+    private Session session = mock(Session.class);
+    private Destination destination = mock(Destination.class);
+    private MessageProducer messageProducer = mock(MessageProducer.class);
+    private TextMessage textMessage = mock(TextMessage.class);
+    private ObjectMessage objectMessage = mock(ObjectMessage.class);
+
+    private JndiRule jndiRule = new JndiRule(createBindings());
+    private LoggerContextRule ctx = new LoggerContextRule("JmsAppenderTest.xml");
+
+    @Rule
+    public RuleChain rules = RuleChain.outerRule(jndiRule).around(ctx);
+
+    private Map<String, Object> createBindings() {
+        final ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
+        map.put(CONNECTION_FACTORY_NAME, connectionFactory);
+        map.put(DESTINATION_NAME, destination);
+        map.put(QUEUE_FACTORY_NAME, connectionFactory);
+        map.put(QUEUE_NAME, destination);
+        map.put(TOPIC_FACTORY_NAME, connectionFactory);
+        map.put(TOPIC_NAME, destination);
+        return map;
     }
 
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-        JndiCloser.close(context);
+    public JmsAppenderTest() throws Exception {
+        // this needs to set up before LoggerContextRule
+        given(connectionFactory.createConnection()).willReturn(connection);
+        given(connectionFactory.createConnection(anyString(), anyString())).willThrow(IllegalArgumentException.class);
+        given(connection.createSession(eq(false), eq(Session.AUTO_ACKNOWLEDGE))).willReturn(session);
+        given(session.createProducer(eq(destination))).willReturn(messageProducer);
+        given(session.createTextMessage(anyString())).willReturn(textMessage);
+        given(session.createObjectMessage(isA(Serializable.class))).willReturn(objectMessage);
     }
 
-    @Rule
-    public LoggerContextRule ctx = new LoggerContextRule("JmsAppenderTest.xml");
+    @Before
+    public void setUp() throws Exception {
+        // we have 3 appenders all connecting to the same ConnectionFactory
+        then(connection).should(times(3)).start();
+    }
 
     @Test
     public void testAppendToQueue() throws Exception {
-        assertEquals(0, destination.size());
         final JmsAppender appender = (JmsAppender) ctx.getRequiredAppender("JmsAppender");
         final LogEvent event = createLogEvent();
         appender.append(event);
-        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());
+        then(session).should().createTextMessage(eq(LOG_MESSAGE));
+        then(textMessage).should().setJMSTimestamp(anyLong());
+        then(messageProducer).should().send(textMessage);
+        appender.stop();
+        then(session).should().close();
+        then(connection).should().close();
     }
 
     @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());
+        then(session).should().createObjectMessage(eq(expected));
+        then(objectMessage).should().setJMSTimestamp(anyLong());
+        then(messageProducer).should().send(objectMessage);
+        appender.stop();
+        then(session).should().close();
+        then(connection).should().close();
     }
 
     @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());
+        then(session).should().createObjectMessage(eq(expected));
+        then(objectMessage).should().setJMSTimestamp(anyLong());
+        then(messageProducer).should().send(objectMessage);
+        appender.stop();
+        then(session).should().close();
+        then(connection).should().close();
     }
 
     private static Log4jLogEvent createLogEvent() {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/50609f9c/log4j-core/src/test/resources/JmsAppenderTest.xml
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/resources/JmsAppenderTest.xml b/log4j-core/src/test/resources/JmsAppenderTest.xml
index b4f1d3c..9a5f951 100644
--- a/log4j-core/src/test/resources/JmsAppenderTest.xml
+++ b/log4j-core/src/test/resources/JmsAppenderTest.xml
@@ -18,7 +18,7 @@
 <Configuration name="JmsAppenderTest" status="OFF">
   <Appenders>
     <JMS name="JmsAppender"
-         factoryBindingName="jms/queues"
+         factoryBindingName="jms/connectionFactory"
          destinationBindingName="jms/destination">
       <PatternLayout pattern="%m"/>
     </JMS>