You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2016/11/23 13:50:14 UTC

[11/46] james-project git commit: JAMES-1854 Test CommonsLoggingAdapter

JAMES-1854 Test CommonsLoggingAdapter

A bug existed in log level evaluation


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/abfa7a77
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/abfa7a77
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/abfa7a77

Branch: refs/heads/master
Commit: abfa7a777d9b53e344ce014d095fb79c465751df
Parents: 164d924
Author: Benoit Tellier <bt...@linagora.com>
Authored: Mon Oct 31 12:27:45 2016 +0100
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Nov 18 18:46:46 2016 +0700

----------------------------------------------------------------------
 .../mailets/jsieve/CommonsLoggingAdapter.java   |  17 +-
 .../jsieve/CommonsLoggingAdapterTest.java       | 286 +++++++++++++++++++
 2 files changed, 296 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/abfa7a77/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapter.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapter.java
index 20845ef..18df8ed 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapter.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapter.java
@@ -55,7 +55,10 @@ public class CommonsLoggingAdapter implements Log {
 
         public CommonsLoggingAdapter build() {
             Preconditions.checkNotNull(genericMailet);
-            return new CommonsLoggingAdapter(genericMailet, computeLogLevel(quiet.or(false), verbose.or(false)));
+            Boolean quietParameter = quiet.or(false);
+            Boolean verboseParameter = verbose.or(false);
+            Preconditions.checkState(!(verboseParameter && quietParameter), "You can not specify a logger both verbose and quiet");
+            return new CommonsLoggingAdapter(genericMailet, computeLogLevel(quietParameter, verboseParameter));
         }
 
         private int computeLogLevel(boolean quiet, boolean verbose) {
@@ -134,27 +137,27 @@ public class CommonsLoggingAdapter implements Log {
     }
 
     public boolean isDebugEnabled() {
-        return level <= DEBUG;
+        return level >= DEBUG;
     }
 
     public boolean isErrorEnabled() {
-        return level <= ERROR;
+        return level >= ERROR;
     }
 
     public boolean isFatalEnabled() {
-        return level <= FATAL;
+        return level >= FATAL;
     }
 
     public boolean isInfoEnabled() {
-        return level <= INFO;
+        return level >= INFO;
     }
 
     public boolean isTraceEnabled() {
-        return level <= TRACE;
+        return level >= TRACE;
     }
 
     public boolean isWarnEnabled() {
-        return level <= WARN;
+        return level >= WARN;
     }
 
     public void trace(Object message) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/abfa7a77/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapterTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapterTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapterTest.java
new file mode 100644
index 0000000..a3619ac
--- /dev/null
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapterTest.java
@@ -0,0 +1,286 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+
+package org.apache.james.transport.mailets.jsieve;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+import javax.mail.MessagingException;
+
+import org.apache.mailet.Mail;
+import org.apache.mailet.base.GenericMailet;
+import org.apache.mailet.base.test.FakeMailContext;
+import org.apache.mailet.base.test.FakeMailetConfig;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.slf4j.Logger;
+
+public class CommonsLoggingAdapterTest {
+
+    @Rule public ExpectedException expectedException = ExpectedException.none();
+    private GenericMailet genericMailet;
+
+    @Before
+    public void setUp() {
+        genericMailet = mock(GenericMailet.class);
+    }
+
+    @Test
+    public void buildShouldThrowWhenNoMailetSpecified() {
+        expectedException.expect(NullPointerException.class);
+
+        CommonsLoggingAdapter.builder().build();
+    }
+
+    @Test
+    public void buildShouldDefaultToLogLevelWarn() {
+        CommonsLoggingAdapter loggingAdapter = CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .build();
+
+        assertThat(loggingAdapter.isTraceEnabled()).isFalse();
+        assertThat(loggingAdapter.isDebugEnabled()).isFalse();
+        assertThat(loggingAdapter.isInfoEnabled()).isFalse();
+        assertThat(loggingAdapter.isWarnEnabled()).isTrue();
+        assertThat(loggingAdapter.isErrorEnabled()).isTrue();
+        assertThat(loggingAdapter.isFatalEnabled()).isTrue();
+    }
+
+
+    @Test
+    public void buildShouldUseFatalWithQuiet() {
+        CommonsLoggingAdapter loggingAdapter = CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .quiet(true)
+            .build();
+
+        assertThat(loggingAdapter.isTraceEnabled()).isFalse();
+        assertThat(loggingAdapter.isDebugEnabled()).isFalse();
+        assertThat(loggingAdapter.isInfoEnabled()).isFalse();
+        assertThat(loggingAdapter.isWarnEnabled()).isFalse();
+        assertThat(loggingAdapter.isErrorEnabled()).isFalse();
+        assertThat(loggingAdapter.isFatalEnabled()).isTrue();
+    }
+
+    @Test
+    public void buildShouldUseTraceWithVerbose() {
+        CommonsLoggingAdapter loggingAdapter = CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .verbose(true)
+            .build();
+
+        assertThat(loggingAdapter.isTraceEnabled()).isTrue();
+        assertThat(loggingAdapter.isDebugEnabled()).isTrue();
+        assertThat(loggingAdapter.isInfoEnabled()).isTrue();
+        assertThat(loggingAdapter.isWarnEnabled()).isTrue();
+        assertThat(loggingAdapter.isErrorEnabled()).isTrue();
+        assertThat(loggingAdapter.isFatalEnabled()).isTrue();
+    }
+
+    @Test
+    public void buildShouldThrowWhenBothQuietAndVerbose() {
+        expectedException.expect(IllegalStateException.class);
+
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .verbose(true)
+            .quiet(true)
+            .build();
+    }
+
+    @Test
+    public void simpleLoggingInVerboseModeShouldWorkInDebug() {
+        String message = "Message";
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .verbose(true)
+            .build()
+            .debug(message);
+
+        verify(genericMailet).log(message);
+    }
+
+    @Test
+    public void exceptionLoggingInVerboseModeShouldWorkInDebug() {
+        Exception exception = new Exception();
+        String message = "Message";
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .verbose(true)
+            .build()
+            .debug(message, exception);
+
+        verify(genericMailet).log(message, exception);
+    }
+
+    @Test
+    public void simpleLoggingInInfoModeShouldNotWorkByDefault() {
+        String message = "Message";
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .build()
+            .info(message);
+
+        verifyNoMoreInteractions(genericMailet);
+    }
+
+    @Test
+    public void exceptionLoggingInInfoModeShouldNotWorkByDefault() {
+        Exception exception = new Exception();
+        String message = "Message";
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .build()
+            .info(message, exception);
+
+        verifyNoMoreInteractions(genericMailet);
+    }
+
+    @Test
+    public void simpleLoggingInWarnModeShouldWorkByDefault() {
+        String message = "Message";
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .build()
+            .warn(message);
+
+        verify(genericMailet).log(message);
+    }
+
+    @Test
+    public void exceptionLoggingInWarnModeShouldWorkByDefault() {
+        Exception exception = new Exception();
+        String message = "Message";
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .build()
+            .warn(message, exception);
+
+        verify(genericMailet).log(message, exception);
+    }
+
+    @Test
+    public void simpleLoggingInErrorModeShouldNotWorkWithQuiet() {
+        String message = "Message";
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .quiet(true)
+            .build()
+            .error(message);
+
+        verifyNoMoreInteractions(genericMailet);
+    }
+
+    @Test
+    public void exceptionLoggingInErrorModeShouldNotWorkWithQuiet() {
+        Exception exception = new Exception();
+        String message = "Message";
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .quiet(true)
+            .build()
+            .error(message, exception);
+
+        verifyNoMoreInteractions(genericMailet);
+    }
+
+    @Test
+    public void simpleLoggingInFatalModeShouldWorkWithQuiet() {
+        String message = "Message";
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .quiet(true)
+            .build()
+            .fatal(message);
+
+        verify(genericMailet).log(message);
+    }
+
+    @Test
+    public void exceptionLoggingInFatalModeShouldWorkWithQuiet() {
+        Exception exception = new Exception();
+        String message = "Message";
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .quiet(true)
+            .build()
+            .fatal(message, exception);
+
+        verify(genericMailet).log(message, exception);
+    }
+
+    @Ignore("Mailet logging choose log level based on arguments")
+    @Test
+    public void logIsUsingWrongLogLevelReported() throws Exception {
+        GenericMailet genericMailet = new GenericMailet() {
+            @Override
+            public void service(Mail mail) throws MessagingException {
+
+            }
+        };
+        Logger logger = mock(Logger.class);
+        genericMailet.init(new FakeMailetConfig("name", FakeMailContext.builder()
+            .logger(logger)
+            .build()));
+
+        String message = "Fatal";
+        CommonsLoggingAdapter.builder().mailet(genericMailet).build().error(message);
+
+        verify(logger).info(message);
+    }
+
+    @Test
+    public void logShouldHandleNullValue() {
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .build()
+            .fatal(null);
+
+        verify(genericMailet).log("NULL");
+    }
+
+    @Test
+    public void logShouldHandleNullValueWithException() {
+        Exception exception = new Exception();
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .build()
+            .fatal(null, exception);
+
+        verify(genericMailet).log("NULL", exception);
+    }
+
+
+    @Test
+    public void logShouldHandleNullException() {
+        CommonsLoggingAdapter.builder()
+            .mailet(genericMailet)
+            .build()
+            .fatal(null, null);
+
+        verify(genericMailet).log("NULL", null);
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org