1 /**********************************************************************
2 * Copyright (c) 2012 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 **********************************************************************/
12 package org
.eclipse
.linuxtools
.lttng2
.ui
.tests
.control
.model
.component
;
17 import junit
.framework
.Test
;
18 import junit
.framework
.TestCase
;
19 import junit
.framework
.TestSuite
;
21 import org
.eclipse
.core
.runtime
.FileLocator
;
22 import org
.eclipse
.core
.runtime
.Path
;
23 import org
.eclipse
.linuxtools
.internal
.lttng2
.stubs
.service
.TestRemoteSystemProxy
;
24 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.IChannelInfo
;
25 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.ITraceControlComponent
;
26 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.TargetNodeState
;
27 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.TraceEnablement
;
28 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.TraceEventType
;
29 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.TraceLogLevel
;
30 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.TraceSessionState
;
31 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.BaseEventComponent
;
32 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.KernelProviderComponent
;
33 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.TargetNodeComponent
;
34 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.TraceChannelComponent
;
35 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.TraceDomainComponent
;
36 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.TraceEventComponent
;
37 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.TraceProbeEventComponent
;
38 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.TraceSessionComponent
;
39 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.UstProviderComponent
;
40 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.property
.BaseEventPropertySource
;
41 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.property
.KernelProviderPropertySource
;
42 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.property
.TargetNodePropertySource
;
43 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.property
.TraceChannelPropertySource
;
44 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.property
.TraceDomainPropertySource
;
45 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.property
.TraceEventPropertySource
;
46 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.property
.TraceProbeEventPropertySource
;
47 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.property
.TraceSessionPropertySource
;
48 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.property
.UstProviderPropertySource
;
49 import org
.eclipse
.rse
.core
.RSECorePlugin
;
50 import org
.eclipse
.rse
.core
.model
.IHost
;
51 import org
.eclipse
.rse
.core
.model
.ISystemProfile
;
52 import org
.eclipse
.rse
.core
.model
.ISystemRegistry
;
53 import org
.eclipse
.ui
.views
.properties
.IPropertySource
;
54 import org
.junit
.After
;
55 import org
.junit
.Before
;
56 import org
.osgi
.framework
.FrameworkUtil
;
60 * The class <code>TraceControlPropertiesTest</code> contains tests for the all property class</code>.
63 @SuppressWarnings("nls")
64 public class TraceControlPropertiesTest
extends TestCase
{
66 // ------------------------------------------------------------------------
68 // ------------------------------------------------------------------------
69 private static final String DIRECTORY
= "testfiles";
70 private static final String TEST_STREAM
= "ListInfoTest.cfg";
71 private static final String SCEN_LIST_INFO_TEST
= "ListInfoTest";
74 // ------------------------------------------------------------------------
76 // ------------------------------------------------------------------------
78 // ------------------------------------------------------------------------
80 // ------------------------------------------------------------------------
83 * Returns test setup used when executing test case stand-alone.
84 * @return Test setup class
86 public static Test
suite() {
87 return new ModelImplTestSetup(new TestSuite(TraceControlPropertiesTest
.class));
90 // ------------------------------------------------------------------------
92 // ------------------------------------------------------------------------
95 * Perform pre-test initialization.
98 * if the initialization fails for some reason
103 public void setUp() throws Exception
{
107 * Perform post-test clean-up.
110 * if the clean-up fails for some reason
115 public void tearDown() throws Exception
{
116 TraceControlTestFacility
.getInstance().waitForJobs();
120 * Run the TraceControlComponent.
122 public void testComponentProperties() throws Exception
{
124 TestRemoteSystemProxy proxy
= new TestRemoteSystemProxy();
126 URL location
= FileLocator
.find(FrameworkUtil
.getBundle(this.getClass()), new Path(DIRECTORY
+ File
.separator
+ TEST_STREAM
), null);
127 File testfile
= new File(FileLocator
.toFileURL(location
).toURI());
128 proxy
.setTestFile(testfile
.getAbsolutePath());
129 proxy
.setScenario(SCEN_LIST_INFO_TEST
);
131 ITraceControlComponent root
= TraceControlTestFacility
.getInstance().getControlView().getTraceControlRoot();
133 ISystemRegistry registry
= RSECorePlugin
.getTheSystemRegistry();
134 ISystemProfile profile
= registry
.createSystemProfile("myProfile", true);
135 IHost host
= registry
.createLocalHost(profile
, "myProfile", "user");
137 TargetNodeComponent node
= new TargetNodeComponent("myNode", root
, host
, proxy
);
142 TraceControlTestFacility
.getInstance().waitForJobs();
144 // ------------------------------------------------------------------------
145 // Verify Node Properties (adapter)
146 // ------------------------------------------------------------------------
147 Object adapter
= node
.getAdapter(IPropertySource
.class);
148 assertNotNull(adapter
);
149 assertTrue(adapter
instanceof TargetNodePropertySource
);
151 TargetNodePropertySource source
= (TargetNodePropertySource
)adapter
;
153 assertNull(source
.getEditableValue());
154 assertFalse(source
.isPropertySet(TargetNodePropertySource
.TARGET_NODE_NAME_PROPERTY_ID
));
155 assertNotNull(source
.getPropertyDescriptors());
157 assertEquals("myNode", source
.getPropertyValue(TargetNodePropertySource
.TARGET_NODE_NAME_PROPERTY_ID
));
158 assertEquals("LOCALHOST", source
.getPropertyValue(TargetNodePropertySource
.TARGET_NODE_ADDRESS_PROPERTY_ID
));
159 assertEquals(TargetNodeState
.CONNECTED
.name(), source
.getPropertyValue(TargetNodePropertySource
.TARGET_NODE_STATE_PROPERTY_ID
));
160 assertNull(source
.getPropertyValue("test"));
162 adapter
= node
.getAdapter(IChannelInfo
.class);
165 ITraceControlComponent
[] groups
= node
.getChildren();
166 assertNotNull(groups
);
167 assertEquals(2, groups
.length
);
169 ITraceControlComponent
[] providers
= groups
[0].getChildren();
171 assertNotNull(providers
);
172 assertEquals(3, providers
.length
);
174 // ------------------------------------------------------------------------
175 // Verify Kernel Provider Properties (adapter)
176 // ------------------------------------------------------------------------
177 KernelProviderComponent kernelProvider
= (KernelProviderComponent
) providers
[0];
179 adapter
= kernelProvider
.getAdapter(IPropertySource
.class);
180 assertNotNull(adapter
);
181 assertTrue(adapter
instanceof KernelProviderPropertySource
);
183 KernelProviderPropertySource kernelSource
= (KernelProviderPropertySource
)adapter
;
184 assertNotNull(kernelSource
.getPropertyDescriptors());
186 assertEquals("Kernel", kernelSource
.getPropertyValue(KernelProviderPropertySource
.KERNEL_PROVIDER_NAME_PROPERTY_ID
));
188 // ------------------------------------------------------------------------
189 // Verify UST Provider Properties (adapter)
190 // ------------------------------------------------------------------------
191 UstProviderComponent ustProvider
= (UstProviderComponent
) providers
[1];
193 adapter
= ustProvider
.getAdapter(IPropertySource
.class);
194 assertNotNull(adapter
);
195 assertTrue(adapter
instanceof UstProviderPropertySource
);
197 UstProviderPropertySource ustSource
= (UstProviderPropertySource
)adapter
;
198 assertNotNull(ustSource
.getPropertyDescriptors());
200 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", ustSource
.getPropertyValue(UstProviderPropertySource
.UST_PROVIDER_NAME_PROPERTY_ID
));
201 assertEquals(String
.valueOf(9379), ustSource
.getPropertyValue(UstProviderPropertySource
.UST_PROVIDER_PID_PROPERTY_ID
));
203 // ------------------------------------------------------------------------
204 // Verify Base Event Properties (adapter)
205 // ------------------------------------------------------------------------
206 ITraceControlComponent
[] events
= ustProvider
.getChildren();
207 assertNotNull(events
);
208 assertEquals(2, events
.length
);
210 BaseEventComponent baseEventInfo
= (BaseEventComponent
) events
[0];
211 assertNotNull(baseEventInfo
);
213 adapter
= baseEventInfo
.getAdapter(IPropertySource
.class);
214 assertNotNull(adapter
);
215 assertTrue(adapter
instanceof BaseEventPropertySource
);
217 BaseEventPropertySource baseSource
= (BaseEventPropertySource
)adapter
;
218 assertNotNull(baseSource
.getPropertyDescriptors());
220 assertEquals("ust_tests_hello:tptest_sighandler", baseSource
.getPropertyValue(BaseEventPropertySource
.BASE_EVENT_NAME_PROPERTY_ID
));
221 assertEquals(TraceEventType
.TRACEPOINT
.name(), baseSource
.getPropertyValue(BaseEventPropertySource
.BASE_EVENT_TYPE_PROPERTY_ID
));
222 assertEquals(TraceLogLevel
.TRACE_DEBUG_MODULE
.name(), baseSource
.getPropertyValue(BaseEventPropertySource
.BASE_EVENT_LOGLEVEL_PROPERTY_ID
));
224 // ------------------------------------------------------------------------
225 // Verify Session Properties (adapter)
226 // ------------------------------------------------------------------------
227 ITraceControlComponent
[] sessions
= groups
[1].getChildren();
228 assertNotNull(sessions
);
229 assertEquals(2, sessions
.length
);
231 TraceSessionComponent session
= (TraceSessionComponent
)sessions
[1];
233 adapter
= session
.getAdapter(IPropertySource
.class);
234 assertNotNull(adapter
);
235 assertTrue(adapter
instanceof TraceSessionPropertySource
);
237 TraceSessionPropertySource sessionSource
= (TraceSessionPropertySource
)adapter
;
238 assertNotNull(sessionSource
.getPropertyDescriptors());
240 assertEquals("mysession", sessionSource
.getPropertyValue(TraceSessionPropertySource
.TRACE_SESSION_NAME_PROPERTY_ID
));
241 assertEquals("/home/user/lttng-traces/mysession-20120129-084256", sessionSource
.getPropertyValue(TraceSessionPropertySource
.TRACE_SESSION_PATH_PROPERTY_ID
));
242 assertEquals(TraceSessionState
.ACTIVE
.name(), sessionSource
.getPropertyValue(TraceSessionPropertySource
.TRACE_SESSION_STATE_PROPERTY_ID
));
244 // ------------------------------------------------------------------------
245 // Verify Domain Provider Properties (adapter)
246 // ------------------------------------------------------------------------
247 ITraceControlComponent
[] domains
= session
.getChildren();
248 assertNotNull(domains
);
249 assertEquals(2, domains
.length
);
251 TraceDomainComponent domain
= (TraceDomainComponent
) domains
[0];
252 adapter
= domain
.getAdapter(IPropertySource
.class);
253 assertNotNull(adapter
);
254 assertTrue(adapter
instanceof TraceDomainPropertySource
);
256 TraceDomainPropertySource domainSource
= (TraceDomainPropertySource
)adapter
;
257 assertNotNull(domainSource
.getPropertyDescriptors());
259 assertEquals("Kernel", domainSource
.getPropertyValue(TraceDomainPropertySource
.TRACE_DOMAIN_NAME_PROPERTY_ID
));
261 ITraceControlComponent
[] channels
= domains
[0].getChildren();
262 assertNotNull(channels
);
263 assertEquals(2, channels
.length
);
265 // ------------------------------------------------------------------------
266 // Verify Channel Properties (adapter)
267 // ------------------------------------------------------------------------
268 assertTrue(channels
[0] instanceof TraceChannelComponent
);
269 TraceChannelComponent channel
= (TraceChannelComponent
) channels
[0];
271 adapter
= channel
.getAdapter(IPropertySource
.class);
272 assertNotNull(adapter
);
273 assertTrue(adapter
instanceof TraceChannelPropertySource
);
275 TraceChannelPropertySource channelSource
= (TraceChannelPropertySource
)adapter
;
276 assertNotNull(channelSource
.getPropertyDescriptors());
278 assertEquals("channel0", channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_NAME_PROPERTY_ID
));
279 assertEquals(String
.valueOf(4), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_NO_SUBBUFFERS_PROPERTY_ID
));
280 assertEquals(TraceEnablement
.ENABLED
.name(), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_STATE_PROPERTY_ID
));
281 assertEquals(String
.valueOf(false), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_OVERWRITE_MODE_PROPERTY_ID
));
282 assertEquals("splice()", channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_OUTPUT_TYPE_PROPERTY_ID
));
283 assertEquals(String
.valueOf(200), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_READ_TIMER_PROPERTY_ID
));
284 assertEquals(String
.valueOf(262144), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_SUBBUFFER_SIZE_PROPERTY_ID
));
285 assertEquals(String
.valueOf(0), channelSource
.getPropertyValue(TraceChannelPropertySource
.TRACE_CHANNEL_SWITCH_TIMER_PROPERTY_ID
));
287 // ------------------------------------------------------------------------
288 // Verify Event Properties (adapter)
289 // ------------------------------------------------------------------------
290 ITraceControlComponent
[] channel0Events
= channel
.getChildren();
291 assertNotNull(channel0Events
);
292 assertEquals(5, channel0Events
.length
);
293 assertTrue(channel0Events
[0] instanceof TraceEventComponent
);
295 TraceEventComponent event
= (TraceEventComponent
) channel0Events
[0];
297 adapter
= event
.getAdapter(IPropertySource
.class);
298 assertNotNull(adapter
);
299 assertTrue(adapter
instanceof TraceEventPropertySource
);
301 TraceEventPropertySource eventSource
= (TraceEventPropertySource
)adapter
;
302 assertNotNull(eventSource
.getPropertyDescriptors());
304 assertEquals("block_rq_remap", eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_NAME_PROPERTY_ID
));
305 assertEquals(TraceLogLevel
.TRACE_EMERG
.name(), eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_LOGLEVEL_PROPERTY_ID
));
306 assertEquals(TraceEventType
.TRACEPOINT
.name(), eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_TYPE_PROPERTY_ID
));
307 assertEquals(TraceEnablement
.ENABLED
.name(), eventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_STATE_PROPERTY_ID
));
309 // ------------------------------------------------------------------------
310 // Verify Probe Event Properties (adapter)
311 // ------------------------------------------------------------------------
312 assertTrue(channel0Events
[2] instanceof TraceProbeEventComponent
);
314 TraceProbeEventComponent probeEvent
= (TraceProbeEventComponent
) channel0Events
[2];
316 adapter
= probeEvent
.getAdapter(IPropertySource
.class);
317 assertNotNull(adapter
);
318 assertTrue(adapter
instanceof TraceProbeEventPropertySource
);
320 TraceProbeEventPropertySource probeEventSource
= (TraceProbeEventPropertySource
)adapter
;
321 assertNotNull(probeEventSource
.getPropertyDescriptors());
322 assertEquals(4, probeEventSource
.getPropertyDescriptors().length
);
324 assertEquals("myevent2", 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("0xc0101340", probeEventSource
.getPropertyValue(TraceProbeEventPropertySource
.TRACE_EVENT_PROBE_ADDRESS_PROPERTY_ID
));
329 assertTrue(channel0Events
[3] instanceof TraceProbeEventComponent
);
331 probeEvent
= (TraceProbeEventComponent
) channel0Events
[3];
333 adapter
= probeEvent
.getAdapter(IPropertySource
.class);
334 assertNotNull(adapter
);
335 assertTrue(adapter
instanceof TraceProbeEventPropertySource
);
337 probeEventSource
= (TraceProbeEventPropertySource
)adapter
;
338 assertNotNull(probeEventSource
.getPropertyDescriptors());
339 assertEquals(5, probeEventSource
.getPropertyDescriptors().length
);
341 assertEquals("myevent0", probeEventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_NAME_PROPERTY_ID
));
342 assertEquals(TraceEventType
.PROBE
.name(), probeEventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_TYPE_PROPERTY_ID
));
343 assertEquals(TraceEnablement
.ENABLED
.name(), probeEventSource
.getPropertyValue(TraceEventPropertySource
.TRACE_EVENT_STATE_PROPERTY_ID
));
344 assertEquals("0x0", probeEventSource
.getPropertyValue(TraceProbeEventPropertySource
.TRACE_EVENT_PROBE_OFFSET_PROPERTY_ID
));
345 assertEquals("init_post", probeEventSource
.getPropertyValue(TraceProbeEventPropertySource
.TRACE_EVENT_PROBE_SYMBOL_PROPERTY_ID
));
347 //-------------------------------------------------------------------------
349 //-------------------------------------------------------------------------
351 node
.getParent().removeChild(node
);