blob: 8a1127bf5f50e93900adfe773bb9eb0185681600 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2016 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Bruno Roy- Initial API and implementation
**********************************************************************/
package org.eclipse.tracecompass.lttng2.control.core.tests.model.impl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.IBaseLoggerInfo;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceJulLogLevel;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLog4jLogLevel;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.TracePythonLogLevel;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.impl.BaseLoggerInfo;
import org.junit.Before;
import org.junit.Test;
/**
* The class <code>BaseLoggerInfoTest</code> contains test for the class
* <code>{@link BaseLoggerInfo}</code>.
*/
public class BaseLoggerInfoTest {
// ------------------------------------------------------------------------
// Test data
// ------------------------------------------------------------------------
private IBaseLoggerInfo fBaseLoggerInfo1 = null;
private IBaseLoggerInfo fBaseLoggerInfo2 = null;
// ------------------------------------------------------------------------
// Housekeeping
// ------------------------------------------------------------------------
/**
* Perform pre-test initialization.
*/
@Before
public void setUp() {
ModelImplFactory factory = new ModelImplFactory();
fBaseLoggerInfo1 = factory.getBaseLoggerInfo1();
fBaseLoggerInfo2 = factory.getBaseLoggerInfo2();
}
// ------------------------------------------------------------------------
// Tests
// ------------------------------------------------------------------------
/**
* Run the BaseLoggerInfo() constructor test.
*/
@Test
public void testBaseLoggerInfo() {
BaseLoggerInfo fixture = new BaseLoggerInfo("logger");
assertNotNull(fixture);
// Name
String name = fixture.getName();
assertEquals("logger", name);
// Domain
TraceDomainType domain = fixture.getDomain();
assertEquals("Unknown domain type", domain.getInName());
assertEquals("UNKNOWN", domain.name());
assertEquals("UNKNOWN", domain.toString());
assertEquals(5, domain.ordinal());
// Log level
TraceJulLogLevel logLevel = (TraceJulLogLevel) fixture.getLogLevel();
assertEquals("LEVEL_UNKNOWN", logLevel.getInName());
assertEquals("LEVEL_UNKNOWN", logLevel.name());
assertEquals("LEVEL_UNKNOWN", logLevel.toString());
assertEquals(9, logLevel.ordinal());
}
/**
* Test Copy Constructor
*/
@Test
public void testBaseLoggerInfoCopy() {
BaseLoggerInfo fixture = new BaseLoggerInfo((BaseLoggerInfo) fBaseLoggerInfo1);
assertEquals(fBaseLoggerInfo1.getName(), fixture.getName());
assertEquals(fBaseLoggerInfo1.getDomain(), fBaseLoggerInfo1.getDomain());
assertEquals(fBaseLoggerInfo1.getLogLevel(), fixture.getLogLevel());
}
/**
* Test Copy Constructor
*/
@Test
public void testBaseLoggerInfoCopy2() {
try {
BaseLoggerInfo info = null;
new BaseLoggerInfo(info);
fail("null copy");
}
catch (IllegalArgumentException e) {
// Success
}
}
/**
* Run the void setLogLevel(TraceJulLogLevel) method test.
* Run the TraceJulLogLevel getLogLevel() method test
*/
@Test
public void testSetLogLevel1() {
BaseLoggerInfo fixture = new BaseLoggerInfo("logger");
// Case 1 : JUL_ALL
fixture.setLogLevel(TraceJulLogLevel.JUL_ALL);
TraceJulLogLevel resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("All", resultJul.getInName());
assertEquals("JUL_ALL", resultJul.name());
assertEquals("JUL_ALL", resultJul.toString());
assertEquals(8, resultJul.ordinal());
// Case 2 : JUL_WARNING
fixture.setLogLevel(TraceJulLogLevel.JUL_WARNING);
resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("Warning", resultJul.getInName());
assertEquals("JUL_WARNING", resultJul.name());
assertEquals("JUL_WARNING", resultJul.toString());
assertEquals(2, resultJul.ordinal());
// Case 3 : LOG4J_ALL
fixture.setDomain(TraceDomainType.LOG4J);
fixture.setLogLevel(TraceLog4jLogLevel.LOG4J_ALL);
TraceLog4jLogLevel resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("All", resultLog4j.getInName());
assertEquals("LOG4J_ALL", resultLog4j.name());
assertEquals("LOG4J_ALL", resultLog4j.toString());
assertEquals(7, resultLog4j.ordinal());
// Case 4 : LOG4J_FATAL
fixture.setLogLevel(TraceLog4jLogLevel.LOG4J_FATAL);
resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("Fatal", resultLog4j.getInName());
assertEquals("LOG4J_FATAL", resultLog4j.name());
assertEquals("LOG4J_FATAL", resultLog4j.toString());
assertEquals(1, resultLog4j.ordinal());
// Case 5 : PYTHON_NOTSET
fixture.setDomain(TraceDomainType.PYTHON);
fixture.setLogLevel(TracePythonLogLevel.PYTHON_NOTSET);
TracePythonLogLevel resultPython = (TracePythonLogLevel) fixture.getLogLevel();
assertNotNull(resultPython);
assertEquals("Notset", resultPython.getInName());
assertEquals("PYTHON_NOTSET", resultPython.name());
assertEquals("PYTHON_NOTSET", resultPython.toString());
assertEquals(5, resultPython.ordinal());
// Case 6 : LOG4J_FATAL
fixture.setLogLevel(TracePythonLogLevel.PYTHON_DEBUG);
resultPython = (TracePythonLogLevel) fixture.getLogLevel();
assertNotNull(resultPython);
assertEquals("Debug", resultPython.getInName());
assertEquals("PYTHON_DEBUG", resultPython.name());
assertEquals("PYTHON_DEBUG", resultPython.toString());
assertEquals(4, resultPython.ordinal());
}
/**
* Run the void setLogLevel(String) method test.
* Run the TraceJulLogLevel getLogLevel() method test
*/
@Test
public void testSetLogLevel2() {
BaseLoggerInfo fixture = new BaseLoggerInfo("logger");
// Case 1: JUL log level
fixture.setDomain(TraceDomainType.JUL);
fixture.setLogLevel("Off");
TraceJulLogLevel resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("Off", resultJul.getInName());
assertEquals("JUL_OFF", resultJul.name());
assertEquals(0, resultJul.ordinal());
//------------------------
fixture.setLogLevel("Severe");
resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("Severe", resultJul.getInName());
assertEquals("JUL_SEVERE", resultJul.name());
assertEquals(1, resultJul.ordinal());
//------------------------
fixture.setLogLevel("Warning");
resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("Warning", resultJul.getInName());
assertEquals("JUL_WARNING", resultJul.name());
assertEquals(2, resultJul.ordinal());
//------------------------
fixture.setLogLevel("Info");
resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("Info", resultJul.getInName());
assertEquals("JUL_INFO", resultJul.name());
assertEquals(3, resultJul.ordinal());
//------------------------
fixture.setLogLevel("Config");
resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("Config", resultJul.getInName());
assertEquals("JUL_CONFIG", resultJul.name());
assertEquals(4, resultJul.ordinal());
//------------------------
fixture.setLogLevel("Fine");
resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("Fine", resultJul.getInName());
assertEquals("JUL_FINE", resultJul.name());
assertEquals(5, resultJul.ordinal());
//------------------------
fixture.setLogLevel("Finer");
resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("Finer", resultJul.getInName());
assertEquals("JUL_FINER", resultJul.name());
assertEquals(6, resultJul.ordinal());
//------------------------
fixture.setLogLevel("Finest");
resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("Finest", resultJul.getInName());
assertEquals("JUL_FINEST", resultJul.name());
assertEquals(7, resultJul.ordinal());
//------------------------
fixture.setLogLevel("All");
resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("All", resultJul.getInName());
assertEquals("JUL_ALL", resultJul.name());
assertEquals(8, resultJul.ordinal());
//------------------------
fixture.setLogLevel("LEVEL_UNKNOWN");
resultJul = (TraceJulLogLevel) fixture.getLogLevel();
assertNotNull(resultJul);
assertEquals("LEVEL_UNKNOWN", resultJul.getInName());
assertEquals("LEVEL_UNKNOWN", resultJul.name());
assertEquals(9, resultJul.ordinal());
// Case 2: LOG4J log level
fixture.setDomain(TraceDomainType.LOG4J);
fixture.setLogLevel("Off");
TraceLog4jLogLevel resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("Off", resultLog4j.getInName());
assertEquals("LOG4J_OFF", resultLog4j.name());
assertEquals(0, resultLog4j.ordinal());
//------------------------
fixture.setLogLevel("Fatal");
resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("Fatal", resultLog4j.getInName());
assertEquals("LOG4J_FATAL", resultLog4j.name());
assertEquals(1, resultLog4j.ordinal());
//------------------------
fixture.setLogLevel("Error");
resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("Error", resultLog4j.getInName());
assertEquals("LOG4J_ERROR", resultLog4j.name());
assertEquals(2, resultLog4j.ordinal());
//------------------------
fixture.setLogLevel("Warn");
resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("Warn", resultLog4j.getInName());
assertEquals("LOG4J_WARN", resultLog4j.name());
assertEquals(3, resultLog4j.ordinal());
//------------------------
fixture.setLogLevel("Info");
resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("Info", resultLog4j.getInName());
assertEquals("LOG4J_INFO", resultLog4j.name());
assertEquals(4, resultLog4j.ordinal());
//------------------------
fixture.setLogLevel("Debug");
resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("Debug", resultLog4j.getInName());
assertEquals("LOG4J_DEBUG", resultLog4j.name());
assertEquals(5, resultLog4j.ordinal());
//------------------------
fixture.setLogLevel("Trace");
resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("Trace", resultLog4j.getInName());
assertEquals("LOG4J_TRACE", resultLog4j.name());
assertEquals(6, resultLog4j.ordinal());
//------------------------
fixture.setLogLevel("All");
resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("All", resultLog4j.getInName());
assertEquals("LOG4J_ALL", resultLog4j.name());
assertEquals(7, resultLog4j.ordinal());
//------------------------
fixture.setLogLevel("LEVEL_UNKNOWN");
resultLog4j = (TraceLog4jLogLevel) fixture.getLogLevel();
assertNotNull(resultLog4j);
assertEquals("LEVEL_UNKNOWN", resultLog4j.getInName());
assertEquals("LEVEL_UNKNOWN", resultLog4j.name());
assertEquals(8, resultLog4j.ordinal());
// Case 3: Python log level
fixture.setDomain(TraceDomainType.PYTHON);
fixture.setLogLevel("Critical");
TracePythonLogLevel resultPython = (TracePythonLogLevel) fixture.getLogLevel();
assertNotNull(resultPython);
assertEquals("Critical", resultPython.getInName());
assertEquals("PYTHON_CRITICAL", resultPython.name());
assertEquals(0, resultPython.ordinal());
//------------------------
fixture.setLogLevel("Error");
resultPython = (TracePythonLogLevel) fixture.getLogLevel();
assertNotNull(resultPython);
assertEquals("Error", resultPython.getInName());
assertEquals("PYTHON_ERROR", resultPython.name());
assertEquals(1, resultPython.ordinal());
//------------------------
fixture.setLogLevel("Warning");
resultPython = (TracePythonLogLevel) fixture.getLogLevel();
assertNotNull(resultPython);
assertEquals("Warning", resultPython.getInName());
assertEquals("PYTHON_WARNING", resultPython.name());
assertEquals(2, resultPython.ordinal());
//------------------------
fixture.setLogLevel("Info");
resultPython = (TracePythonLogLevel) fixture.getLogLevel();
assertNotNull(resultPython);
assertEquals("Info", resultPython.getInName());
assertEquals("PYTHON_INFO", resultPython.name());
assertEquals(3, resultPython.ordinal());
//------------------------
fixture.setLogLevel("Debug");
resultPython = (TracePythonLogLevel) fixture.getLogLevel();
assertNotNull(resultPython);
assertEquals("Debug", resultPython.getInName());
assertEquals("PYTHON_DEBUG", resultPython.name());
assertEquals(4, resultPython.ordinal());
//------------------------
fixture.setLogLevel("Notset");
resultPython = (TracePythonLogLevel) fixture.getLogLevel();
assertNotNull(resultPython);
assertEquals("Notset", resultPython.getInName());
assertEquals("PYTHON_NOTSET", resultPython.name());
assertEquals(5, resultPython.ordinal());
//------------------------
fixture.setLogLevel("LEVEL_UNKNOWN");
resultPython = (TracePythonLogLevel) fixture.getLogLevel();
assertNotNull(resultPython);
assertEquals("LEVEL_UNKNOWN", resultPython.getInName());
assertEquals("LEVEL_UNKNOWN", resultPython.name());
assertEquals(6, resultPython.ordinal());
}
/**
* Run the String toString() method test.
*/
@Test
public void testToString_1() {
BaseLoggerInfo fixture = new BaseLoggerInfo("logger");
fixture.setName("testName");
fixture.setDomain(TraceDomainType.JUL);
fixture.setLogLevel(TraceJulLogLevel.JUL_ALL);
String result = fixture.toString();
assertEquals("[BaseLoggerInfo([TraceInfo(Name=testName)],domain=JUL,level=JUL_ALL)]", result);
fixture.setDomain(TraceDomainType.LOG4J);
fixture.setLogLevel(TraceLog4jLogLevel.LOG4J_ERROR);
result = fixture.toString();
assertEquals("[BaseLoggerInfo([TraceInfo(Name=testName)],domain=LOG4J,level=LOG4J_ERROR)]", result);
fixture.setDomain(TraceDomainType.PYTHON);
fixture.setLogLevel(TracePythonLogLevel.PYTHON_CRITICAL);
result = fixture.toString();
assertEquals("[BaseLoggerInfo([TraceInfo(Name=testName)],domain=PYTHON,level=PYTHON_CRITICAL)]", result);
}
// ------------------------------------------------------------------------
// equals
// ------------------------------------------------------------------------
/**
* Test the .equals() method.
*/
@Test
public void testEqualsReflexivity() {
assertTrue("equals", fBaseLoggerInfo1.equals(fBaseLoggerInfo1));
assertTrue("equals", fBaseLoggerInfo2.equals(fBaseLoggerInfo2));
assertTrue("equals", !fBaseLoggerInfo1.equals(fBaseLoggerInfo2));
assertTrue("equals", !fBaseLoggerInfo2.equals(fBaseLoggerInfo1));
}
/**
* Test the .equals() method.
*/
@Test
public void testEqualsSymmetry() {
BaseLoggerInfo info1 = new BaseLoggerInfo((BaseLoggerInfo) fBaseLoggerInfo1);
BaseLoggerInfo info2 = new BaseLoggerInfo((BaseLoggerInfo) fBaseLoggerInfo2);
assertTrue("equals", info1.equals(fBaseLoggerInfo1));
assertTrue("equals", fBaseLoggerInfo1.equals(info1));
assertTrue("equals", info2.equals(fBaseLoggerInfo2));
assertTrue("equals", fBaseLoggerInfo2.equals(info2));
}
/**
* Test the .equals() method.
*/
@Test
public void testEqualsTransivity() {
BaseLoggerInfo info1 = new BaseLoggerInfo((BaseLoggerInfo) fBaseLoggerInfo1);
BaseLoggerInfo info2 = new BaseLoggerInfo((BaseLoggerInfo) fBaseLoggerInfo1);
BaseLoggerInfo info3 = new BaseLoggerInfo((BaseLoggerInfo) fBaseLoggerInfo1);
assertTrue("equals", info1.equals(info2));
assertTrue("equals", info2.equals(info3));
assertTrue("equals", info1.equals(info3));
}
/**
* Test the .equals() method.
*/
@Test
public void testEqualsNull() {
assertTrue("equals", !fBaseLoggerInfo1.equals(null));
assertTrue("equals", !fBaseLoggerInfo2.equals(null));
}
// ------------------------------------------------------------------------
// hashCode
// ------------------------------------------------------------------------
/**
* Test the hashCode() method.
*/
@Test
public void testHashCode() {
BaseLoggerInfo info1 = new BaseLoggerInfo((BaseLoggerInfo) fBaseLoggerInfo1);
BaseLoggerInfo info2 = new BaseLoggerInfo((BaseLoggerInfo) fBaseLoggerInfo2);
assertTrue("hashCode", fBaseLoggerInfo1.hashCode() == info1.hashCode());
assertTrue("hashCode", fBaseLoggerInfo2.hashCode() == info2.hashCode());
assertTrue("hashCode", fBaseLoggerInfo1.hashCode() != info2.hashCode());
assertTrue("hashCode", fBaseLoggerInfo2.hashCode() != info1.hashCode());
}
}