blob: bb231c09893ca33d9b5d1f04acc2bcbbc9abecb1 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2012, 2014 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:
* Bernd Hufmann - Initial API and implementation
* Alexandre Montplaisir - Port to JUnit4
**********************************************************************/
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 java.util.LinkedList;
import java.util.List;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.IBaseEventInfo;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.IFieldInfo;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceEventType;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLogLevel;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.impl.BaseEventInfo;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.impl.FieldInfo;
import org.junit.Before;
import org.junit.Test;
/**
* The class <code>BaseEventInfoTest</code> contains test for the class
* <code>{@link BaseEventInfo}</code>.
*/
public class BaseEventInfoTest {
// ------------------------------------------------------------------------
// Test data
// ------------------------------------------------------------------------
private IBaseEventInfo fEventInfo1 = null;
private IBaseEventInfo fEventInfo2 = null;
// ------------------------------------------------------------------------
// Housekeeping
// ------------------------------------------------------------------------
/**
* Perform pre-test initialization.
*/
@Before
public void setUp() {
ModelImplFactory factory = new ModelImplFactory();
fEventInfo1 = factory.getBaseEventInfo1();
fEventInfo2 = factory.getBaseEventInfo2();
}
// ------------------------------------------------------------------------
// Tests
// ------------------------------------------------------------------------
/**
* Run the BaseEventInfo() constructor test.
*/
@Test
public void testBaseEventInfo() {
BaseEventInfo fixture = new BaseEventInfo("event");
assertNotNull(fixture);
TraceEventType result = fixture.getEventType();
assertEquals("event", fixture.getName());
assertEquals("unknown", result.getInName());
assertEquals("UNKNOWN", result.name());
assertEquals("UNKNOWN", result.toString());
assertEquals(4, result.ordinal());
TraceLogLevel level = fixture.getLogLevel();
assertEquals("TRACE_DEBUG", level.getInName());
assertEquals("TRACE_DEBUG", level.name());
assertEquals("TRACE_DEBUG", level.toString());
assertEquals(14, level.ordinal());
}
/**
* Test Copy Constructor
*/
@Test
public void testEventInfoCopy() {
BaseEventInfo info = new BaseEventInfo((BaseEventInfo)fEventInfo1);
assertEquals(fEventInfo1.getName(), info.getName());
assertEquals(fEventInfo1.getEventType(), info.getEventType());
assertEquals(fEventInfo1.getLogLevel(), info.getLogLevel());
assertEquals(fEventInfo1.getFilterExpression(), info.getFilterExpression());
IFieldInfo[] orignalFields = fEventInfo1.getFields();
IFieldInfo[] copiedFields = info.getFields();
assertEquals(orignalFields.length, copiedFields.length);
for (int i = 0; i < copiedFields.length; i++) {
assertEquals(orignalFields[i], copiedFields[i]);
}
}
/**
* Test Copy Constructor
*/
@Test
public void testEventCopy2() {
try {
BaseEventInfo info = null;
new BaseEventInfo(info);
fail("null copy");
}
catch (IllegalArgumentException e) {
// Success
}
}
/**
* Run the TraceEventType getEventType() method test.
*/
@Test
public void testGetEventType_1() {
BaseEventInfo fixture = new BaseEventInfo("event");
fixture.setEventType("unknown");
TraceEventType result = fixture.getEventType();
assertNotNull(result);
assertEquals("unknown", result.getInName());
assertEquals("UNKNOWN", result.name());
assertEquals("UNKNOWN", result.toString());
assertEquals(4, result.ordinal());
fixture.setEventType("");
result = fixture.getEventType();
assertEquals("unknown", result.getInName());
assertEquals("UNKNOWN", result.name());
assertEquals("UNKNOWN", result.toString());
assertEquals(4, result.ordinal());
fixture.setEventType("tracepoint");
result = fixture.getEventType();
assertNotNull(result);
assertEquals("tracepoint", result.getInName());
assertEquals("TRACEPOINT", result.name());
assertEquals("TRACEPOINT", result.toString());
assertEquals(0, result.ordinal());
fixture.setEventType("syscall");
result = fixture.getEventType();
assertNotNull(result);
assertEquals("syscall", result.getInName());
assertEquals("SYSCALL", result.name());
assertEquals("SYSCALL", result.toString());
assertEquals(1, result.ordinal());
fixture.setEventType("probe");
result = fixture.getEventType();
assertNotNull(result);
assertEquals("probe", result.getInName());
assertEquals("PROBE", result.name());
assertEquals("PROBE", result.toString());
assertEquals(2, result.ordinal());
fixture.setEventType("function");
result = fixture.getEventType();
assertNotNull(result);
assertEquals("function", result.getInName());
assertEquals("FUNCTION", result.name());
assertEquals("FUNCTION", result.toString());
assertEquals(3, result.ordinal());
}
/**
* Run the void setEventType(TraceEventType) method test.
*/
@Test
public void testSetEventType_2() {
BaseEventInfo fixture = new BaseEventInfo("event");
fixture.setEventType(TraceEventType.TRACEPOINT);
TraceEventType result = fixture.getEventType();
assertNotNull(result);
assertEquals("tracepoint", result.getInName());
assertEquals("TRACEPOINT", result.name());
assertEquals("TRACEPOINT", result.toString());
assertEquals(0, result.ordinal());
fixture.setEventType(TraceEventType.UNKNOWN);
result = fixture.getEventType();
assertNotNull(result);
assertEquals("unknown", result.getInName());
assertEquals("UNKNOWN", result.name());
assertEquals("UNKNOWN", result.toString());
assertEquals(4, result.ordinal());
fixture.setEventType(TraceEventType.SYSCALL);
result = fixture.getEventType();
assertNotNull(result);
assertEquals("syscall", result.getInName());
assertEquals("SYSCALL", result.name());
assertEquals("SYSCALL", result.toString());
assertEquals(1, result.ordinal());
fixture.setEventType(TraceEventType.PROBE);
result = fixture.getEventType();
assertNotNull(result);
assertEquals("probe", result.getInName());
assertEquals("PROBE", result.name());
assertEquals("PROBE", result.toString());
assertEquals(2, result.ordinal());
fixture.setEventType(TraceEventType.FUNCTION);
result = fixture.getEventType();
assertNotNull(result);
assertEquals("function", result.getInName());
assertEquals("FUNCTION", result.name());
assertEquals("FUNCTION", result.toString());
assertEquals(3, result.ordinal());
}
/**
* Run the void setLogLevel(TraceLogLevel) method test.
* Run the TraceLogLevel getLogLevel() method test
*/
@Test
public void testSetLogLevel1() {
BaseEventInfo fixture = new BaseEventInfo("event");
fixture.setEventType(TraceEventType.TRACEPOINT);
fixture.setLogLevel(TraceLogLevel.TRACE_CRIT);
// 2 set/get-operations are enough to test the method
TraceLogLevel result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_CRIT", result.getInName());
assertEquals("TRACE_CRIT", result.name());
assertEquals("TRACE_CRIT", result.toString());
assertEquals(2, result.ordinal());
fixture.setLogLevel(TraceLogLevel.TRACE_DEBUG_FUNCTION);
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_DEBUG_FUNCTION", result.getInName());
assertEquals("TRACE_DEBUG_FUNCTION", result.name());
assertEquals("TRACE_DEBUG_FUNCTION", result.toString());
assertEquals(12, result.ordinal());
}
/**
* Run the void setLogLevel(String) method test.
* Run the TraceLogLevel getLogLevel() method test
*/
@Test
public void testSetLogLevel2() {
BaseEventInfo fixture = new BaseEventInfo("event");
fixture.setEventType(TraceEventType.TRACEPOINT);
fixture.setLogLevel("TRACE_EMERG");
TraceLogLevel result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_EMERG", result.getInName());
assertEquals("TRACE_EMERG", result.name());
assertEquals(0, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_ALERT");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_ALERT", result.getInName());
assertEquals("TRACE_ALERT", result.name());
assertEquals(1, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_CRIT");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_CRIT", result.getInName());
assertEquals("TRACE_CRIT", result.name());
assertEquals(2, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_ERR");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_ERR", result.getInName());
assertEquals("TRACE_ERR", result.name());
assertEquals(3, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_WARNING");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_WARNING", result.getInName());
assertEquals("TRACE_WARNING", result.name());
assertEquals(4, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_NOTICE");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_NOTICE", result.getInName());
assertEquals("TRACE_NOTICE", result.name());
assertEquals(5, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_INFO");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_INFO", result.getInName());
assertEquals("TRACE_INFO", result.name());
assertEquals(6, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_DEBUG_SYSTEM");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_DEBUG_SYSTEM", result.getInName());
assertEquals("TRACE_DEBUG_SYSTEM", result.name());
assertEquals(7, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_DEBUG_PROGRAM");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_DEBUG_PROGRAM", result.getInName());
assertEquals("TRACE_DEBUG_PROGRAM", result.name());
assertEquals(8, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_DEBUG_PROCESS");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_DEBUG_PROCESS", result.getInName());
assertEquals("TRACE_DEBUG_PROCESS", result.name());
assertEquals(9, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_DEBUG_MODULE");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_DEBUG_MODULE", result.getInName());
assertEquals("TRACE_DEBUG_MODULE", result.name());
assertEquals(10, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_DEBUG_UNIT");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_DEBUG_UNIT", result.getInName());
assertEquals("TRACE_DEBUG_UNIT", result.name());
assertEquals(11, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_DEBUG_FUNCTION");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_DEBUG_FUNCTION", result.getInName());
assertEquals("TRACE_DEBUG_FUNCTION", result.name());
assertEquals(12, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_DEBUG_LINE");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_DEBUG_LINE", result.getInName());
assertEquals("TRACE_DEBUG_LINE", result.name());
assertEquals(13, result.ordinal());
//------------------------
fixture.setLogLevel("TRACE_DEBUG");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("TRACE_DEBUG", result.getInName());
assertEquals("TRACE_DEBUG", result.name());
assertEquals(14, result.ordinal());
//-------------------------
fixture.setLogLevel("LEVEL_UNKNOWN");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("LEVEL_UNKNOWN", result.getInName());
assertEquals("LEVEL_UNKNOWN", result.name());
assertEquals(15, result.ordinal());
fixture.setLogLevel("garbage");
result = fixture.getLogLevel();
assertNotNull(result);
assertEquals("LEVEL_UNKNOWN", result.getInName());
assertEquals("LEVEL_UNKNOWN", result.name());
assertEquals(15, result.ordinal());
}
/**
* test filter expression
*/
@Test
public void testSetFields() {
BaseEventInfo info = new BaseEventInfo((BaseEventInfo)fEventInfo2);
info.setFilterExpression("stringfield==test");
assertEquals("stringfield==test", info.getFilterExpression());
}
/**
* test add field
*/
@Test
public void testAddField() {
BaseEventInfo info = new BaseEventInfo((BaseEventInfo)fEventInfo2);
IFieldInfo field = new FieldInfo("intfield");
field.setFieldType("int");
info.addField(field);
// Verify the stored events
IFieldInfo[] result = info.getFields();
assertNotNull(result);
assertEquals(1, result.length);
assertNotNull(result[0]);
assertTrue(field.equals(result[0]));
}
/**
* test set fields
*/
@Test
public void testFields() {
BaseEventInfo info = new BaseEventInfo((BaseEventInfo)fEventInfo2);
IFieldInfo field1 = new FieldInfo("intfield");
field1.setFieldType("int");
IFieldInfo field2 = new FieldInfo("stringfield");
field2.setFieldType("string");
List<IFieldInfo> fields = new LinkedList<>();
fields.add(field1);
fields.add(field2);
info.setFields(fields);
// Verify the stored events
IFieldInfo[] result = info.getFields();
assertNotNull(result);
assertEquals(2, result.length);
for (int i = 0; i < result.length; i++) {
assertNotNull(result[i]);
assertTrue(fields.get(i).equals(result[i]));
}
}
/**
* test set excluded events
*/
@Test
public void testExcludedEvents() {
BaseEventInfo info = new BaseEventInfo((BaseEventInfo)fEventInfo2);
String event = "foo";
String events = "foo,bar,buz";
info.setExcludedEvents(null);
assertEquals(null, info.getExcludedEvents());
info.setExcludedEvents(event);
assertEquals(event, info.getExcludedEvents());
info.setExcludedEvents(events);
assertEquals(events, info.getExcludedEvents());
}
/**
* Run the String toString() method test.
*/
@Test
public void testToString_1() {
BaseEventInfo fixture = new BaseEventInfo("event");
fixture.setName("testName");
fixture.setEventType(TraceEventType.TRACEPOINT);
fixture.setLogLevel(TraceLogLevel.TRACE_ERR);
String result = fixture.toString();
// add additional test code here
assertEquals("[BaseEventInfo([TraceInfo(Name=testName)],type=TRACEPOINT,level=TRACE_ERR)]", result);
fixture.setExcludedEvents(null);
result = fixture.toString();
assertEquals("[BaseEventInfo([TraceInfo(Name=testName)],type=TRACEPOINT,level=TRACE_ERR)]", result);
fixture.setExcludedEvents("testExcludedEvent");
result = fixture.toString();
assertEquals("[BaseEventInfo([TraceInfo(Name=testName)],type=TRACEPOINT,level=TRACE_ERR,Exclusion=testExcludedEvent)]", result);
}
// ------------------------------------------------------------------------
// equals
// ------------------------------------------------------------------------
/**
* Test the .equals() method.
*/
@Test
public void testEqualsReflexivity() {
assertTrue("equals", fEventInfo1.equals(fEventInfo1));
assertTrue("equals", fEventInfo2.equals(fEventInfo2));
assertTrue("equals", !fEventInfo1.equals(fEventInfo2));
assertTrue("equals", !fEventInfo2.equals(fEventInfo1));
fEventInfo1.setExcludedEvents(null);
assertTrue("equals", fEventInfo1.equals(fEventInfo1));
fEventInfo1.setExcludedEvents("foo");
assertTrue("equals", fEventInfo1.equals(fEventInfo1));
}
/**
* Test the .equals() method.
*/
@Test
public void testEqualsSymmetry() {
BaseEventInfo info1 = new BaseEventInfo((BaseEventInfo)fEventInfo1);
BaseEventInfo info2 = new BaseEventInfo((BaseEventInfo)fEventInfo2);
assertTrue("equals", info1.equals(fEventInfo1));
assertTrue("equals", fEventInfo1.equals(info1));
assertTrue("equals", info2.equals(fEventInfo2));
assertTrue("equals", fEventInfo2.equals(info2));
info1.setExcludedEvents(null);
assertTrue("equals", info1.equals(fEventInfo1));
assertTrue("equals", fEventInfo1.equals(info1));
info1.setExcludedEvents("foo");
assertTrue("equals", !info1.equals(fEventInfo1));
assertTrue("equals", !fEventInfo1.equals(info1));
fEventInfo1.setExcludedEvents("foo");
assertTrue("equals", info1.equals(fEventInfo1));
assertTrue("equals", fEventInfo1.equals(info1));
}
/**
* Test the .equals() method.
*/
@Test
public void testEqualsTransivity() {
BaseEventInfo info1 = new BaseEventInfo((BaseEventInfo)fEventInfo1);
BaseEventInfo info2 = new BaseEventInfo((BaseEventInfo)fEventInfo1);
BaseEventInfo info3 = new BaseEventInfo((BaseEventInfo)fEventInfo1);
assertTrue("equals", info1.equals(info2));
assertTrue("equals", info2.equals(info3));
assertTrue("equals", info1.equals(info3));
info1.setExcludedEvents(null);
assertTrue("equals", info1.equals(info2));
assertTrue("equals", info2.equals(info3));
assertTrue("equals", info1.equals(info3));
info1.setExcludedEvents("foo");
assertTrue("equals", !info1.equals(info2));
assertTrue("equals", info2.equals(info3));
assertTrue("equals", !info1.equals(info3));
info2.setExcludedEvents("foo");
assertTrue("equals", info1.equals(info2));
assertTrue("equals", !info2.equals(info3));
assertTrue("equals", !info1.equals(info3));
info3.setExcludedEvents("foo");
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", !fEventInfo1.equals(null));
assertTrue("equals", !fEventInfo2.equals(null));
}
// ------------------------------------------------------------------------
// hashCode
// ------------------------------------------------------------------------
/**
* Test the hashCode() method.
*/
@Test
public void testHashCode() {
BaseEventInfo info1 = new BaseEventInfo((BaseEventInfo)fEventInfo1);
BaseEventInfo info2 = new BaseEventInfo((BaseEventInfo)fEventInfo2);
assertTrue("hashCode", fEventInfo1.hashCode() == info1.hashCode());
assertTrue("hashCode", fEventInfo2.hashCode() == info2.hashCode());
assertTrue("hashCode", fEventInfo1.hashCode() != info2.hashCode());
assertTrue("hashCode", fEventInfo2.hashCode() != info1.hashCode());
BaseEventInfo info3 = new BaseEventInfo((BaseEventInfo)fEventInfo1);
BaseEventInfo info4 = new BaseEventInfo((BaseEventInfo)fEventInfo1);
info3.setExcludedEvents(null);
assertTrue("hashCode", fEventInfo1.hashCode() == info3.hashCode());
info3.setExcludedEvents("foo");
assertTrue("hashCode", fEventInfo1.hashCode() != info3.hashCode());
assertTrue("hashCode", info3.hashCode() != info4.hashCode());
info4.setExcludedEvents("foo");
assertTrue("hashCode", info3.hashCode()== info4.hashCode());
}
}