blob: 5f1cad33f65b50c5149fd58d451e716f9f9bb806 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015, 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:
* Patrick Tasse - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.tmf.core.tests.filter;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
import org.eclipse.tracecompass.tmf.core.event.TmfEvent;
import org.eclipse.tracecompass.tmf.core.event.TmfEventField;
import org.eclipse.tracecompass.tmf.core.event.TmfEventType;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterAndNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterCompareNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterContainsNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterEqualsNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterMatchesNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterOrNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterTraceTypeNode;
import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTxtEvent;
import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTxtEventType;
import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTxtTrace;
import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTxtTraceDefinition;
import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlEvent;
import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlEventType;
import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlInputElement;
import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlTrace;
import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlTraceDefinition;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
import org.eclipse.tracecompass.tmf.tests.stubs.trace.TmfTraceStub;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
/**
* Test suite for the {@link TmfFilterTraceTypeNode} class.
*
* @author Patrick Tasse
*/
@SuppressWarnings("javadoc")
public class TmfFilterTraceTypeNodeTest extends TmfFilterTreeNodeTestBase {
// ------------------------------------------------------------------------
// Variables
// ------------------------------------------------------------------------
private static final String CATEGORY_TXT = "txt";
private static final String CATEGORY_XML = "xml";
private static final @NonNull String DEFINITION_NAME_TXT = "name txt";
private static final @NonNull String DEFINITION_NAME_XML = "name xml";
private static final String SEP = ":";
private static final String CUSTOM_TXT_TRACE_TYPE_PREFIX = "custom.txt.trace" + SEP;
private static final String CUSTOM_XML_TRACE_TYPE_PREFIX = "custom.xml.trace" + SEP;
private static CustomTxtTraceDefinition fCustomTxtDefinition = new CustomTxtTraceDefinition();
private static CustomXmlTraceDefinition fCustomXmlDefinition = new CustomXmlTraceDefinition();
static {
fCustomTxtDefinition.categoryName = CATEGORY_TXT;
fCustomTxtDefinition.definitionName = DEFINITION_NAME_TXT;
fCustomXmlDefinition.categoryName = CATEGORY_XML;
fCustomXmlDefinition.definitionName = DEFINITION_NAME_XML;
fCustomXmlDefinition.rootInputElement = new CustomXmlInputElement();
}
private static CustomTxtTrace fCustomTxtTrace = new CustomTxtTrace(fCustomTxtDefinition);
private static CustomXmlTrace fCustomXmlTrace = new CustomXmlTrace(fCustomXmlDefinition);
private static TmfEventType fCustomTxtEventType = new CustomTxtEventType(DEFINITION_NAME_TXT, null);
private static TmfEventType fCustomXmlEventType = new CustomXmlEventType(DEFINITION_NAME_XML, null);
private ITmfEventField fContent = new TmfEventField(ITmfEventField.ROOT_FIELD_ID, null, null);
private TmfEvent fEvent1 = new TmfEvent(TRACE, 0, TmfTimestamp.fromNanos(1), EVENT_TYPE, fContent);
private TmfEvent fEvent2 = new CustomTxtEvent(fCustomTxtDefinition, fCustomTxtTrace, TmfTimestamp.fromNanos(2), fCustomTxtEventType);
private TmfEvent fEvent3 = new CustomXmlEvent(fCustomXmlDefinition, fCustomXmlTrace, TmfTimestamp.fromNanos(3), fCustomXmlEventType);
private TmfFilterTraceTypeNode fFilter;
@AfterClass
public static void disposeCustomTraces() {
fCustomTxtTrace.dispose();
fCustomXmlTrace.dispose();
}
// ------------------------------------------------------------------------
// Tests
// ------------------------------------------------------------------------
@Before
public void createFilter() {
fFilter = new TmfFilterTraceTypeNode(null);
fFilterNode = fFilter;
}
@Test
public void testMatches() {
fFilter.setTraceClass(TmfTraceStub.class);
assertTrue(fFilter.matches(fEvent1));
assertFalse(fFilter.matches(fEvent2));
assertFalse(fFilter.matches(fEvent3));
fFilter.setTraceClass(CustomTxtTrace.class);
fFilter.setTraceTypeId(CUSTOM_TXT_TRACE_TYPE_PREFIX + CATEGORY_TXT + SEP + DEFINITION_NAME_TXT);
assertFalse(fFilter.matches(fEvent1));
assertTrue(fFilter.matches(fEvent2));
assertFalse(fFilter.matches(fEvent3));
fFilter.setTraceClass(CustomXmlTrace.class);
fFilter.setTraceTypeId(CUSTOM_XML_TRACE_TYPE_PREFIX + CATEGORY_XML + SEP + DEFINITION_NAME_XML);
assertFalse(fFilter.matches(fEvent1));
assertFalse(fFilter.matches(fEvent2));
assertTrue(fFilter.matches(fEvent3));
fFilter.setTraceClass(CustomTxtTrace.class);
fFilter.setTraceTypeId(CUSTOM_TXT_TRACE_TYPE_PREFIX + CATEGORY_XML + SEP + DEFINITION_NAME_XML);
assertFalse(fFilter.matches(fEvent1));
assertFalse(fFilter.matches(fEvent2));
assertFalse(fFilter.matches(fEvent3));
}
@Test
public void testGetName() {
assertEquals("getName()", "TRACETYPE", fFilter.getNodeName());
}
@Test
public void testGetValidChildren() {
Set<String> validChildren = new HashSet<>(Arrays.asList(
TmfFilterTraceTypeNode.NODE_NAME,
TmfFilterAndNode.NODE_NAME,
TmfFilterOrNode.NODE_NAME,
TmfFilterContainsNode.NODE_NAME,
TmfFilterEqualsNode.NODE_NAME,
TmfFilterMatchesNode.NODE_NAME,
TmfFilterCompareNode.NODE_NAME));
assertEquals("getValidChildren()", validChildren, new HashSet<>(fFilter.getValidChildren()));
}
}