ctf: Depend on the tracecompass-test-traces project
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.kernel.core.tests / src / org / eclipse / tracecompass / lttng2 / kernel / core / tests / event / matchandsync / ExperimentSyncTest.java
CommitLineData
e73a4ba5 1/*******************************************************************************
ed902a2b 2 * Copyright (c) 2013, 2014 École Polytechnique de Montréal
e73a4ba5
GB
3 *
4 * All rights reserved. This program and the accompanying materials are made
5 * available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Geneviève Bastien - Initial implementation
11 *******************************************************************************/
12
9bc60be7 13package org.eclipse.tracecompass.lttng2.kernel.core.tests.event.matchandsync;
e73a4ba5
GB
14
15import static org.junit.Assert.assertEquals;
e73a4ba5 16
8258d369
AM
17import java.util.concurrent.TimeUnit;
18
dc327459
GB
19import org.eclipse.tracecompass.internal.lttng2.kernel.core.event.matching.TcpEventMatching;
20import org.eclipse.tracecompass.internal.lttng2.kernel.core.event.matching.TcpLttngEventMatching;
c4d57ac1 21import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
2bdf0193
AM
22import org.eclipse.tracecompass.tmf.core.event.matching.TmfEventMatching;
23import org.eclipse.tracecompass.tmf.core.synchronization.ITmfTimestampTransform;
24import org.eclipse.tracecompass.tmf.core.synchronization.SynchronizationAlgorithm;
25import org.eclipse.tracecompass.tmf.core.synchronization.TimestampTransformFactory;
26import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
5c5fa260 27import org.eclipse.tracecompass.tmf.core.trace.experiment.TmfExperiment;
c4d57ac1 28import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils;
9722e5d7 29import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
58ba027e 30import org.junit.BeforeClass;
8258d369 31import org.junit.Rule;
e73a4ba5 32import org.junit.Test;
8258d369
AM
33import org.junit.rules.TestRule;
34import org.junit.rules.Timeout;
e73a4ba5
GB
35
36/**
37 * Tests for experiment syncing
38 *
39 * @author Geneviève Bastien
40 */
41@SuppressWarnings("nls")
42public class ExperimentSyncTest {
43
8258d369
AM
44 /** Timeout the tests after 2 minutes */
45 @Rule
46 public TestRule timeoutRule = new Timeout(2, TimeUnit.MINUTES);
47
ac29c59b
FG
48 private static final String EXPERIMENT = "MyExperiment";
49 private static int BLOCK_SIZE = 1000;
e73a4ba5
GB
50
51 /**
ac29c59b 52 * Initialize some data
e73a4ba5 53 */
58ba027e 54 @BeforeClass
ac29c59b 55 public static void setUp() {
e73a4ba5
GB
56 TmfEventMatching.registerMatchObject(new TcpEventMatching());
57 TmfEventMatching.registerMatchObject(new TcpLttngEventMatching());
58 }
59
e73a4ba5
GB
60 /**
61 * Testing experiment synchronization
62 */
63 @Test
64 public void testExperimentSync() {
c4d57ac1
AM
65 CtfTmfTrace trace1 = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.SYNC_SRC);
66 CtfTmfTrace trace2 = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.SYNC_DEST);
ac29c59b 67
0ff9e595
AM
68 ITmfTrace[] traces = { trace1, trace2 };
69 TmfExperiment experiment = new TmfExperiment(traces[0].getEventType(), EXPERIMENT, traces, BLOCK_SIZE, null);
e73a4ba5 70
0ff9e595 71 SynchronizationAlgorithm syncAlgo = experiment.synchronizeTraces(true);
e73a4ba5 72
0ff9e595
AM
73 ITmfTimestampTransform tt1 = syncAlgo.getTimestampTransform(trace1);
74 ITmfTimestampTransform tt2 = syncAlgo.getTimestampTransform(trace2);
e73a4ba5 75
0ff9e595
AM
76 trace1.setTimestampTransform(tt1);
77 trace2.setTimestampTransform(tt2);
e73a4ba5 78
0ff9e595
AM
79 assertEquals("TmfTimestampTransformLinearFast [ slope = 0.9999413783703139011056845831168394, offset = 79796507913179.33347660124688298171 ]", tt1.toString());
80 assertEquals(TimestampTransformFactory.getDefaultTransform(), tt2);
ac29c59b 81
0ff9e595
AM
82 assertEquals(syncAlgo.getTimestampTransform(trace1.getHostId()), trace1.getTimestampTransform());
83 assertEquals(syncAlgo.getTimestampTransform(trace2.getHostId()), trace2.getTimestampTransform());
ac29c59b 84
0ff9e595
AM
85 trace1.dispose();
86 trace2.dispose();
ac29c59b 87 }
e73a4ba5 88
ac29c59b
FG
89 /**
90 * Testing synchronization with 3 traces, one of which synchronizes with
91 * both other
92 */
93 @Test
94 public void testDjangoExperimentSync() {
c4d57ac1
AM
95 CtfTmfTrace trace1 = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.DJANGO_CLIENT);
96 CtfTmfTrace trace2 = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.DJANGO_DB);
97 CtfTmfTrace trace3 = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.DJANGO_HTTPD);
ac29c59b 98
0ff9e595
AM
99 ITmfTrace[] traces = { trace1, trace2, trace3 };
100 TmfExperiment experiment = new TmfExperiment(traces[0].getEventType(), EXPERIMENT, traces, BLOCK_SIZE, null);
ac29c59b 101
0ff9e595 102 SynchronizationAlgorithm syncAlgo = experiment.synchronizeTraces(true);
ac29c59b 103
0ff9e595
AM
104 ITmfTimestampTransform tt1 = syncAlgo.getTimestampTransform(trace1);
105 ITmfTimestampTransform tt2 = syncAlgo.getTimestampTransform(trace2);
106 ITmfTimestampTransform tt3 = syncAlgo.getTimestampTransform(trace3);
e73a4ba5 107
0ff9e595
AM
108 trace1.setTimestampTransform(tt1);
109 trace2.setTimestampTransform(tt2);
110 trace3.setTimestampTransform(tt3);
111
112 assertEquals(TimestampTransformFactory.getDefaultTransform(), tt1);
113 assertEquals("TmfTimestampTransformLinearFast [ slope = 0.9999996313017589597204633828681240, offset = 498490309972.0038068817738527724192 ]", tt2.toString());
114 assertEquals("TmfTimestampTransformLinearFast [ slope = 1.000000119014882262265342419815932, offset = -166652893534.6189900382736187431134 ]", tt3.toString());
115
116 trace1.dispose();
117 trace2.dispose();
118 trace3.dispose();
e73a4ba5
GB
119 }
120}
This page took 0.160933 seconds and 5 git commands to generate.