/******************************************************************************* * Copyright (c) 2013, 2014 École Polytechnique de Montréal * * All rights reserved. This program and the accompanying materials are made * available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Geneviève Bastien - Initial implementation *******************************************************************************/ package org.eclipse.tracecompass.lttng2.kernel.core.tests.event.matchandsync; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.LinkedList; import java.util.List; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.tracecompass.internal.lttng2.kernel.core.event.matching.TcpEventMatching; import org.eclipse.tracecompass.internal.lttng2.kernel.core.event.matching.TcpLttngEventMatching; import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace; import org.eclipse.tracecompass.tmf.core.event.matching.IMatchProcessingUnit; import org.eclipse.tracecompass.tmf.core.event.matching.TmfEventMatching; import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils; import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace; import org.junit.Test; /** * Tests for {@link TcpEventMatching} * * @author Geneviève Bastien */ @SuppressWarnings("nls") public class MatchAndSyncTest { /** * Testing the packet matching */ @Test public void testMatching() { CtfTmfTrace trace1 = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.SYNC_SRC); CtfTmfTrace trace2 = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.SYNC_DEST); List<@NonNull ITmfTrace> tracearr = new LinkedList<>(); tracearr.add(trace1); tracearr.add(trace2); TmfEventMatching.registerMatchObject(new TcpEventMatching()); TmfEventMatching.registerMatchObject(new TcpLttngEventMatching()); TmfEventMatching twoTraceMatch = new TmfEventMatching(tracearr); assertTrue(twoTraceMatch.matchEvents()); /* Set method and fields accessible to make sure the counts are ok */ try { /* Verify number of matches */ Method method = TmfEventMatching.class.getDeclaredMethod("getProcessingUnit"); method.setAccessible(true); IMatchProcessingUnit procUnit = (IMatchProcessingUnit) method.invoke(twoTraceMatch); assertEquals(46, procUnit.countMatches()); } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { fail(e.getMessage()); } finally { trace1.dispose(); trace2.dispose(); } } }