You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ca...@apache.org on 2016/07/12 11:06:50 UTC
svn commit: r1752273 - in
/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util:
PerfLoggerIT.java PerfLoggerTest.java
Author: catholicon
Date: Tue Jul 12 11:06:50 2016
New Revision: 1752273
URL: http://svn.apache.org/viewvc?rev=1752273&view=rev
Log:
OAK-4542: Add some tests in PerfLoggerTest and a couple timing related in PerfLoggerIT without any change in code yet
Added:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerIT.java (with props)
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerTest.java
Added: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerIT.java?rev=1752273&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerIT.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerIT.java Tue Jul 12 11:06:50 2016
@@ -0,0 +1,116 @@
+/*
+ * 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.jackrabbit.oak.util;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.slf4j.Logger;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+public class PerfLoggerIT {
+ @Mock
+ Logger logger;
+
+ private PerfLogger perfLogger;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ when(logger.isTraceEnabled()).thenReturn(false);
+ when(logger.isDebugEnabled()).thenReturn(false);
+ when(logger.isInfoEnabled()).thenReturn(false);
+
+ perfLogger = new PerfLogger(logger);
+ }
+
+ //test for logger set at DEBUG
+ @Test
+ public void logAtDebugTimeoutNotHit() {
+ setupDebugLogger();
+
+ long start = perfLogger.start();
+ perfLogger.end(start, 100, "message", "argument");
+
+ verifyTraceInteractions(1, false, false);
+ verifyDebugInteractions(2, false);
+ verifyNoMoreInteractions(logger);
+ }
+
+ @Test
+ public void logAtDebugTimeoutHit() throws InterruptedException {
+ setupDebugLogger();
+
+ long start = perfLogger.start();
+ Thread.sleep(100);
+ perfLogger.end(start, 20, "message", "argument");
+
+ verifyTraceInteractions(1, false, false);
+ verifyDebugInteractions(2, true);
+ verifyNoMoreInteractions(logger);
+ }
+ //end DEBUG tests
+
+
+ //test for logger set at INFO
+ @Test
+ public void logAtInfoDebugTimeoutHit() throws InterruptedException {
+ setupInfoLogger();
+
+ long start = perfLogger.start();
+ Thread.sleep(100);
+ perfLogger.end(start, 20, "message", "argument");
+
+ verifyDebugInteractions(1, false);
+ verifyNoMoreInteractions(logger);
+ }
+ //end INFO tests
+
+ private void setupDebugLogger() {
+ when(logger.isDebugEnabled()).thenReturn(true);
+ setupInfoLogger();
+ }
+ private void setupInfoLogger() {
+ when(logger.isInfoEnabled()).thenReturn(true);
+ }
+
+ private void verifyTraceInteractions(int enabled, boolean shouldLogStart, boolean shouldLogEnd) {
+ verify(logger, times(enabled)).isTraceEnabled();
+
+ if (shouldLogStart) {
+ verify(logger, times(1)).trace(anyString());
+ }
+ if (shouldLogEnd) {
+ verify(logger, times(1)).trace(anyString(), any(Object[].class));
+ }
+ }
+
+ private void verifyDebugInteractions(int enabled, boolean shouldLog) {
+ verify(logger, times(enabled)).isDebugEnabled();
+
+ if (shouldLog) {
+ verify(logger, times(1)).debug(anyString(), any(Object[].class));
+ }
+ }
+}
Propchange: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerIT.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerTest.java?rev=1752273&r1=1752272&r2=1752273&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/PerfLoggerTest.java Tue Jul 12 11:06:50 2016
@@ -16,50 +16,140 @@
*/
package org.apache.jackrabbit.oak.util;
+import org.junit.Before;
import org.junit.Test;
-import org.mockito.Mockito;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
import org.slf4j.Logger;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
public class PerfLoggerTest {
+ @Mock
+ Logger logger;
- @Test
- public void testEndDebug() {
- Logger logger = Mockito.mock(Logger.class);
+ private PerfLogger perfLogger;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
when(logger.isTraceEnabled()).thenReturn(false);
- when(logger.isDebugEnabled()).thenReturn(true);
+ when(logger.isDebugEnabled()).thenReturn(false);
+ when(logger.isInfoEnabled()).thenReturn(false);
+
+ perfLogger = new PerfLogger(logger);
+ }
+
+ //test for logger set at TRACE
+ @Test
+ public void logAtTraceSimpleStart() {
+ setupTraceLogger();
- PerfLogger perfLogger = new PerfLogger(logger);
long start = perfLogger.start();
perfLogger.end(start, -1, "message", "argument");
- verify(logger, atLeastOnce()).isTraceEnabled();
- verify(logger, atLeastOnce()).isDebugEnabled();
- verify(logger, times(1)).debug(anyString(), any(Object[].class));
+ verifyTraceInteractions(1, false, true);
+ verifyDebugInteractions(2, false);
verifyNoMoreInteractions(logger);
}
@Test
- public void testEndSkipsIsDebugEnabled() {
- Logger logger = Mockito.mock(Logger.class);
- when(logger.isTraceEnabled()).thenReturn(false);
- when(logger.isDebugEnabled()).thenReturn(false);
+ public void logAtTraceMessageStart() {
+ setupTraceLogger();
+
+ long start = perfLogger.start("Start message");
+ perfLogger.end(start, -1, "message", "argument");
+
+ verifyTraceInteractions(2, true, true);
+ verifyDebugInteractions(1, false);
+ verifyNoMoreInteractions(logger);
+ }
+ //end TRACE tests
+
+ //test for logger set at DEBUG
+ @Test
+ public void logAtDebugSimpleStart() {
+ setupDebugLogger();
+
+ long start = perfLogger.start();
+ perfLogger.end(start, -1, "message", "argument");
+
+ verifyTraceInteractions(1, false, false);
+ verifyDebugInteractions(2, true);
+ verifyNoMoreInteractions(logger);
+ }
+
+ @Test
+ public void logAtDebugMessageStart() {
+ setupDebugLogger();
+
+ long start = perfLogger.start("Start message");
+ perfLogger.end(start, -1, "message", "argument");
+
+ verifyTraceInteractions(2, false, false);
+ verifyDebugInteractions(1, true);
+ verifyNoMoreInteractions(logger);
+ }
+ //end DEBUG tests
+
+ //test for logger set at INFO
+ @Test
+ public void logAtInfoSimpleStart() {
+ setupInfoLogger();
- PerfLogger perfLogger = new PerfLogger(logger);
long start = perfLogger.start();
perfLogger.end(start, -1, "message", "argument");
- verify(logger, never()).isTraceEnabled();
- verify(logger, times(1)).isDebugEnabled();
+ verifyDebugInteractions(1, false);
verifyNoMoreInteractions(logger);
}
+ @Test
+ public void logAtInfoMessageStart() {
+ setupInfoLogger();
+
+ long start = perfLogger.start("Start message");
+ perfLogger.end(start, -1, "message", "argument");
+
+ verifyDebugInteractions(1, false);
+ verifyNoMoreInteractions(logger);
+ }
+ //end INFO tests
+
+ private void setupTraceLogger() {
+ when(logger.isTraceEnabled()).thenReturn(true);
+ setupDebugLogger();
+ }
+ private void setupDebugLogger() {
+ when(logger.isDebugEnabled()).thenReturn(true);
+ setupInfoLogger();
+ }
+ private void setupInfoLogger() {
+ when(logger.isInfoEnabled()).thenReturn(true);
+ }
+
+ private void verifyTraceInteractions(int enabled, boolean shouldLogStart, boolean shouldLogEnd) {
+ verify(logger, times(enabled)).isTraceEnabled();
+
+ if (shouldLogStart) {
+ verify(logger, times(1)).trace(anyString());
+ }
+ if (shouldLogEnd) {
+ verify(logger, times(1)).trace(anyString(), any(Object[].class));
+ }
+ }
+
+ private void verifyDebugInteractions(int enabled, boolean shouldLog) {
+ verify(logger, times(enabled)).isDebugEnabled();
+
+ if (shouldLog) {
+ verify(logger, times(1)).debug(anyString(), any(Object[].class));
+ }
+ }
+
}