1 /**********************************************************************
2 * Copyright (c) 2012, 2015 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made 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
10 * Bernd Hufmann - Initial API and implementation
11 * Alexandre Montplaisir - Port to JUnit4
12 * Markus Schorn - Bug 448058: Use org.eclipse.remote in favor of RSE
13 **********************************************************************/
15 package org
.eclipse
.tracecompass
.lttng2
.control
.ui
.tests
.model
.component
;
17 import static org
.junit
.Assert
.assertEquals
;
18 import static org
.junit
.Assert
.assertFalse
;
19 import static org
.junit
.Assert
.assertNotNull
;
20 import static org
.junit
.Assert
.assertNull
;
21 import static org
.junit
.Assert
.assertTrue
;
26 import org
.eclipse
.core
.runtime
.FileLocator
;
27 import org
.eclipse
.core
.runtime
.Path
;
28 import org
.eclipse
.remote
.core
.IRemoteConnection
;
29 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.IChannelInfo
;
30 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TargetNodeState
;
31 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceEnablement
;
32 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceEventType
;
33 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceLogLevel
;
34 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceSessionState
;
35 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.impl
.BufferType
;
36 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.stubs
.service
.TestRemoteSystemProxy
;
37 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.ITraceControlComponent
;
38 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.BaseEventComponent
;
39 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.KernelProviderComponent
;
40 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TargetNodeComponent
;
41 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceChannelComponent
;
42 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceDomainComponent
;
43 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceEventComponent
;
44 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceProbeEventComponent
;
45 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceSessionComponent
;
46 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.UstProviderComponent
;
47 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.property
.BaseEventPropertySource
;
48 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.property
.KernelProviderPropertySource
;
49 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.property
.TargetNodePropertySource
;
50 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.property
.TraceChannelPropertySource
;
51 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.property
.TraceDomainPropertySource
;
52 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.property
.TraceEventPropertySource
;
53 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.property
.TraceProbeEventPropertySource
;
54 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.property
.TraceSessionPropertySource
;
55 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.property
.UstProviderPropertySource
;
56 import org
.eclipse
.tracecompass
.tmf
.remote
.core
.proxy
.RemoteSystemProxy
;
57 import org
.eclipse
.ui
.views
.properties
.IPropertySource
;
58 import org
.junit
.After
;
59 import org
.junit
.Test
;
60 import org
.osgi
.framework
.FrameworkUtil
;
63 * The class <code>TraceControlPropertiesTest</code> contains tests for the all
64 * property class</code>.
66 public class TraceControlPropertiesTest
{
68 // ------------------------------------------------------------------------
70 // ------------------------------------------------------------------------
72 private static final String DIRECTORY
= "testfiles";
73 private static final String TEST_STREAM
= "ListInfoTest.cfg";
74 private static final String SCEN_LIST_INFO_TEST
= "ListInfoTest";
76 // ------------------------------------------------------------------------
78 // ------------------------------------------------------------------------
81 * Perform post-test clean-up.
84 public void tearDown() {
85 TraceControlTestFacility
.getInstance().waitForJobs();
89 * Run the TraceControlComponent.
92 * This will fail the test
95 public void testComponentProperties() throws Exception
{
97 TestRemoteSystemProxy proxy
= new TestRemoteSystemProxy();
99 URL location
= FileLocator
.find(FrameworkUtil
.getBundle(this.getClass()), new Path(DIRECTORY
+ File
.separator
+ TEST_STREAM
), null);
100 File testfile
= new File(FileLocator
.toFileURL(location
).toURI());
101 proxy
.setTestFile(testfile
.getAbsolutePath());
102 proxy
.setScenario(SCEN_LIST_INFO_TEST
);
104 ITraceControlComponent root
= TraceControlTestFacility
.getInstance().getControlView().getTraceControlRoot();
106 IRemoteConnection host
= RemoteSystemProxy
.getLocalConnection();
107 TargetNodeComponent node
= new TargetNodeComponent("myNode", root
, host
, proxy
);
112 TraceControlTestFacility
.getInstance().waitForConnect(node
);
113 TraceControlTestFacility
.getInstance().waitForJobs();
115 // ------------------------------------------------------------------------
116 // Verify Node Properties (adapter)
117 // ------------------------------------------------------------------------
118 Object adapter
= node
.getAdapter(IPropertySource
.class);
119 assertNotNull(adapter
);
120 assertTrue(adapter
instanceof TargetNodePropertySource
);
122 TargetNodePropertySource source
= (TargetNodePropertySource
)adapter
;
124 assertNull(source
.getEditableValue());
125 assertFalse(source
.isPropertySet(TargetNodePropertySource
.TARGET_NODE_NAME_PROPERTY_ID
));
126 assertNotNull(source
.getPropertyDescriptors());
128 assertEquals("myNode", source
.getPropertyValue(TargetNodePropertySource
.TARGET_NODE_NAME_PROPERTY_ID
));
129 assertEquals("localhost", source
.getPropertyValue(TargetNodePropertySource
.TARGET_NODE_ADDRESS_PROPERTY_ID
));
130 assertEquals(TargetNodeState
.CONNECTED
.name(), source
.getPropertyValue(TargetNodePropertySource
.TARGET_NODE_STATE_PROPERTY_ID
));
131 assertEquals("2.1.0", source
.getPropertyValue(TargetNodePropertySource
.TARGET_NODE_VERSION_PROPERTY_ID
));
132 assertNull(source
.getPropertyValue("test"));
134 adapter
= node
.getAdapter(IChannelInfo
.class);
137 ITraceControlComponent
[] groups
= node
.getChildren();
138 assertNotNull(groups
);
139 assertEquals(2, groups
.length
);
141 ITraceControlComponent
[] providers
= groups
[0].getChildren();
143 assertNotNull(providers
);
144 assertEquals(3, providers
.length
);
146 // ------------------------------------------------------------------------
147 // Verify Kernel Provider Properties (adapter)
148 // ------------------------------------------------------------------------
149 KernelProviderComponent kernelProvider
= (KernelProviderComponent
) providers
[0];
151 adapter
= kernelProvider
.getAdapter(IPropertySource
.class);
152 assertNotNull(adapter
);
153 assertTrue(adapter
instanceof KernelProviderPropertySource
);
155 KernelProviderPropertySource kernelSource
= (KernelProviderPropertySource
)adapter
;
156 assertNotNull(kernelSource
.getPropertyDescriptors());
158 assertEquals("Kernel", kernelSource
.getPropertyValue(KernelProviderPropertySource
.KERNEL_PROVIDER_NAME_PROPERTY_ID
));
160 // ------------------------------------------------------------------------
161 // Verify UST Provider Properties (adapter)
162 // ------------------------------------------------------------------------
163 UstProviderComponent ustProvider
= (UstProviderComponent
) providers
[1];
165 adapter
= ustProvider
.getAdapter(IPropertySource
.class);
166 assertNotNull(adapter
);
167 assertTrue(adapter
instanceof UstProviderPropertySource
);
169 UstProviderPropertySource ustSource
= (UstProviderPropertySource
)adapter
;
170 assertNotNull(ustSource
.getPropertyDescriptors());
172 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello [PID=9379]", ustSource
.getPropertyValue(UstProviderPropertySource
.UST_PROVIDER_NAME_PROPERTY_ID
));
173 assertEquals(String
.valueOf(9379), ustSource
.getPropertyValue(UstProviderPropertySource
.UST_PROVIDER_PID_PROPERTY_ID
));
175 // ------------------------------------------------------------------------
176 // Verify Base Event Properties (adapter)
177 // ------------------------------------------------------------------------
178 ITraceControlComponent
[] events
= ustProvider
.getChildren();
179 assertNotNull(events
);
180 assertEquals(2, events
.length
);
182 BaseEventComponent baseEventInfo
= (BaseEventComponent
) events
[0];
183 assertNotNull(baseEventInfo
);
185 adapter
= baseEventInfo
.getAdapter(IPropertySource
.class);
186 assertNotNull(adapter
);
187 assertTrue(adapter
instanceof BaseEventPropertySource
);
189 BaseEventPropertySource baseSource
= (BaseEventPropertySource
)adapter
;
190 assertNotNull(baseSource
.getPropertyDescriptors());
192 assertEquals("ust_tests_hello:tptest_sighandler", baseSource
.getPropertyValue(BaseEventPropertySource
.BASE_EVENT_NAME_PROPERTY_ID
));
193 assertEquals(TraceEventType
.TRACEPOINT
.name(), baseSource
.getPropertyValue(BaseEventPropertySource
.BASE_EVENT_TYPE_PROPERTY_ID
));
194 assertEquals(TraceLogLevel
.TRACE_DEBUG_MODULE
.name(), baseSource
.getPropertyValue(BaseEventPropertySource
.BASE_EVENT_LOGLEVEL_PROPERTY_ID
));
196 baseEventInfo
= (BaseEventComponent
) events
[1];
197 assertNotNull(baseEventInfo
);
199 adapter
= baseEventInfo
.getAdapter(IPropertySource
.class);
200 assertNotNull(adapter
);
201 assertTrue(adapter
instanceof BaseEventPropertySource
);
202 baseSource
= (BaseEventPropertySource
)adapter
;
203 assertNotNull(baseSource
.getPropertyDescriptors());
204 assertEquals("doublefield=float;floatfield=float;stringfield=string", baseSource
.getPropertyValue(BaseEventPropertySource
.BASE_EVENT_FIELDS_PROPERTY_ID
));
206 // ------------------------------------------------------------------------
207 // Verify Session Properties (adapter)
208 // ------------------------------------------------------------------------
209 ITraceControlComponent
[] sessions
= groups
[1].getChildren();
210 assertNotNull(sessions
);
211 assertEquals(2, sessions
.length
);
213 TraceSessionComponent session
= (TraceSessionComponent
)sessions
[1];
215 adapter
= session
.getAdapter(IPropertySource
.class);
216 assertNotNull(adapter
);
217 assertTrue(adapter
instanceof TraceSessionPropertySource
);
219 TraceSessionPropertySource sessionSource
= (TraceSessionPropertySource
)adapter
;
220 assertNotNull(sessionSource
.getPropertyDescriptors());
222 assertEquals("mysession", sessionSource
.getPropertyValue(TraceSessionPropertySource
.TRACE_SESSION_NAME_PROPERTY_ID
));
223 assertEquals("/home/user/lttng-traces/mysession-20120129-084256", sessionSource
.getPropertyValue(TraceSessionPropertySource
.TRACE_SESSION_PATH_PROPERTY_ID
));
224 assertEquals(TraceSessionState
.ACTIVE
.name(), sessionSource
.getPropertyValue(TraceSessionPropertySource
.TRACE_SESSION_STATE_PROPERTY_ID
));
226 // ------------------------------------------------------------------------
227 // Verify Domain Provider Properties (adapter)
228 // ------------------------------------------------------------------------
229 ITraceControlComponent
[] domains
= session
.getChildren();
230 assertNotNull(domains
);
231 assertEquals(2, domains
.length
);
233 TraceDomainComponent domain
= (TraceDomainComponent
) domains
[0];
234 adapter
= domain
.getAdapter(IPropertySource
.class);
235 assertNotNull(adapter
);
236 assertTrue(adapter
instanceof TraceDomainPropertySource
);
238 TraceDomainPropertySource domainSource
= (TraceDomainPropertySource
)adapter
;
239 assertNotNull(domainSource
.getPropertyDescriptors());
241 assertEquals("Kernel", domainSource
.getPropertyValue(TraceDomainPropertySource
.TRACE_DOMAIN_NAME_PROPERTY_ID
));
242 assertEquals(BufferType
.BUFFER_SHARED
.getInName(), domainSource
.getPropertyValue(TraceDomainPropertySource
.BUFFER_TYPE_PROPERTY_ID
));
244 ITraceControlComponent
[] channels
= domains
[0].getChildren();
245 assertNotNull(channels
);
246 assertEquals(2, channels
.length
);
248 // ------------------------------------------------------------------------
249 // Verify Channel Properties (adapter)
250 // ------------------------------------------------------------------------
251 assertTrue(channels
[0] instanceof TraceChannelComponent
);
252 TraceChannelComponent channel
= (TraceChannelComponent
) channels
[0];
254 adapter
= channel
.getAdapter(IPropertySource
.class);
255 assertNotNull(adapter
);
256 assertTrue(adapter
instanceof TraceChannelPropertySource
);
258 TraceChannelPropertySource channelSource
= (TraceChannelPropertySource
)adapter
;
259 assertNotNull(channelSource
.getPropertyDescriptors());
261 assertEquals("channel0", channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_NAME_PROPERTY_ID
));
262 assertEquals(String
.valueOf(4), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_NO_SUBBUFFERS_PROPERTY_ID
));
263 assertEquals(TraceEnablement
.ENABLED
.name(), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_STATE_PROPERTY_ID
));
264 assertEquals(String
.valueOf(false), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_OVERWRITE_MODE_PROPERTY_ID
));
265 assertEquals("splice()", channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_OUTPUT_TYPE_PROPERTY_ID
));
266 assertEquals(String
.valueOf(200), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_READ_TIMER_PROPERTY_ID
));
267 assertEquals(String
.valueOf(262144), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_SUBBUFFER_SIZE_PROPERTY_ID
));
268 assertEquals(String
.valueOf(0), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_SWITCH_TIMER_PROPERTY_ID
));
270 // ------------------------------------------------------------------------
271 // Verify Event Properties (adapter)
272 // ------------------------------------------------------------------------
273 ITraceControlComponent
[] channel0Events
= channel
.getChildren();
274 assertNotNull(channel0Events
);
275 assertEquals(5, channel0Events
.length
);
276 assertTrue(channel0Events
[0] instanceof TraceEventComponent
);
278 TraceEventComponent event
= (TraceEventComponent
) channel0Events
[0];
280 adapter
= event
.getAdapter(IPropertySource
.class);
281 assertNotNull(adapter
);
282 assertTrue(adapter
instanceof TraceEventPropertySource
);
284 TraceEventPropertySource eventSource
= (TraceEventPropertySource
)adapter
;
285 assertNotNull(eventSource
.getPropertyDescriptors());
287 assertEquals("block_rq_remap", eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_NAME_PROPERTY_ID
));
288 assertEquals(TraceLogLevel
.TRACE_EMERG
.name(), eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_LOGLEVEL_PROPERTY_ID
));
289 assertEquals(TraceEventType
.TRACEPOINT
.name(), eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_TYPE_PROPERTY_ID
));
290 assertEquals(TraceEnablement
.ENABLED
.name(), eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_STATE_PROPERTY_ID
));
292 // ------------------------------------------------------------------------
293 // Verify Probe Event Properties (adapter)
294 // ------------------------------------------------------------------------
295 assertTrue(channel0Events
[2] instanceof TraceProbeEventComponent
);
297 TraceProbeEventComponent probeEvent
= (TraceProbeEventComponent
) channel0Events
[2];
299 adapter
= probeEvent
.getAdapter(IPropertySource
.class);
300 assertNotNull(adapter
);
301 assertTrue(adapter
instanceof TraceProbeEventPropertySource
);
303 TraceProbeEventPropertySource probeEventSource
= (TraceProbeEventPropertySource
)adapter
;
304 assertNotNull(probeEventSource
.getPropertyDescriptors());
305 assertEquals(4, probeEventSource
.getPropertyDescriptors().length
);
307 assertEquals("myevent2", probeEventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_NAME_PROPERTY_ID
));
308 assertEquals(TraceEventType
.PROBE
.name(), probeEventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_TYPE_PROPERTY_ID
));
309 assertEquals(TraceEnablement
.ENABLED
.name(), probeEventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_STATE_PROPERTY_ID
));
310 assertEquals("0xc0101340", probeEventSource
.getPropertyValue(TraceProbeEventPropertySource
.TRACE_EVENT_PROBE_ADDRESS_PROPERTY_ID
));
312 assertTrue(channel0Events
[3] instanceof TraceProbeEventComponent
);
314 probeEvent
= (TraceProbeEventComponent
) channel0Events
[3];
316 adapter
= probeEvent
.getAdapter(IPropertySource
.class);
317 assertNotNull(adapter
);
318 assertTrue(adapter
instanceof TraceProbeEventPropertySource
);
320 probeEventSource
= (TraceProbeEventPropertySource
)adapter
;
321 assertNotNull(probeEventSource
.getPropertyDescriptors());
322 assertEquals(5, probeEventSource
.getPropertyDescriptors().length
);
324 assertEquals("myevent0", probeEventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_NAME_PROPERTY_ID
));
325 assertEquals(TraceEventType
.PROBE
.name(), probeEventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_TYPE_PROPERTY_ID
));
326 assertEquals(TraceEnablement
.ENABLED
.name(), probeEventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_STATE_PROPERTY_ID
));
327 assertEquals("0x0", probeEventSource
.getPropertyValue(TraceProbeEventPropertySource
.TRACE_EVENT_PROBE_OFFSET_PROPERTY_ID
));
328 assertEquals("init_post", probeEventSource
.getPropertyValue(TraceProbeEventPropertySource
.TRACE_EVENT_PROBE_SYMBOL_PROPERTY_ID
));
330 //-------------------------------------------------------------------------
331 // Verify Filter of UST event
332 //-------------------------------------------------------------------------
333 event
= (TraceEventComponent
) domains
[1].getChildren()[1].getChildren()[0];
334 adapter
= event
.getAdapter(IPropertySource
.class);
335 assertEquals("with filter", event
.getFilterExpression());
337 //-------------------------------------------------------------------------
338 // Verify Log Level Type of UST events (> LTTng 2.4)
339 //-------------------------------------------------------------------------
340 event
= (TraceEventComponent
) domains
[1].getChildren()[1].getChildren()[0];
341 adapter
= event
.getAdapter(IPropertySource
.class);
342 eventSource
= (TraceEventPropertySource
) adapter
;
343 assertEquals("== TRACE_DEBUG_LINE", eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_LOGLEVEL_PROPERTY_ID
));
345 event
= (TraceEventComponent
) domains
[1].getChildren()[1].getChildren()[1];
346 adapter
= event
.getAdapter(IPropertySource
.class);
347 eventSource
= (TraceEventPropertySource
) adapter
;
348 assertEquals("<= TRACE_INFO", eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_LOGLEVEL_PROPERTY_ID
));
350 event
= (TraceEventComponent
) domains
[1].getChildren()[1].getChildren()[2];
351 adapter
= event
.getAdapter(IPropertySource
.class);
352 eventSource
= (TraceEventPropertySource
) adapter
;
353 assertEquals("TRACE_DEBUG_SYSTEM", eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_LOGLEVEL_PROPERTY_ID
));
355 //-------------------------------------------------------------------------
357 //-------------------------------------------------------------------------
359 node
.getParent().removeChild(node
);