/**
* personium.io
* Copyright 2014 FUJITSU LIMITED
*
* Licensed 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 com.fujitsu.dc.test.unit.core.event;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.lang.reflect.Field;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.Marker;
import com.fujitsu.dc.core.event.DcEvent;
import com.fujitsu.dc.core.event.EventLogger;
import com.fujitsu.dc.core.model.impl.es.CellEsImpl;
import com.fujitsu.dc.test.categories.Unit;
/**
* EventLogger ユニットテストクラス.
*/
@Category({ Unit.class })
public class EventLoggerTest {
/**
* テスト用Loggerクラス.
*
*/
class LoggerForEvent implements Logger {
int loggedLevel = 0;
@Override
public String getName() {
return null;
}
@Override
public boolean isTraceEnabled() {
return false;
}
@Override
public void trace(String msg) {
}
@Override
public void trace(String format, Object arg) {
}
@Override
public void trace(String format, Object arg1, Object arg2) {
}
@Override
public void trace(String format, Object[] argArray) {
}
@Override
public void trace(String msg, Throwable t) {
}
@Override
public boolean isTraceEnabled(Marker marker) {
return false;
}
@Override
public void trace(Marker marker, String msg) {
}
@Override
public void trace(Marker marker, String format, Object arg) {
}
@Override
public void trace(Marker marker, String format, Object arg1, Object arg2) {
}
@Override
public void trace(Marker marker, String format, Object[] argArray) {
}
@Override
public void trace(Marker marker, String msg, Throwable t) {
}
@Override
public boolean isDebugEnabled() {
return false;
}
@Override
public void debug(String msg) {
}
@Override
public void debug(String format, Object arg) {
}
@Override
public void debug(String format, Object arg1, Object arg2) {
}
@Override
public void debug(String format, Object[] argArray) {
}
@Override
public void debug(String msg, Throwable t) {
}
@Override
public boolean isDebugEnabled(Marker marker) {
return false;
}
@Override
public void debug(Marker marker, String msg) {
}
@Override
public void debug(Marker marker, String format, Object arg) {
}
@Override
public void debug(Marker marker, String format, Object arg1, Object arg2) {
}
@Override
public void debug(Marker marker, String format, Object[] argArray) {
}
@Override
public void debug(Marker marker, String msg, Throwable t) {
}
@Override
public boolean isInfoEnabled() {
return false;
}
@Override
public void info(String msg) {
this.loggedLevel = DcEvent.Level.INFO;
}
@Override
public void info(String format, Object arg) {
}
@Override
public void info(String format, Object arg1, Object arg2) {
}
@Override
public void info(String format, Object[] argArray) {
}
@Override
public void info(String msg, Throwable t) {
}
@Override
public boolean isInfoEnabled(Marker marker) {
return false;
}
@Override
public void info(Marker marker, String msg) {
}
@Override
public void info(Marker marker, String format, Object arg) {
}
@Override
public void info(Marker marker, String format, Object arg1, Object arg2) {
}
@Override
public void info(Marker marker, String format, Object[] argArray) {
}
@Override
public void info(Marker marker, String msg, Throwable t) {
}
@Override
public boolean isWarnEnabled() {
return false;
}
@Override
public void warn(String msg) {
this.loggedLevel = DcEvent.Level.WARN;
}
@Override
public void warn(String format, Object arg) {
}
@Override
public void warn(String format, Object[] argArray) {
}
@Override
public void warn(String format, Object arg1, Object arg2) {
}
@Override
public void warn(String msg, Throwable t) {
}
@Override
public boolean isWarnEnabled(Marker marker) {
return false;
}
@Override
public void warn(Marker marker, String msg) {
}
@Override
public void warn(Marker marker, String format, Object arg) {
}
@Override
public void warn(Marker marker, String format, Object arg1, Object arg2) {
}
@Override
public void warn(Marker marker, String format, Object[] argArray) {
}
@Override
public void warn(Marker marker, String msg, Throwable t) {
}
@Override
public boolean isErrorEnabled() {
return false;
}
@Override
public void error(String msg) {
this.loggedLevel = DcEvent.Level.ERROR;
}
@Override
public void error(String format, Object arg) {
}
@Override
public void error(String format, Object arg1, Object arg2) {
}
@Override
public void error(String format, Object[] argArray) {
}
@Override
public void error(String msg, Throwable t) {
}
@Override
public boolean isErrorEnabled(Marker marker) {
return false;
}
@Override
public void error(Marker marker, String msg) {
}
@Override
public void error(Marker marker, String format, Object arg) {
}
@Override
public void error(Marker marker, String format, Object arg1, Object arg2) {
}
@Override
public void error(Marker marker, String format, Object[] argArray) {
}
@Override
public void error(Marker marker, String msg, Throwable t) {
}
public int getLoggedLevel() {
return this.loggedLevel;
}
}
/**
* イベントロガーに正しくログ出力ができること.
*/
@Test
public void イベントロガーに正しくログ出力ができること() {
Logger defaultLogger = null;
Class<?> clazz = EventLogger.class;
Field baseDir = null;
try {
baseDir = clazz.getDeclaredField("log");
baseDir.setAccessible(true);
defaultLogger = (Logger) baseDir.get(null);
LoggerForEvent testLogger = new LoggerForEvent();
baseDir.set(null, testLogger);
EventLogger evLogger = new EventLogger(new CellEsImpl(), DcEvent.Level.INFO);
assertEquals(DcEvent.Level.INFO, evLogger.getLogLevel());
evLogger.log(new DcEvent("", "", DcEvent.Level.ERROR, "", "", "", ""));
assertEquals(DcEvent.Level.ERROR, testLogger.getLoggedLevel());
evLogger.log(new DcEvent("", "", DcEvent.Level.WARN, "", "", "", ""));
assertEquals(DcEvent.Level.WARN, testLogger.getLoggedLevel());
evLogger.log(new DcEvent("", "", DcEvent.Level.INFO, "", "", "", ""));
assertEquals(DcEvent.Level.INFO, testLogger.getLoggedLevel());
evLogger.setLogLevel(DcEvent.Level.ERROR);
assertEquals(DcEvent.Level.ERROR, evLogger.getLogLevel());
} catch (Exception e) {
e.printStackTrace();
fail(e.getMessage());
} finally {
if (baseDir != null) {
try {
baseDir.set(null, defaultLogger);
} catch (Exception e) {
e.printStackTrace();
fail(e.getMessage());
}
}
}
}
/**
* イベントロガーのログ出力可能レベルが変更できること.
*/
@Test
public void イベントロガーのログ出力可能レベルが変更できること() {
EventLogger evLogger = new EventLogger(new CellEsImpl(), DcEvent.Level.INFO);
assertEquals(DcEvent.Level.INFO, evLogger.getLogLevel());
evLogger.setLogLevel(DcEvent.Level.ERROR);
assertEquals(DcEvent.Level.ERROR, evLogger.getLogLevel());
}
}