/******************************************************************************* * * Pentaho Data Integration * * Copyright (C) 2002-2016 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * 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 org.pentaho.di.core.logging; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import org.pentaho.di.core.Const; /** * @author Tatsiana_Kasiankova * */ public class LogMessageTest { private LogMessage logMessage; private static final String LOG_MESSAGE = "Test Message"; private static final LogLevel LOG_LEVEL = LogLevel.BASIC; private static String treeLogChannelId; private static String simpleLogChannelId; @Before public void setUp() { treeLogChannelId = LoggingRegistry.getInstance().registerLoggingSource( getTreeLoggingObject() ); } @After public void tearDown() { LoggingRegistry.getInstance().removeIncludingChildren( treeLogChannelId ); } @AfterClass public static void afterClass() { LoggingRegistry.getInstance().getMap().clear(); } @Test public void testWhenLogMarkMappingTurnOn_DetailedSubjectUsed() throws Exception { turnOnLogMarkMapping(); logMessage = new LogMessage( LOG_MESSAGE, treeLogChannelId, LOG_LEVEL ); assertTrue( LOG_MESSAGE.equals( logMessage.getMessage() ) ); assertTrue( LOG_LEVEL.equals( logMessage.getLevel() ) ); assertTrue( treeLogChannelId.equals( logMessage.getLogChannelId() ) ); assertTrue( "[TRANS_SUBJECT].[STEP_SUBJECT].TRANS_CHILD_SUBJECT".equals( logMessage.getSubject() ) ); } @Test public void testWhenLogMarkMappingTurnOff_SimpleSubjectUsed() throws Exception { turnOffLogMarkMapping(); logMessage = new LogMessage( LOG_MESSAGE, treeLogChannelId, LOG_LEVEL ); assertTrue( LOG_MESSAGE.equals( logMessage.getMessage() ) ); assertTrue( LOG_LEVEL.equals( logMessage.getLevel() ) ); assertTrue( treeLogChannelId.equals( logMessage.getLogChannelId() ) ); assertTrue( "TRANS_CHILD_SUBJECT".equals( logMessage.getSubject() ) ); } @Test public void testWhenLogMarkMappingTurnOnAndNoSubMappingUsed_DetailedSubjectContainsOnlySimpleSubject() throws Exception { turnOnLogMarkMapping(); simpleLogChannelId = LoggingRegistry.getInstance().registerLoggingSource( getLoggingObjectWithOneParent() ); logMessage = new LogMessage( LOG_MESSAGE, simpleLogChannelId, LOG_LEVEL ); assertTrue( LOG_MESSAGE.equals( logMessage.getMessage() ) ); assertTrue( LOG_LEVEL.equals( logMessage.getLevel() ) ); assertTrue( simpleLogChannelId.equals( logMessage.getLogChannelId() ) ); assertTrue( "TRANS_SUBJECT".equals( logMessage.getSubject() ) ); LoggingRegistry.getInstance().removeIncludingChildren( simpleLogChannelId ); } @Test public void testToString() throws Exception { LogMessage msg = new LogMessage( "Log message", "Channel 01", LogLevel.DEBUG ); msg.setSubject( "Simple" ); assertEquals( "Simple - Log message", msg.toString( ) ); } @Test public void testToString_withOneArgument() throws Exception { LogMessage msg = new LogMessage( "Log message for {0}", "Channel 01", new String[]{"Test"}, LogLevel.DEBUG ); msg.setSubject( "Subject" ); assertEquals( "Subject - Log message for Test", msg.toString( ) ); } private void turnOnLogMarkMapping() { System.getProperties().put( Const.KETTLE_LOG_MARK_MAPPINGS, "Y" ); } private void turnOffLogMarkMapping() { System.getProperties().put( Const.KETTLE_LOG_MARK_MAPPINGS, "N" ); } private static LoggingObjectInterface getTreeLoggingObject() { LoggingObjectInterface rootLogObject = new SimpleLoggingObject( "ROOT_SUBJECT", LoggingObjectType.SPOON, null ); LoggingObjectInterface transLogObject = new SimpleLoggingObject( "TRANS_SUBJECT", LoggingObjectType.TRANS, rootLogObject ); LoggingObjectInterface stepLogObject = new SimpleLoggingObject( "STEP_SUBJECT", LoggingObjectType.STEP, transLogObject ); LoggingObjectInterface transChildLogObject = new SimpleLoggingObject( "TRANS_CHILD_SUBJECT", LoggingObjectType.TRANS, stepLogObject ); return transChildLogObject; } private static LoggingObjectInterface getLoggingObjectWithOneParent() { LoggingObjectInterface rootLogObject = new SimpleLoggingObject( "ROOT_SUBJECT", LoggingObjectType.SPOON, null ); LoggingObjectInterface transLogObject = new SimpleLoggingObject( "TRANS_SUBJECT", LoggingObjectType.TRANS, rootLogObject ); return transLogObject; } }