| /******************************************************************************* |
| * 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 |
| *******************************************************************************/ |
| |
| package org.eclipse.tracecompass.tmf.analysis.xml.core.tests.stateprovider; |
| |
| import static org.junit.Assert.assertNotNull; |
| |
| import org.eclipse.jdt.annotation.NonNull; |
| import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.pattern.stateprovider.XmlPatternAnalysis; |
| import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem; |
| import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException; |
| import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException; |
| import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue; |
| import org.eclipse.tracecompass.statesystem.core.statevalue.TmfStateValue; |
| import org.eclipse.tracecompass.tmf.analysis.xml.core.tests.common.TmfXmlTestFiles; |
| import org.eclipse.tracecompass.tmf.analysis.xml.core.tests.module.XmlUtilsTest; |
| import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException; |
| import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| /** |
| * Test the consuming state of an fsm. This test creates a pattern with two fsm. |
| * One is consuming, the other is not. Each fsm will create three scenarios. We |
| * use a counter to verify if an event was consumed or not. |
| * |
| * @author Jean-Christian Kouame |
| */ |
| public class ConsumingFsmTest { |
| |
| private static final @NonNull String TEST_TRACE = "test_traces/testTrace5.xml"; |
| |
| ITmfTrace fTrace; |
| XmlPatternAnalysis fModule; |
| |
| /** |
| * Initializes the trace and the module for the tests |
| * |
| * @throws TmfAnalysisException |
| * Any exception thrown during module initialization |
| */ |
| @Before |
| public void setUp() throws TmfAnalysisException { |
| ITmfTrace trace = XmlUtilsTest.initializeTrace(TEST_TRACE); |
| @NonNull XmlPatternAnalysis module = XmlUtilsTest.initializePatternModule(TmfXmlTestFiles.CONSUMING_FSM_TEST); |
| |
| module.setTrace(trace); |
| |
| module.schedule(); |
| module.waitForCompletion(); |
| |
| fTrace = trace; |
| fModule = module; |
| } |
| |
| /** |
| * Dispose the module and the trace |
| */ |
| @After |
| public void cleanUp() { |
| fTrace.dispose(); |
| fModule.dispose(); |
| } |
| |
| /** |
| * Test the consuming fsm counter |
| * |
| * @throws StateSystemDisposedException |
| * Exceptions thrown during state system verification |
| * @throws AttributeNotFoundException |
| * Exceptions thrown during state system verification |
| */ |
| @Test |
| public void testConsumingFsm() throws AttributeNotFoundException, StateSystemDisposedException { |
| XmlPatternAnalysis module = fModule; |
| assertNotNull(module); |
| |
| ITmfStateSystem ss = module.getStateSystem(module.getId()); |
| assertNotNull(ss); |
| |
| int quark = ss.getQuarkAbsolute("consuming"); |
| |
| final int[] expectedStarts = { 1, 7, 7 }; |
| ITmfStateValue[] expectedValues = { TmfStateValue.nullValue(), TmfStateValue.newValueLong(1l)}; |
| XmlUtilsTest.verifyStateIntervals("testConsuming", ss, quark, expectedStarts, expectedValues); |
| |
| } |
| |
| /** |
| * Test the non consuming fsm counter |
| * |
| * @throws StateSystemDisposedException |
| * Exceptions thrown during state system verification |
| * @throws AttributeNotFoundException |
| * Exceptions thrown during state system verification |
| */ |
| @Test |
| public void testNonConsumingFsm() throws AttributeNotFoundException, StateSystemDisposedException { |
| XmlPatternAnalysis module = fModule; |
| assertNotNull(module); |
| |
| ITmfStateSystem ss = module.getStateSystem(module.getId()); |
| assertNotNull(ss); |
| |
| int quark = ss.getQuarkAbsolute("non_consuming"); |
| |
| final int[] expectedStarts = { 1, 7, 7 }; |
| ITmfStateValue[] expectedValues = { TmfStateValue.nullValue(), TmfStateValue.newValueLong(3l)}; |
| XmlUtilsTest.verifyStateIntervals("testNonConsuming", ss, quark, expectedStarts, expectedValues); |
| |
| } |
| } |
| |