tmf: Bug 460842: Introduce tmf remote plug-ins and feature
[deliverable/tracecompass.git] / org.eclipse.tracecompass.lttng2.control.ui.tests / src / org / eclipse / tracecompass / lttng2 / control / ui / tests / model / component / TraceControlPropertiesTest.java
1 /**********************************************************************
2 * Copyright (c) 2012, 2015 Ericsson
3 *
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
8 *
9 * Contributors:
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 **********************************************************************/
14
15 package org.eclipse.tracecompass.lttng2.control.ui.tests.model.component;
16
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;
22
23 import java.io.File;
24 import java.net.URL;
25
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;
61
62 /**
63 * The class <code>TraceControlPropertiesTest</code> contains tests for the all
64 * property class</code>.
65 */
66 public class TraceControlPropertiesTest {
67
68 // ------------------------------------------------------------------------
69 // Constants
70 // ------------------------------------------------------------------------
71
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";
75
76 // ------------------------------------------------------------------------
77 // Housekeeping
78 // ------------------------------------------------------------------------
79
80 /**
81 * Perform post-test clean-up.
82 */
83 @After
84 public void tearDown() {
85 TraceControlTestFacility.getInstance().waitForJobs();
86 }
87
88 /**
89 * Run the TraceControlComponent.
90 *
91 * @throws Exception
92 * This will fail the test
93 */
94 @Test
95 public void testComponentProperties() throws Exception {
96
97 TestRemoteSystemProxy proxy = new TestRemoteSystemProxy();
98
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);
103
104 ITraceControlComponent root = TraceControlTestFacility.getInstance().getControlView().getTraceControlRoot();
105
106 IRemoteConnection host = RemoteSystemProxy.getLocalConnection();
107 TargetNodeComponent node = new TargetNodeComponent("myNode", root, host, proxy);
108
109 root.addChild(node);
110 node.connect();
111
112 TraceControlTestFacility.getInstance().waitForConnect(node);
113 TraceControlTestFacility.getInstance().waitForJobs();
114
115 // ------------------------------------------------------------------------
116 // Verify Node Properties (adapter)
117 // ------------------------------------------------------------------------
118 Object adapter = node.getAdapter(IPropertySource.class);
119 assertNotNull(adapter);
120 assertTrue(adapter instanceof TargetNodePropertySource);
121
122 TargetNodePropertySource source = (TargetNodePropertySource)adapter;
123
124 assertNull(source.getEditableValue());
125 assertFalse(source.isPropertySet(TargetNodePropertySource.TARGET_NODE_NAME_PROPERTY_ID));
126 assertNotNull(source.getPropertyDescriptors());
127
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"));
133
134 adapter = node.getAdapter(IChannelInfo.class);
135 assertNull(adapter);
136
137 ITraceControlComponent[] groups = node.getChildren();
138 assertNotNull(groups);
139 assertEquals(2, groups.length);
140
141 ITraceControlComponent[] providers = groups[0].getChildren();
142
143 assertNotNull(providers);
144 assertEquals(3, providers.length);
145
146 // ------------------------------------------------------------------------
147 // Verify Kernel Provider Properties (adapter)
148 // ------------------------------------------------------------------------
149 KernelProviderComponent kernelProvider = (KernelProviderComponent) providers[0];
150
151 adapter = kernelProvider.getAdapter(IPropertySource.class);
152 assertNotNull(adapter);
153 assertTrue(adapter instanceof KernelProviderPropertySource);
154
155 KernelProviderPropertySource kernelSource = (KernelProviderPropertySource)adapter;
156 assertNotNull(kernelSource.getPropertyDescriptors());
157
158 assertEquals("Kernel", kernelSource.getPropertyValue(KernelProviderPropertySource.KERNEL_PROVIDER_NAME_PROPERTY_ID));
159
160 // ------------------------------------------------------------------------
161 // Verify UST Provider Properties (adapter)
162 // ------------------------------------------------------------------------
163 UstProviderComponent ustProvider = (UstProviderComponent) providers[1];
164
165 adapter = ustProvider.getAdapter(IPropertySource.class);
166 assertNotNull(adapter);
167 assertTrue(adapter instanceof UstProviderPropertySource);
168
169 UstProviderPropertySource ustSource = (UstProviderPropertySource)adapter;
170 assertNotNull(ustSource.getPropertyDescriptors());
171
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));
174
175 // ------------------------------------------------------------------------
176 // Verify Base Event Properties (adapter)
177 // ------------------------------------------------------------------------
178 ITraceControlComponent[] events = ustProvider.getChildren();
179 assertNotNull(events);
180 assertEquals(2, events.length);
181
182 BaseEventComponent baseEventInfo = (BaseEventComponent) events[0];
183 assertNotNull(baseEventInfo);
184
185 adapter = baseEventInfo.getAdapter(IPropertySource.class);
186 assertNotNull(adapter);
187 assertTrue(adapter instanceof BaseEventPropertySource);
188
189 BaseEventPropertySource baseSource = (BaseEventPropertySource)adapter;
190 assertNotNull(baseSource.getPropertyDescriptors());
191
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));
195
196 baseEventInfo = (BaseEventComponent) events[1];
197 assertNotNull(baseEventInfo);
198
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));
205
206 // ------------------------------------------------------------------------
207 // Verify Session Properties (adapter)
208 // ------------------------------------------------------------------------
209 ITraceControlComponent[] sessions = groups[1].getChildren();
210 assertNotNull(sessions);
211 assertEquals(2, sessions.length);
212
213 TraceSessionComponent session = (TraceSessionComponent)sessions[1];
214
215 adapter = session.getAdapter(IPropertySource.class);
216 assertNotNull(adapter);
217 assertTrue(adapter instanceof TraceSessionPropertySource);
218
219 TraceSessionPropertySource sessionSource = (TraceSessionPropertySource)adapter;
220 assertNotNull(sessionSource.getPropertyDescriptors());
221
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));
225
226 // ------------------------------------------------------------------------
227 // Verify Domain Provider Properties (adapter)
228 // ------------------------------------------------------------------------
229 ITraceControlComponent[] domains = session.getChildren();
230 assertNotNull(domains);
231 assertEquals(2, domains.length);
232
233 TraceDomainComponent domain = (TraceDomainComponent) domains[0];
234 adapter = domain.getAdapter(IPropertySource.class);
235 assertNotNull(adapter);
236 assertTrue(adapter instanceof TraceDomainPropertySource);
237
238 TraceDomainPropertySource domainSource = (TraceDomainPropertySource)adapter;
239 assertNotNull(domainSource.getPropertyDescriptors());
240
241 assertEquals("Kernel", domainSource.getPropertyValue(TraceDomainPropertySource.TRACE_DOMAIN_NAME_PROPERTY_ID));
242 assertEquals(BufferType.BUFFER_SHARED.getInName(), domainSource.getPropertyValue(TraceDomainPropertySource.BUFFER_TYPE_PROPERTY_ID));
243
244 ITraceControlComponent[] channels = domains[0].getChildren();
245 assertNotNull(channels);
246 assertEquals(2, channels.length);
247
248 // ------------------------------------------------------------------------
249 // Verify Channel Properties (adapter)
250 // ------------------------------------------------------------------------
251 assertTrue(channels[0] instanceof TraceChannelComponent);
252 TraceChannelComponent channel = (TraceChannelComponent) channels[0];
253
254 adapter = channel.getAdapter(IPropertySource.class);
255 assertNotNull(adapter);
256 assertTrue(adapter instanceof TraceChannelPropertySource);
257
258 TraceChannelPropertySource channelSource = (TraceChannelPropertySource)adapter;
259 assertNotNull(channelSource.getPropertyDescriptors());
260
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));
269
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);
277
278 TraceEventComponent event = (TraceEventComponent) channel0Events[0];
279
280 adapter = event.getAdapter(IPropertySource.class);
281 assertNotNull(adapter);
282 assertTrue(adapter instanceof TraceEventPropertySource);
283
284 TraceEventPropertySource eventSource = (TraceEventPropertySource)adapter;
285 assertNotNull(eventSource.getPropertyDescriptors());
286
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));
291
292 // ------------------------------------------------------------------------
293 // Verify Probe Event Properties (adapter)
294 // ------------------------------------------------------------------------
295 assertTrue(channel0Events[2] instanceof TraceProbeEventComponent);
296
297 TraceProbeEventComponent probeEvent = (TraceProbeEventComponent) channel0Events[2];
298
299 adapter = probeEvent.getAdapter(IPropertySource.class);
300 assertNotNull(adapter);
301 assertTrue(adapter instanceof TraceProbeEventPropertySource);
302
303 TraceProbeEventPropertySource probeEventSource = (TraceProbeEventPropertySource)adapter;
304 assertNotNull(probeEventSource.getPropertyDescriptors());
305 assertEquals(4, probeEventSource.getPropertyDescriptors().length);
306
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));
311
312 assertTrue(channel0Events[3] instanceof TraceProbeEventComponent);
313
314 probeEvent = (TraceProbeEventComponent) channel0Events[3];
315
316 adapter = probeEvent.getAdapter(IPropertySource.class);
317 assertNotNull(adapter);
318 assertTrue(adapter instanceof TraceProbeEventPropertySource);
319
320 probeEventSource = (TraceProbeEventPropertySource)adapter;
321 assertNotNull(probeEventSource.getPropertyDescriptors());
322 assertEquals(5, probeEventSource.getPropertyDescriptors().length);
323
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));
329
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());
336
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));
344
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));
349
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));
354
355 //-------------------------------------------------------------------------
356 // Delete node
357 //-------------------------------------------------------------------------
358 node.disconnect();
359 node.getParent().removeChild(node);
360 }
361 }
This page took 0.042721 seconds and 5 git commands to generate.