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