diff --git a/pom.xml b/pom.xml index 0c507cf..efae810 100644 --- a/pom.xml +++ b/pom.xml @@ -139,17 +139,21 @@ - - org.slf4j - slf4j-log4j12 - ${slf4j.version} - test - org.apache.tinkerpop gremlin-core ${tinkerpop.version} + + + org.slf4j + slf4j-log4j12 + + + log4j + log4j + + junit @@ -173,13 +177,6 @@ aws-java-sdk-core ${aws.java.sdk.version} - - - log4j - log4j - 1.2.17 - test - commons-configuration commons-configuration @@ -201,6 +198,12 @@ guava ${guava.version} + + ch.qos.logback + logback-classic + 1.2.3 + test + org.mockito mockito-all diff --git a/src/test/java/com/amazon/janusgraph/TestCiHeartbeat.java b/src/test/java/com/amazon/janusgraph/TestCiHeartbeat.java index 00a8348..1c3b3be 100644 --- a/src/test/java/com/amazon/janusgraph/TestCiHeartbeat.java +++ b/src/test/java/com/amazon/janusgraph/TestCiHeartbeat.java @@ -15,79 +15,58 @@ package com.amazon.janusgraph; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -import org.apache.log4j.Appender; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.apache.log4j.spi.LoggingEvent; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.read.ListAppender; +import com.amazon.janusgraph.testutils.HeartbeatTimerTask; +import com.amazon.janusgraph.testutils.LoggerTestUtil; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestName; import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import com.amazon.janusgraph.testutils.CiHeartbeat; /** - * - * @author Johan Jacobs + * Refer to https://www.baeldung.com/logback + * @author Minghui Tang * */ @RunWith(MockitoJUnitRunner.class) public class TestCiHeartbeat { - @Rule public final TestName testName = new TestName(); - @Mock - private Appender mockAppender; - @Captor - private ArgumentCaptor captorLoggingEvent; + private ListAppender ciHeartbeatListAppender; + private ListAppender heartbeatTimerListAppender; + private CiHeartbeat ciHeartbeat; @Before public void setup() { + ciHeartbeatListAppender = LoggerTestUtil.getListAppenderForClass(CiHeartbeat.class); + heartbeatTimerListAppender = LoggerTestUtil.getListAppenderForClass(HeartbeatTimerTask.class); - final Logger root = Logger.getRootLogger(); - root.addAppender(mockAppender); - root.setLevel(Level.WARN); + ciHeartbeat = new CiHeartbeat(500, 3); } @Test - public void testHeartbeatConsoleOutput() throws InterruptedException { - - final CiHeartbeat ciHeartbeat = new CiHeartbeat(500, 3); + public void testHeartbeatConsoleOutput() throws InterruptedException{ + // given + // when ciHeartbeat.startHeartbeat(testName.getMethodName()); Thread.sleep(2000); ciHeartbeat.stopHeartbeat(); - verify(mockAppender, times(6)).doAppend(captorLoggingEvent.capture()); - - final LoggingEvent unitTestStartEvent = captorLoggingEvent.getAllValues().get(0); - Assert.assertEquals("Heartbeat - [started] - testHeartbeatConsoleOutput - 0ms", unitTestStartEvent.getMessage()); - - final LoggingEvent heartbeatOneEvent = captorLoggingEvent.getAllValues().get(1); - Assert.assertTrue(heartbeatOneEvent.getMessage().toString().contains("Heartbeat - [1] - testHeartbeatConsoleOutput - ")); - - final LoggingEvent heartbeatTwoEvent = captorLoggingEvent.getAllValues().get(2); - Assert.assertTrue(heartbeatTwoEvent.getMessage().toString().contains("Heartbeat - [2] - testHeartbeatConsoleOutput - ")); - - final LoggingEvent heartbeatThreeEvent = captorLoggingEvent.getAllValues().get(3); - Assert.assertTrue(heartbeatThreeEvent.getMessage().toString().contains("Heartbeat - [3] - testHeartbeatConsoleOutput - ")); - - final LoggingEvent heartbeatfourEvent = captorLoggingEvent.getAllValues().get(4); - Assert.assertTrue(heartbeatfourEvent.getMessage().toString().contains("Heartbeat - [4] - testHeartbeatConsoleOutput - ")); - - final LoggingEvent unitTestEndEvent = captorLoggingEvent.getAllValues().get(5); - Assert.assertTrue(unitTestEndEvent.getMessage().toString().contains("Heartbeat - [finished] - testHeartbeatConsoleOutput - ")); + // then + Assert.assertEquals(ciHeartbeatListAppender.list.get(0).getFormattedMessage(), "Heartbeat - [started] - testHeartbeatConsoleOutput - 0ms"); + Assert.assertTrue(heartbeatTimerListAppender.list.get(0).getMessage().contains("Heartbeat - [1] - testHeartbeatConsoleOutput - ")); + Assert.assertTrue(heartbeatTimerListAppender.list.get(1).getMessage().contains("Heartbeat - [2] - testHeartbeatConsoleOutput - ")); + Assert.assertTrue(heartbeatTimerListAppender.list.get(2).getMessage().contains("Heartbeat - [3] - testHeartbeatConsoleOutput - ")); + Assert.assertTrue(ciHeartbeatListAppender.list.get(1).getMessage().contains( "Heartbeat - [finished] - testHeartbeatConsoleOutput - ")); } } diff --git a/src/test/java/com/amazon/janusgraph/testutils/LoggerTestUtil.java b/src/test/java/com/amazon/janusgraph/testutils/LoggerTestUtil.java new file mode 100644 index 0000000..a11b677 --- /dev/null +++ b/src/test/java/com/amazon/janusgraph/testutils/LoggerTestUtil.java @@ -0,0 +1,19 @@ +package com.amazon.janusgraph.testutils; + +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.read.ListAppender; +import org.slf4j.LoggerFactory; + +public class LoggerTestUtil { + public static ListAppender getListAppenderForClass(Class clazz) { + Logger logger = (Logger) LoggerFactory.getLogger(clazz); + + ListAppender loggingEventListAppender = new ListAppender<>(); + loggingEventListAppender.start(); + + logger.addAppender(loggingEventListAppender); + + return loggingEventListAppender; + } +} diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml new file mode 100644 index 0000000..7e2e2e6 --- /dev/null +++ b/src/test/resources/logback.xml @@ -0,0 +1,14 @@ + + + + + + %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file