Repository: logging-log4j2 Updated Branches: refs/heads/master 7e9467254 -> 1896c0e24
Tests MessageSupplier APIs. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/1896c0e2 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/1896c0e2 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/1896c0e2 Branch: refs/heads/master Commit: 1896c0e24740ad257423651b44a1f53cbd2400ba Parents: 7e94672 Author: ggregory <[email protected]> Authored: Fri Feb 12 16:12:17 2016 -0800 Committer: ggregory <[email protected]> Committed: Fri Feb 12 16:12:17 2016 -0800 ---------------------------------------------------------------------- .../log4j/LoggerMessageSupplierTest.java | 197 +++++++++++++++++++ 1 file changed, 197 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1896c0e2/log4j-api/src/test/java/org/apache/logging/log4j/LoggerMessageSupplierTest.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/LoggerMessageSupplierTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/LoggerMessageSupplierTest.java new file mode 100644 index 0000000..77a91ae --- /dev/null +++ b/log4j-api/src/test/java/org/apache/logging/log4j/LoggerMessageSupplierTest.java @@ -0,0 +1,197 @@ +/* + * 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.logging.log4j; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.startsWith; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +import java.util.List; + +import org.apache.logging.log4j.message.FormattedMessage; +import org.apache.logging.log4j.message.JsonMessage; +import org.apache.logging.log4j.message.LocalizedMessage; +import org.apache.logging.log4j.message.MessageFormatMessage; +import org.apache.logging.log4j.message.ObjectArrayMessage; +import org.apache.logging.log4j.message.ObjectMessage; +import org.apache.logging.log4j.message.ParameterizedMessage; +import org.apache.logging.log4j.message.SimpleMessage; +import org.apache.logging.log4j.message.StringFormattedMessage; +import org.apache.logging.log4j.message.ThreadDumpMessage; +import org.apache.logging.log4j.util.MessageSupplier; +import org.apache.logging.log4j.util.Supplier; +import org.junit.Before; +import org.junit.Test; + +/** + * Tests Logger APIs with MessageSupplier. + */ +public class LoggerMessageSupplierTest { + + private final TestLogger logger = (TestLogger) LogManager.getLogger("LoggerTest"); + + private final List<String> results = logger.getEntries(); + + @Test + public void flowTracing_MessageSupplierOfFormattedMessage() { + logger.traceEntry(new MessageSupplier() { + @Override + public FormattedMessage get() { + return new FormattedMessage("int foo={}", 1234567890); + } + }); + assertEquals(1, results.size()); + assertThat("Incorrect Entry", results.get(0), startsWith("ENTRY[ FLOW ] TRACE entry")); + assertThat("Missing entry data", results.get(0), containsString("int foo=1234567890")); + assertThat("Bad toString()", results.get(0), not(containsString("FormattedMessage"))); + } + + @Test + public void flowTracing_MessageSupplierOfJsonMessage() { + logger.traceEntry(new MessageSupplier() { + @Override + public JsonMessage get() { + return new JsonMessage(System.getProperties()); + } + }); + assertEquals(1, results.size()); + assertThat("Incorrect Entry", results.get(0), startsWith("ENTRY[ FLOW ] TRACE entry")); + assertThat("Missing entry data", results.get(0), containsString("\"java.runtime.name\":")); + assertThat("Bad toString()", results.get(0), not(containsString("JsonMessage"))); + } + + @Test + public void flowTracing_MessageSupplierOfLocalizedMessage() { + logger.traceEntry(new MessageSupplier() { + @Override + public LocalizedMessage get() { + return new LocalizedMessage("int foo={}", 1234567890); + } + }); + assertEquals(1, results.size()); + assertThat("Incorrect Entry", results.get(0), startsWith("ENTRY[ FLOW ] TRACE entry")); + assertThat("Missing entry data", results.get(0), containsString("int foo=1234567890")); + assertThat("Bad toString()", results.get(0), not(containsString("LocalizedMessage"))); + } + + @Test + public void flowTracing_MessageSupplierOfMessageFormatMessage() { + logger.traceEntry(new MessageSupplier() { + @Override + public MessageFormatMessage get() { + return new MessageFormatMessage("int foo={0}", 1234567890); + } + }); + assertEquals(1, results.size()); + assertThat("Incorrect Entry", results.get(0), startsWith("ENTRY[ FLOW ] TRACE entry")); + assertThat("Missing entry data", results.get(0), containsString("int foo=1,234,567,890")); + assertThat("Bad toString()", results.get(0), not(containsString("MessageFormatMessage"))); + } + + @Test + public void flowTracing_MessageSupplierOfObjectArrayMessage() { + logger.traceEntry(new MessageSupplier() { + @Override + public ObjectArrayMessage get() { + return new ObjectArrayMessage(1234567890); + } + }); + assertEquals(1, results.size()); + assertThat("Incorrect Entry", results.get(0), startsWith("ENTRY[ FLOW ] TRACE entry")); + assertThat("Missing entry data", results.get(0), containsString("[1234567890]")); + assertThat("Bad toString()", results.get(0), not(containsString("ObjectArrayMessage"))); + } + + @Test + public void flowTracing_MessageSupplierOfObjectMessage() { + logger.traceEntry(new MessageSupplier() { + @Override + public ObjectMessage get() { + return new ObjectMessage(1234567890); + } + }); + assertEquals(1, results.size()); + assertThat("Incorrect Entry", results.get(0), startsWith("ENTRY[ FLOW ] TRACE entry")); + assertThat("Missing entry data", results.get(0), containsString("1234567890")); + assertThat("Bad toString()", results.get(0), not(containsString("ObjectMessage"))); + } + + @Test + public void flowTracing_MessageSupplierOfParameterizedMessage() { + logger.traceEntry(new MessageSupplier() { + @Override + public ParameterizedMessage get() { + return new ParameterizedMessage("int foo={}", 1234567890); + } + }); + assertEquals(1, results.size()); + assertThat("Incorrect Entry", results.get(0), startsWith("ENTRY[ FLOW ] TRACE entry")); + assertThat("Missing entry data", results.get(0), containsString("int foo=1234567890")); + assertThat("Bad toString()", results.get(0), not(containsString("ParameterizedMessage"))); + } + + @Test + public void flowTracing_MessageSupplierOfSimpleMessage() { + logger.traceEntry(new MessageSupplier() { + @Override + public SimpleMessage get() { + return new SimpleMessage("1234567890"); + } + }); + assertEquals(1, results.size()); + assertThat("Incorrect Entry", results.get(0), startsWith("ENTRY[ FLOW ] TRACE entry")); + assertThat("Missing entry data", results.get(0), containsString("1234567890")); + assertThat("Bad toString()", results.get(0), not(containsString("SimpleMessage"))); + } + + @Test + public void flowTracing_MessageSupplierOfStringFormattedMessage() { + logger.traceEntry(new MessageSupplier() { + @Override + public StringFormattedMessage get() { + return new StringFormattedMessage("int foo=%,d", 1234567890); + } + }); + assertEquals(1, results.size()); + assertThat("Incorrect Entry", results.get(0), startsWith("ENTRY[ FLOW ] TRACE entry")); + assertThat("Missing entry data", results.get(0), containsString("int foo=1,234,567,890")); + assertThat("Bad toString()", results.get(0), not(containsString("StringFormattedMessage"))); + } + + @Test + public void flowTracing_MessageSupplierOfThreadDumpMessage() { + logger.traceEntry(new MessageSupplier() { + @Override + public ThreadDumpMessage get() { + return new ThreadDumpMessage("Title of ..."); + } + }); + assertEquals(1, results.size()); + assertThat("Incorrect Entry", results.get(0), startsWith("ENTRY[ FLOW ] TRACE entry")); + assertThat("Missing entry data", results.get(0), containsString("RUNNABLE")); + assertThat("Missing entry data", results.get(0), containsString("Title of ...")); + assertThat("Missing entry data", results.get(0), containsString(getClass().getName())); + } + + @Before + public void setup() { + results.clear(); + } + +}
