From a26d90be36dc45a63edd1fbb13ef981eec9cb840 Mon Sep 17 00:00:00 2001 From: Bernd Hufmann Date: Wed, 21 Mar 2012 16:04:49 -0400 Subject: [PATCH] Add some more model test cases for LTTng 2.0 control --- .../control/model/component/AllTests.java | 5 +- .../TraceControlKernelProviderTests.java | 265 +++ .../TraceControlKernelSessionTests.java | 740 +++++++ .../component/TraceControlPropertiesTest.java | 10 +- .../component/TraceControlProviderTests.java | 948 -------- .../component/TraceControlTestFacility.java | 145 +- .../component/TraceControlTreeModelTest.java | 12 +- .../TraceControlUstProviderTests.java | 297 +++ .../TraceControlUstSessionTests.java | 549 +++++ .../dialogs/CreateChannelDialogStub.java | 76 + .../dialogs/CreateSessionDialogStub.java | 58 + .../dialogs/DestroyConfirmDialogStub.java | 26 + .../stubs/dialogs/EnableEventsDialogStub.java | 222 ++ .../stubs/dialogs/GetEventInfoDialogStub.java | 49 + .../testfiles/CreateTreeTest.cfg | 1957 ++++++++++++++++- .../plugin.properties | 8 +- org.eclipse.linuxtools.lttng2.ui/plugin.xml | 34 +- .../control/handlers/DisconnectHandler.java | 2 - 18 files changed, 4380 insertions(+), 1023 deletions(-) create mode 100644 org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelProviderTests.java create mode 100644 org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelSessionTests.java delete mode 100644 org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlProviderTests.java create mode 100644 org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstProviderTests.java create mode 100644 org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstSessionTests.java create mode 100644 org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/CreateChannelDialogStub.java create mode 100644 org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/CreateSessionDialogStub.java create mode 100644 org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/DestroyConfirmDialogStub.java create mode 100644 org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/EnableEventsDialogStub.java create mode 100644 org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/GetEventInfoDialogStub.java diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/AllTests.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/AllTests.java index 4de04d23c7..b40bafbb1e 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/AllTests.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/AllTests.java @@ -22,7 +22,10 @@ public class AllTests { //$JUnit-BEGIN$ suite.addTestSuite(TraceControlComponentTest.class); suite.addTestSuite(TraceControlTreeModelTest.class); - suite.addTestSuite(TraceControlProviderTests.class); + suite.addTestSuite(TraceControlKernelProviderTests.class); + suite.addTestSuite(TraceControlUstProviderTests.class); + suite.addTestSuite(TraceControlKernelSessionTests.class); + suite.addTestSuite(TraceControlUstSessionTests.class); suite.addTestSuite(TraceControlPropertiesTest.class); //$JUnit-END$ return new ModelImplTestSetup(suite); diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelProviderTests.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelProviderTests.java new file mode 100644 index 0000000000..cc6c3b997b --- /dev/null +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelProviderTests.java @@ -0,0 +1,265 @@ +/********************************************************************** + * Copyright (c) 2012 Ericsson + * + * 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: + * Bernd Hufmann - Initial API and implementation + **********************************************************************/ +package org.eclipse.linuxtools.lttng2.ui.tests.control.model.component; + +import java.io.File; +import java.net.URL; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Path; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.CreateSessionDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.DestroyConfirmDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.GetEventInfoDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.service.TestRemoteSystemProxy; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.TraceControlDialogFactory; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TargetNodeState; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEnablement; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEventType; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceLogLevel; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceSessionState; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.BaseEventComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.KernelProviderComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TargetNodeComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceChannelComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceEventComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionComponent; +import org.eclipse.linuxtools.lttng2.ui.tests.Activator; +import org.eclipse.rse.core.model.Host; +import org.eclipse.rse.core.model.IHost; +import org.eclipse.rse.internal.core.model.SystemProfile; +import org.junit.After; +import org.junit.Before; + +/** + * The class TraceControlKernelProviderTests contains UST provider handling + * test cases. + */ +@SuppressWarnings("nls") +public class TraceControlKernelProviderTests extends TestCase { + + // ------------------------------------------------------------------------ + // Constants + // ------------------------------------------------------------------------ + private static final String TEST_STREAM = "CreateTreeTest.cfg"; + private static final String SCEN_SCENARIO1_TEST = "Scenario1"; + + // ------------------------------------------------------------------------ + // Test data + // ------------------------------------------------------------------------ + private TraceControlTestFacility fFacility; + private TestRemoteSystemProxy fProxy; + private String fTestFile; + + // ------------------------------------------------------------------------ + // Static methods + // ------------------------------------------------------------------------ + + /** + * Returns test setup used when executing test case stand-alone. + * @return Test setup class + */ + public static Test suite() { + return new ModelImplTestSetup(new TestSuite(TraceControlKernelProviderTests.class)); + } + + // ------------------------------------------------------------------------ + // Housekeeping + // ------------------------------------------------------------------------ + + /** + * Perform pre-test initialization. + * + * @throws Exception + * if the initialization fails for some reason + * + */ + @Override + @Before + public void setUp() throws Exception { + fFacility = TraceControlTestFacility.getInstance(); + fProxy = new TestRemoteSystemProxy(); + URL location = FileLocator.find(Activator.getDefault().getBundle(), new Path(TraceControlTestFacility.DIRECTORY + File.separator + TEST_STREAM), null); + File testfile = new File(FileLocator.toFileURL(location).toURI()); + fTestFile = testfile.getAbsolutePath(); + } + + /** + * Perform post-test clean-up. + * + * @throws Exception + * if the clean-up fails for some reason + * + */ + @Override + @After + public void tearDown() throws Exception { + } + + /** + * Run the TraceControlComponent. + */ + public void testKernelProviderTree() throws Exception { + + fProxy.setTestFile(fTestFile); + fProxy.setScenario(TraceControlTestFacility.SCEN_INIT_TEST); + + ITraceControlComponent root = TraceControlTestFacility.getInstance().getControlView().getTraceControlRoot(); + + @SuppressWarnings("restriction") + IHost host = new Host(new SystemProfile("myProfile", true)); + host.setHostName("127.0.0.1"); + + TargetNodeComponent node = new TargetNodeComponent("myNode", root, host, fProxy); + + root.addChild(node); + node.connect(); + + fFacility.waitForJobs(); + + // Verify that node is connected + assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); + + // Get provider groups + ITraceControlComponent[] groups = node.getChildren(); + assertNotNull(groups); + assertEquals(2, groups.length); + + // Get kernel provider + ITraceControlComponent[] providers = groups[0].getChildren(); + KernelProviderComponent kernelProvider = (KernelProviderComponent) providers[0]; + + // Get kernel provider events and select 2 events + ITraceControlComponent[] events = kernelProvider.getChildren(); + assertNotNull(events); + assertEquals(3, events.length); + + BaseEventComponent baseEventInfo0 = (BaseEventComponent) events[0]; + BaseEventComponent baseEventInfo1 = (BaseEventComponent) events[1]; + + // Initialize dialog implementations for command execution + TraceControlDialogFactory.getInstance().setCreateSessionDialog(new CreateSessionDialogStub()); + TraceControlDialogFactory.getInstance().setGetEventInfoDialog(new GetEventInfoDialogStub()); + TraceControlDialogFactory.getInstance().setConfirmDialog(new DestroyConfirmDialogStub()); + + // Initialize session handling scenario + fProxy.setScenario(TraceControlTestFacility.SCEN_SCENARIO_SESSION_HANDLING); + + // ------------------------------------------------------------------------ + // Create session + // ------------------------------------------------------------------------ + TraceSessionComponent session = fFacility.createSession(groups[1]); + + // Verify that session was created + assertNotNull(session); + assertEquals("mysession", session.getName()); + assertEquals("/home/user/lttng-traces/mysession-20120314-132824", session.getSessionPath()); + assertEquals(TraceSessionState.INACTIVE, session.getSessionState()); + + // ------------------------------------------------------------------------ + // Enable event on default channel on created session above + // ------------------------------------------------------------------------ + // Initialize scenario + fProxy.setScenario(SCEN_SCENARIO1_TEST); + + ITraceControlComponent[] components = { baseEventInfo0, baseEventInfo1 }; + + fFacility.executeCommand(components, "assign.event"); + + // Verify that kernel domain was created + ITraceControlComponent[] domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + assertEquals("Kernel", domains[0].getName()); + + // Verify that channel0 was created with default values + ITraceControlComponent[] channels = domains[0].getChildren(); + assertNotNull(channels); + assertEquals(1, channels.length); + + assertTrue(channels[0] instanceof TraceChannelComponent); + TraceChannelComponent channel = (TraceChannelComponent) channels[0]; + assertEquals("channel0", channel.getName()); + assertEquals(4, channel.getNumberOfSubBuffers()); + assertEquals("splice()", channel.getOutputType()); + assertEquals(false, channel.isOverwriteMode()); + assertEquals(200, channel.getReadTimer()); + assertEquals(TraceEnablement.ENABLED, channel.getState()); + assertEquals(262144, channel.getSubBufferSize()); + assertEquals(0, channel.getSwitchTimer()); + + // Verify that event components were created + ITraceControlComponent[] channel0Events = channel.getChildren(); + assertNotNull(channel0Events); + assertEquals(2, channel0Events.length); + assertTrue(channel0Events[0] instanceof TraceEventComponent); + assertTrue(channel0Events[1] instanceof TraceEventComponent); + + TraceEventComponent event = (TraceEventComponent) channel0Events[0]; + assertEquals("sched_kthread_stop_ret", event.getName()); + assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + TraceEventComponent event1 = (TraceEventComponent) channel0Events[1]; + assertEquals("sched_kthread_stop", event1.getName()); + assertEquals(TraceLogLevel.TRACE_EMERG, event1.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event1.getEventType()); + assertEquals(TraceEnablement.ENABLED, event1.getState()); + + // ------------------------------------------------------------------------ + // Disable event components + // ------------------------------------------------------------------------ + ITraceControlComponent[] selection = { event, event1 }; + fFacility.executeCommand(selection, "disableEvent"); + + assertEquals(TraceEnablement.DISABLED, event.getState()); + assertEquals(TraceEnablement.DISABLED, event1.getState()); + + // ------------------------------------------------------------------------ + // Enable event component + // ------------------------------------------------------------------------ + fFacility.executeCommand(event1, "enableEvent"); + + // Verify event state + assertEquals(TraceEnablement.ENABLED, event1.getState()); + + // ------------------------------------------------------------------------ + // Destroy session + // ------------------------------------------------------------------------ + // Initialize session handling scenario + fProxy.setScenario(TraceControlTestFacility.SCEN_SCENARIO_SESSION_HANDLING); + + fFacility.destroySession(session); + + // Verify that no more session components exist + assertEquals(0, groups[1].getChildren().length); + + //------------------------------------------------------------------------- + // Disconnect node + //------------------------------------------------------------------------- + fFacility.executeCommand(node, "disconnect"); + assertEquals(TargetNodeState.DISCONNECTED, node.getTargetNodeState()); + + //------------------------------------------------------------------------- + // Delete node + //------------------------------------------------------------------------- + fFacility.executeCommand(node, "delete"); + assertEquals(0, fFacility.getControlView().getTraceControlRoot().getChildren().length); + + } +} \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelSessionTests.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelSessionTests.java new file mode 100644 index 0000000000..92ac65a133 --- /dev/null +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelSessionTests.java @@ -0,0 +1,740 @@ +/********************************************************************** + * Copyright (c) 2012 Ericsson + * + * 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: + * Bernd Hufmann - Initial API and implementation + **********************************************************************/ +package org.eclipse.linuxtools.lttng2.ui.tests.control.model.component; + +import java.io.File; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Path; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.CreateChannelDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.CreateSessionDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.DestroyConfirmDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.EnableEventsDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.GetEventInfoDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.service.TestRemoteSystemProxy; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.TraceControlDialogFactory; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TargetNodeState; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEnablement; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEventType; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceLogLevel; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceSessionState; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.ChannelInfo; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TargetNodeComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceChannelComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceEventComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceProbeEventComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionComponent; +import org.eclipse.linuxtools.lttng2.ui.tests.Activator; +import org.eclipse.rse.core.model.Host; +import org.eclipse.rse.core.model.IHost; +import org.eclipse.rse.internal.core.model.SystemProfile; +import org.junit.After; +import org.junit.Before; + +/** + * The class TraceControlKernelSessionTests contains UST session/channel/event + * handling test cases. + */ + +@SuppressWarnings("nls") +public class TraceControlKernelSessionTests extends TestCase { + + // ------------------------------------------------------------------------ + // Constants + // ------------------------------------------------------------------------ + private static final String TEST_STREAM = "CreateTreeTest.cfg"; + private static final String SCEN_SCENARIO3_TEST = "Scenario3"; + + // ------------------------------------------------------------------------ + // Test data + // ------------------------------------------------------------------------ + private TraceControlTestFacility fFacility; + private TestRemoteSystemProxy fProxy; + private String fTestFile; + + // ------------------------------------------------------------------------ + // Static methods + // ------------------------------------------------------------------------ + + /** + * Returns test setup used when executing test case stand-alone. + * @return Test setup class + */ + public static Test suite() { + return new ModelImplTestSetup(new TestSuite(TraceControlKernelSessionTests.class)); + } + + // ------------------------------------------------------------------------ + // Housekeeping + // ------------------------------------------------------------------------ + + /** + * Perform pre-test initialization. + * + * @throws Exception + * if the initialization fails for some reason + * + */ + @Override + @Before + public void setUp() throws Exception { + fFacility = TraceControlTestFacility.getInstance(); + fProxy = new TestRemoteSystemProxy(); + URL location = FileLocator.find(Activator.getDefault().getBundle(), new Path(TraceControlTestFacility.DIRECTORY + File.separator + TEST_STREAM), null); + File testfile = new File(FileLocator.toFileURL(location).toURI()); + fTestFile = testfile.getAbsolutePath(); + } + + /** + * Perform post-test clean-up. + * + * @throws Exception + * if the clean-up fails for some reason + * + */ + @Override + @After + public void tearDown() throws Exception { + } + + /** + * Run the TraceControlComponent. + */ + public void testTraceSessionTree() throws Exception { + + fProxy.setTestFile(fTestFile); + fProxy.setScenario(TraceControlTestFacility.SCEN_INIT_TEST); + + ITraceControlComponent root = TraceControlTestFacility.getInstance().getControlView().getTraceControlRoot(); + + @SuppressWarnings("restriction") + IHost host = new Host(new SystemProfile("myProfile", true)); + host.setHostName("127.0.0.1"); + + TargetNodeComponent node = new TargetNodeComponent("myNode", root, host, fProxy); + + root.addChild(node); + node.connect(); + + fFacility.waitForJobs(); + + // Verify that node is connected + assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); + + // Get provider groups + ITraceControlComponent[] groups = node.getChildren(); + assertNotNull(groups); + assertEquals(2, groups.length); + + // Initialize dialog implementations for command execution + TraceControlDialogFactory.getInstance().setCreateSessionDialog(new CreateSessionDialogStub()); + TraceControlDialogFactory.getInstance().setGetEventInfoDialog(new GetEventInfoDialogStub()); + TraceControlDialogFactory.getInstance().setConfirmDialog(new DestroyConfirmDialogStub()); + + // Initialize session handling scenario + fProxy.setScenario(TraceControlTestFacility.SCEN_SCENARIO_SESSION_HANDLING); + + // ------------------------------------------------------------------------ + // Create session + // ------------------------------------------------------------------------ + TraceSessionComponent session = fFacility.createSession(groups[1]); + + // Verify that session was created + assertNotNull(session); + assertEquals("mysession", session.getName()); + assertEquals("/home/user/lttng-traces/mysession-20120314-132824", session.getSessionPath()); + assertEquals(TraceSessionState.INACTIVE, session.getSessionState()); + + // Initialize scenario + fProxy.setScenario(SCEN_SCENARIO3_TEST); + + // ------------------------------------------------------------------------ + // Create channel on session + // ------------------------------------------------------------------------ + CreateChannelDialogStub channelStub = new CreateChannelDialogStub(); + channelStub.setIsKernel(true); + TraceControlDialogFactory.getInstance().setCreateChannelDialog(channelStub); + + fFacility.executeCommand(session, "createChannelOnSession"); + + // Verify that Kernel domain was created + ITraceControlComponent[] domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + assertEquals("Kernel", domains[0].getName()); + + // Verify that channel was created with correct data + ITraceControlComponent[] channels = domains[0].getChildren(); + assertNotNull(channels); + assertEquals(1, channels.length); + + assertTrue(channels[0] instanceof TraceChannelComponent); + TraceChannelComponent channel = (TraceChannelComponent) channels[0]; + assertEquals("mychannel", channel.getName()); + assertEquals(4, channel.getNumberOfSubBuffers()); + assertEquals("splice()", channel.getOutputType()); + assertEquals(true, channel.isOverwriteMode()); + assertEquals(200, channel.getReadTimer()); + assertEquals(TraceEnablement.ENABLED, channel.getState()); + assertEquals(16384, channel.getSubBufferSize()); + assertEquals(100, channel.getSwitchTimer()); + + // ------------------------------------------------------------------------ + // Create channel on domain + // ------------------------------------------------------------------------ + ChannelInfo info = (ChannelInfo)channelStub.getChannelInfo(); + info.setName("mychannel2"); + info.setOverwriteMode(false); + info.setSubBufferSize(32768); + info.setNumberOfSubBuffers(2); + info.setSwitchTimer(100); + info.setReadTimer(200); + channelStub.setChannelInfo(info); + + fFacility.executeCommand(domains[0], "createChannelOnDomain"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + assertNotNull(channels); + assertEquals(2, channels.length); + + assertTrue(channels[1] instanceof TraceChannelComponent); + channel = (TraceChannelComponent) channels[1]; + assertEquals("mychannel2", channel.getName()); + assertEquals(2, channel.getNumberOfSubBuffers()); + assertEquals("splice()", channel.getOutputType()); + assertEquals(false, channel.isOverwriteMode()); + assertEquals(200, channel.getReadTimer()); + assertEquals(TraceEnablement.ENABLED, channel.getState()); + assertEquals(32768, channel.getSubBufferSize()); + assertEquals(100, channel.getSwitchTimer()); + + EnableEventsDialogStub eventsDialogStub = new EnableEventsDialogStub(); + eventsDialogStub.setIsTracePoints(true); + List events = new ArrayList(); + events.add("sched_kthread_stop"); + events.add("sched_kthread_stop_ret"); + eventsDialogStub.setNames(events); + eventsDialogStub.setIsKernel(true); + TraceControlDialogFactory.getInstance().setEnableEventsDialog(eventsDialogStub); + + // ------------------------------------------------------------------------ + // disable channels + // ------------------------------------------------------------------------ + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + assertNotNull(channels); + assertEquals(2, channels.length); + + fFacility.executeCommand(channels, "disableChannel"); + + assertEquals(TraceEnablement.DISABLED, ((TraceChannelComponent)channels[0]).getState()); + assertEquals(TraceEnablement.DISABLED, ((TraceChannelComponent)channels[1]).getState()); + + // ------------------------------------------------------------------------ + // enable channels + // ------------------------------------------------------------------------ + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + assertNotNull(channels); + assertEquals(2, channels.length); + + fFacility.executeCommand(channels, "enableChannel"); + + assertEquals(TraceEnablement.ENABLED, ((TraceChannelComponent)channels[0]).getState()); + assertEquals(TraceEnablement.ENABLED, ((TraceChannelComponent)channels[1]).getState()); + + // ------------------------------------------------------------------------ + // enable event (tracepoints) on session + // ------------------------------------------------------------------------ + fFacility.executeCommand(session, "enableEventOnSession"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + assertNotNull(channels); + assertEquals(3, channels.length); + + assertTrue(channels[2] instanceof TraceChannelComponent); + channel = (TraceChannelComponent) channels[2]; + assertEquals("channel0", channel.getName()); + // No need to check parameters of default channel because that has been done in other tests + + ITraceControlComponent[] channel0Events = channel.getChildren(); + assertEquals(2, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + assertTrue(channel0Events[1] instanceof TraceEventComponent); + + TraceEventComponent event = (TraceEventComponent) channel0Events[0]; + assertEquals("sched_kthread_stop_ret", event.getName()); + assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + event = (TraceEventComponent) channel0Events[1]; + assertEquals("sched_kthread_stop", event.getName()); + assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // enable event (tracepoints) on domain + // ------------------------------------------------------------------------ + events.clear(); + events.add("sched_wakeup_new"); + eventsDialogStub.setNames(events); + + fFacility.executeCommand(domains[0], "enableEventOnDomain"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[2]; + // No need to check parameters of default channel because that has been done in other tests + + channel = (TraceChannelComponent) channels[2]; + + channel0Events = channel.getChildren(); + assertEquals(3, channel0Events.length); + + assertTrue(channel0Events[2] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[2]; + assertEquals("sched_wakeup_new", event.getName()); + assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // enable event (tracepoints) on channel + // ------------------------------------------------------------------------ + events.clear(); + eventsDialogStub.setNames(events); + eventsDialogStub.setIsAllTracePoints(true); + + fFacility.executeCommand(channels[1], "enableEventOnChannel"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + // No need to check parameters of default channel because that has been done in other tests + channel = (TraceChannelComponent) channels[1]; + + channel0Events = channel.getChildren(); + assertEquals(3, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + assertTrue(channel0Events[1] instanceof TraceEventComponent); + assertTrue(channel0Events[2] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("sched_kthread_stop_ret", event.getName()); + assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + event = (TraceEventComponent) channel0Events[1]; + assertEquals("sched_kthread_stop", event.getName()); + assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + event = (TraceEventComponent) channel0Events[2]; + assertEquals("sched_wakeup_new", event.getName()); + assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // enable event (syscall) on channel + // ------------------------------------------------------------------------ + events.clear(); + eventsDialogStub.setIsTracePoints(false); + eventsDialogStub.setIsAllTracePoints(false); + eventsDialogStub.setIsSysCalls(true); + + fFacility.executeCommand(channels[0], "enableEventOnChannel"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[0]; + // No need to check parameters of default channel because that has been done in other tests + + channel = (TraceChannelComponent) channels[0]; + + channel0Events = channel.getChildren(); + assertEquals(1, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("syscalls", event.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); + assertEquals(TraceEventType.SYSCALL, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // enable event (syscall) on domain + // ------------------------------------------------------------------------ + fFacility.executeCommand(domains[0], "enableEventOnDomain"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[0]; + // No need to check parameters of default channel because that has been done in other tests + + channel = (TraceChannelComponent) channels[2]; + + channel0Events = channel.getChildren(); + assertEquals(4, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("syscalls", event.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); + assertEquals(TraceEventType.SYSCALL, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // enable event (syscall) on session + // ------------------------------------------------------------------------ + fFacility.executeCommand(session, "enableEventOnSession"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[0]; + // No need to check parameters of default channel because that has been done in other tests + + channel = (TraceChannelComponent) channels[2]; + + channel0Events = channel.getChildren(); + assertEquals(4, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("syscalls", event.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); + assertEquals(TraceEventType.SYSCALL, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + + // ------------------------------------------------------------------------ + // enable event (dynamic probe) on domain + // ------------------------------------------------------------------------ + events.clear(); + eventsDialogStub.setIsSysCalls(false); + eventsDialogStub.setIsDynamicProbe(true); + eventsDialogStub.setDynamicProbe("0xc0101280"); + eventsDialogStub.setProbeEventName("myevent1"); + + fFacility.executeCommand(domains[0], "enableEventOnDomain"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[2]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(5, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceProbeEventComponent); + + TraceProbeEventComponent probeEvent = (TraceProbeEventComponent) channel0Events[0]; + assertEquals("myevent1", probeEvent.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel()); + assertEquals(TraceEventType.PROBE, probeEvent.getEventType()); + assertEquals(TraceEnablement.ENABLED, probeEvent.getState()); + assertNull(probeEvent.getOffset()); + assertEquals("0xc0101280", probeEvent.getAddress()); + assertNull(probeEvent.getSymbol()); + + // ------------------------------------------------------------------------ + // enable event (dynamic probe) on channel + // ------------------------------------------------------------------------ + eventsDialogStub.setIsDynamicProbe(true); + eventsDialogStub.setDynamicProbe("init_post"); + eventsDialogStub.setProbeEventName("myevent2"); + + fFacility.executeCommand(channels[2], "enableEventOnChannel"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[2]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(6, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceProbeEventComponent); + + probeEvent = (TraceProbeEventComponent) channel0Events[0]; + assertEquals("myevent2", probeEvent.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel()); + assertEquals(TraceEventType.PROBE, probeEvent.getEventType()); + assertEquals(TraceEnablement.ENABLED, probeEvent.getState()); + assertEquals("0x0", probeEvent.getOffset()); + assertNull(null, probeEvent.getAddress()); + assertEquals("init_post", probeEvent.getSymbol()); + + // ------------------------------------------------------------------------ + // enable event (dynamic probe) on session + // ------------------------------------------------------------------------ + eventsDialogStub.setIsDynamicProbe(true); + eventsDialogStub.setDynamicProbe("init_post:0x1000"); + eventsDialogStub.setProbeEventName("myevent3"); + + fFacility.executeCommand(session, "enableEventOnSession"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[2]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(7, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceProbeEventComponent); + + probeEvent = (TraceProbeEventComponent) channel0Events[0]; + assertEquals("myevent3", probeEvent.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel()); + assertEquals(TraceEventType.PROBE, probeEvent.getEventType()); + assertEquals(TraceEnablement.ENABLED, probeEvent.getState()); + assertEquals("0x1000", probeEvent.getOffset()); + assertNull(null, probeEvent.getAddress()); + assertEquals("init_post", probeEvent.getSymbol()); + + // ------------------------------------------------------------------------ + // enable event (dynamic function probe) on session + // ------------------------------------------------------------------------ + eventsDialogStub.setIsDynamicProbe(false); + eventsDialogStub.setDynamicProbe(null); + eventsDialogStub.setProbeEventName(null); + eventsDialogStub.setIsFunctionProbe(true); + eventsDialogStub.setFunctionEventName("myevent4"); + eventsDialogStub.setFunctionProbe("create_dev"); + + fFacility.executeCommand(session, "enableEventOnSession"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[2]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(8, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceProbeEventComponent); + + probeEvent = (TraceProbeEventComponent) channel0Events[0]; + assertEquals("myevent4", probeEvent.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel()); + assertEquals(TraceEventType.PROBE, probeEvent.getEventType()); + assertEquals(TraceEnablement.ENABLED, probeEvent.getState()); + assertEquals("0x0", probeEvent.getOffset()); + assertNull(null, probeEvent.getAddress()); + assertEquals("create_dev", probeEvent.getSymbol()); + + // ------------------------------------------------------------------------ + // enable event (dynamic function probe) on domain + // ------------------------------------------------------------------------ + eventsDialogStub.setIsFunctionProbe(true); + eventsDialogStub.setFunctionEventName("myevent5"); + eventsDialogStub.setFunctionProbe("create_dev:0x2000"); + + fFacility.executeCommand(domains[0], "enableEventOnDomain"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[2]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(9, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceProbeEventComponent); + + probeEvent = (TraceProbeEventComponent) channel0Events[0]; + assertEquals("myevent5", probeEvent.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel()); + assertEquals(TraceEventType.PROBE, probeEvent.getEventType()); + assertEquals(TraceEnablement.ENABLED, probeEvent.getState()); + assertEquals("0x2000", probeEvent.getOffset()); + assertNull(null, probeEvent.getAddress()); + assertEquals("create_dev", probeEvent.getSymbol()); + + // ------------------------------------------------------------------------ + // enable event (dynamic function probe) on channel + // ------------------------------------------------------------------------ + eventsDialogStub.setIsFunctionProbe(true); + eventsDialogStub.setFunctionEventName("myevent"); + eventsDialogStub.setFunctionProbe("create_dev:0x2000"); + + fFacility.executeCommand(channels[0], "enableEventOnChannel"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[0]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(2, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceProbeEventComponent); + + probeEvent = (TraceProbeEventComponent) channel0Events[0]; + assertEquals("myevent", probeEvent.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel()); + assertEquals(TraceEventType.PROBE, probeEvent.getEventType()); + assertEquals(TraceEnablement.ENABLED, probeEvent.getState()); + assertEquals("0x2000", probeEvent.getOffset()); + assertNull(null, probeEvent.getAddress()); + assertEquals("create_dev", probeEvent.getSymbol()); + + // ------------------------------------------------------------------------ + // refresh + // ------------------------------------------------------------------------ + fFacility.executeCommand(node, "refresh"); + groups = node.getChildren(); + assertNotNull(groups); + assertEquals(2, groups.length); + assertEquals(3, groups[0].getChildren().length); // provider + assertEquals(1, groups[1].getChildren().length); // sessions + assertEquals(1, groups[1].getChildren()[0].getChildren().length); // domains + assertEquals(3, groups[1].getChildren()[0].getChildren()[0].getChildren().length); // channels + assertEquals(2, groups[1].getChildren()[0].getChildren()[0].getChildren()[0].getChildren().length); // events (of channel[0]) + + // Initialize session handling scenario + fProxy.setScenario(TraceControlTestFacility.SCEN_SCENARIO_SESSION_HANDLING); + + session = (TraceSessionComponent)groups[1].getChildren()[0]; + + // ------------------------------------------------------------------------ + // start session + // ------------------------------------------------------------------------ + fFacility.startSession(session); + assertEquals(TraceSessionState.ACTIVE, session.getSessionState()); + + // ------------------------------------------------------------------------ + // stop session + // ------------------------------------------------------------------------ + fFacility.stopSession(session); + assertEquals(TraceSessionState.INACTIVE, session.getSessionState()); + + // ------------------------------------------------------------------------ + // Destroy session + // ------------------------------------------------------------------------ + + fFacility.destroySession(session); + + // Verify that no more session components exist + assertEquals(0, groups[1].getChildren().length); + + //------------------------------------------------------------------------- + // Disconnect node + //------------------------------------------------------------------------- + fFacility.executeCommand(node, "disconnect"); + assertEquals(TargetNodeState.DISCONNECTED, node.getTargetNodeState()); + + //------------------------------------------------------------------------- + // Delete node + //------------------------------------------------------------------------- + + fFacility.executeCommand(node, "delete"); + assertEquals(0,fFacility.getControlView().getTraceControlRoot().getChildren().length); + } + +} \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlPropertiesTest.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlPropertiesTest.java index 23e4a18a55..2771df2c27 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlPropertiesTest.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlPropertiesTest.java @@ -111,14 +111,13 @@ public class TraceControlPropertiesTest extends TestCase { */ @Override @After - public void tearDown() throws Exception { + public void tearDown() throws Exception { } /** * Run the TraceControlComponent. */ - public void testTraceControlComponents() - throws Exception { + public void testComponentProperties() throws Exception { TestRemoteSystemProxy proxy = new TestRemoteSystemProxy(); @@ -343,5 +342,10 @@ public class TraceControlPropertiesTest extends TestCase { assertEquals("0x0", probeEventSource.getPropertyValue(TraceProbeEventPropertySource.TRACE_EVENT_PROBE_OFFSET_PROPERTY_ID)); assertEquals("init_post", probeEventSource.getPropertyValue(TraceProbeEventPropertySource.TRACE_EVENT_PROBE_SYMBOL_PROPERTY_ID)); + //------------------------------------------------------------------------- + // Delete node + //------------------------------------------------------------------------- + node.disconnect(); + node.getParent().removeChild(node); } } \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlProviderTests.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlProviderTests.java deleted file mode 100644 index d9f50123d0..0000000000 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlProviderTests.java +++ /dev/null @@ -1,948 +0,0 @@ -/********************************************************************** - * Copyright (c) 2012 Ericsson - * - * 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: - * Bernd Hufmann - Initial API and implementation - **********************************************************************/ -package org.eclipse.linuxtools.lttng2.ui.tests.control.model.component; - -import java.io.File; -import java.net.URL; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.commands.NotEnabledException; -import org.eclipse.core.commands.NotHandledException; -import org.eclipse.core.commands.common.NotDefinedException; -import org.eclipse.core.runtime.FileLocator; -import org.eclipse.core.runtime.Path; -import org.eclipse.linuxtools.internal.lttng2.stubs.service.TestRemoteSystemProxy; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IConfirmDialog; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.ICreateChannelDialog; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.ICreateSessionDialog; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IGetEventInfoDialog; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.TraceControlDialogFactory; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IChannelInfo; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TargetNodeState; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEnablement; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEventType; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceLogLevel; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceSessionState; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.BaseEventComponent; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.ChannelInfo; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.KernelProviderComponent; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TargetNodeComponent; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceChannelComponent; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceEventComponent; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionComponent; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionGroup; -import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.UstProviderComponent; -import org.eclipse.linuxtools.lttng2.ui.tests.Activator; -import org.eclipse.rse.core.model.Host; -import org.eclipse.rse.core.model.IHost; -import org.eclipse.rse.internal.core.model.SystemProfile; -import org.eclipse.swt.widgets.Shell; -import org.junit.After; -import org.junit.Before; - -/** - * The class TraceControlTreeModelTest contains tests for the tree component classes. - */ -@SuppressWarnings("nls") -public class TraceControlProviderTests extends TestCase { - - private static final String DIRECTORY = "testfiles"; - private static final String TEST_STREAM = "CreateTreeTest.cfg"; - private static final String SCEN_INIT_TEST = "Initialize"; - private static final String SCEN_SCENARIO1_TEST = "Scenario1"; - private static final String SCEN_SCENARIO2_TEST = "Scenario2"; - - // ------------------------------------------------------------------------ - // Test data - // ------------------------------------------------------------------------ - private TraceControlTestFacility fFacility; - private TestRemoteSystemProxy fProxy; - private String fTestFile; - - // ------------------------------------------------------------------------ - // Static methods - // ------------------------------------------------------------------------ - - /** - * Returns test setup used when executing test case stand-alone. - * @return Test setup class - */ - public static Test suite() { - return new ModelImplTestSetup(new TestSuite(TraceControlProviderTests.class)); - } - - // ------------------------------------------------------------------------ - // Housekeeping - // ------------------------------------------------------------------------ - - /** - * Perform pre-test initialization. - * - * @throws Exception - * if the initialization fails for some reason - * - */ - @Override - @Before - public void setUp() throws Exception { - fFacility = TraceControlTestFacility.getInstance(); - fProxy = new TestRemoteSystemProxy(); - URL location = FileLocator.find(Activator.getDefault().getBundle(), new Path(DIRECTORY + File.separator + TEST_STREAM), null); - File testfile = new File(FileLocator.toFileURL(location).toURI()); - fTestFile = testfile.getAbsolutePath(); - } - - /** - * Perform post-test clean-up. - * - * @throws Exception - * if the clean-up fails for some reason - * - */ - @Override - @After - public void tearDown() throws Exception { - } - - /** - * Run the TraceControlComponent. - */ - public void testTraceControlComponents() - throws Exception { - - fProxy.setTestFile(fTestFile); - fProxy.setScenario(SCEN_INIT_TEST); - - ITraceControlComponent root = TraceControlTestFacility.getInstance().getControlView().getTraceControlRoot(); - - @SuppressWarnings("restriction") - IHost host = new Host(new SystemProfile("myProfile", true)); - host.setHostName("127.0.0.1"); - - TargetNodeComponent node = new TargetNodeComponent("myNode", root, host, fProxy); - - root.addChild(node); - node.connect(); - - fFacility.waitForJobs(); - - // Verify that node is connected - assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); - - // Get provider groups - ITraceControlComponent[] groups = node.getChildren(); - assertNotNull(groups); - assertEquals(2, groups.length); - - // Get kernel provider - ITraceControlComponent[] providers = groups[0].getChildren(); - KernelProviderComponent kernelProvider = (KernelProviderComponent) providers[0]; - - // Get kernel provider events and select 2 events - ITraceControlComponent[] events = kernelProvider.getChildren(); - assertNotNull(events); - assertEquals(3, events.length); - - BaseEventComponent baseEventInfo0 = (BaseEventComponent) events[0]; - BaseEventComponent baseEventInfo1 = (BaseEventComponent) events[1]; - - // Initialize dialog implementations for command execution - TraceControlDialogFactory.getInstance().setCreateSessionDialog(new CreateSessionDialogStub()); - TraceControlDialogFactory.getInstance().setGetEventInfoDialog(new GetEventInfoDialogStub()); - TraceControlDialogFactory.getInstance().setConfirmDialog(new DestroyConfirmDialogStub()); - - // Initialize scenario - fProxy.setScenario(SCEN_SCENARIO1_TEST); - - // ------------------------------------------------------------------------ - // Create session - // ------------------------------------------------------------------------ - TraceSessionComponent session = createSession(groups[1]); - - // Verify that session was created - assertNotNull(session); - assertEquals("mysession", session.getName()); - assertEquals("/home/user/lttng-traces/mysession-20120314-132824", session.getSessionPath()); - assertEquals(TraceSessionState.INACTIVE, session.getSessionState()); - - // ------------------------------------------------------------------------ - // Enable event on default channel on created session above - // ------------------------------------------------------------------------ - ITraceControlComponent[] components = { baseEventInfo0, baseEventInfo1 }; - - fFacility.getControlView().setSelection(components); - // Give GUI time to actually execute refresh - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - - fFacility.executeCommand("assign.event"); - fFacility.waitForJobs(); - - // Verify that kernel domain was created - ITraceControlComponent[] domains = session.getChildren(); - assertNotNull(domains); - assertEquals(1, domains.length); - - assertEquals("Kernel", domains[0].getName()); - - // Verify that channel0 was created with default values - ITraceControlComponent[] channels = domains[0].getChildren(); - assertNotNull(channels); - assertEquals(1, channels.length); - - assertTrue(channels[0] instanceof TraceChannelComponent); - TraceChannelComponent channel = (TraceChannelComponent) channels[0]; - assertEquals("channel0", channel.getName()); - assertEquals(4, channel.getNumberOfSubBuffers()); - assertEquals("splice()", channel.getOutputType()); - assertEquals(false, channel.isOverwriteMode()); - assertEquals(200, channel.getReadTimer()); - assertEquals(TraceEnablement.ENABLED, channel.getState()); - assertEquals(262144, channel.getSubBufferSize()); - assertEquals(0, channel.getSwitchTimer()); - - // Verify that event components were created - ITraceControlComponent[] channel0Events = channel.getChildren(); - assertNotNull(channel0Events); - assertEquals(2, channel0Events.length); - assertTrue(channel0Events[0] instanceof TraceEventComponent); - assertTrue(channel0Events[1] instanceof TraceEventComponent); - - TraceEventComponent event = (TraceEventComponent) channel0Events[0]; - assertEquals("sched_kthread_stop_ret", event.getName()); - assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel()); - assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); - assertEquals(TraceEnablement.ENABLED, event.getState()); - - TraceEventComponent event1 = (TraceEventComponent) channel0Events[1]; - assertEquals("sched_kthread_stop", event1.getName()); - assertEquals(TraceLogLevel.TRACE_EMERG, event1.getLogLevel()); - assertEquals(TraceEventType.TRACEPOINT, event1.getEventType()); - assertEquals(TraceEnablement.ENABLED, event1.getState()); - - // ------------------------------------------------------------------------ - // Disable event components - // ------------------------------------------------------------------------ - ITraceControlComponent[] selection = { event, event1 }; - fFacility.getControlView().setSelection(selection); - // Give GUI time to actually execute the selection - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - fFacility.executeCommand("disable.event"); - fFacility.waitForJobs(); - - assertEquals(TraceEnablement.DISABLED, event.getState()); - assertEquals(TraceEnablement.DISABLED, event1.getState()); - - // ------------------------------------------------------------------------ - // Enable event component - // ------------------------------------------------------------------------ - fFacility.getControlView().setSelection(event1); - fFacility.executeCommand("enable.event"); - fFacility.waitForJobs(); - - // Verify event state - assertEquals(TraceEnablement.ENABLED, event1.getState()); - - // ------------------------------------------------------------------------ - // Destroy session - // ------------------------------------------------------------------------ - destroySession(session); - - // Verify that no more session components exist - assertEquals(0, groups[1].getChildren().length); - - - // ------------------------------------------------------------------------ - // Create session - // ------------------------------------------------------------------------ - fProxy.setScenario(SCEN_SCENARIO2_TEST); - - CreateSessionDialogStub sessionDialogStub = new CreateSessionDialogStub(); - sessionDialogStub.setSessionPath("/home/user/temp"); - TraceControlDialogFactory.getInstance().setCreateSessionDialog(sessionDialogStub); - - session = createSession(groups[1]); - - // Verify that session was created - assertNotNull(session); - assertEquals("mysession", session.getName()); - assertEquals("/home/user/temp", session.getSessionPath()); - assertEquals(TraceSessionState.INACTIVE, session.getSessionState()); - - // ------------------------------------------------------------------------ - // Create Channel on UST global domain - // ------------------------------------------------------------------------ - TraceControlDialogFactory.getInstance().setCreateChannelDialog(new CreateChannelDialogStub()); - - fFacility.getControlView().setSelection(session); - // Give GUI time to actually execute refresh - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - - fFacility.executeCommand("createChannelOnSession"); - fFacility.waitForJobs(); - - // Verify that UST domain was created - domains = session.getChildren(); - assertNotNull(domains); - assertEquals(1, domains.length); - - assertEquals("UST global", domains[0].getName()); - - // Verify that channel was created with correct data - channels = domains[0].getChildren(); - assertNotNull(channels); - assertEquals(1, channels.length); - - assertTrue(channels[0] instanceof TraceChannelComponent); - channel = (TraceChannelComponent) channels[0]; - assertEquals("mychannel", channel.getName()); - assertEquals(2, channel.getNumberOfSubBuffers()); - assertEquals("mmap()", channel.getOutputType()); - assertEquals(false, channel.isOverwriteMode()); - assertEquals(100, channel.getReadTimer()); - assertEquals(TraceEnablement.ENABLED, channel.getState()); - assertEquals(16384, channel.getSubBufferSize()); - assertEquals(200, channel.getSwitchTimer()); - - // ------------------------------------------------------------------------ - // Enable event on default channel on created session above - // ------------------------------------------------------------------------ - // Get first UST provider - UstProviderComponent ustProvider = (UstProviderComponent) providers[1]; - assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", ustProvider.getName()); - assertEquals(9379, ustProvider.getPid()); - - // Get events - events = ustProvider.getChildren(); - assertNotNull(events); - assertEquals(2, events.length); - - baseEventInfo0 = (BaseEventComponent) events[0]; - baseEventInfo1 = (BaseEventComponent) events[1]; - - ITraceControlComponent[] ustSelection = { baseEventInfo0, baseEventInfo1 }; - - fFacility.getControlView().setSelection(ustSelection); - // Give GUI time to actually execute refresh - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - fFacility.executeCommand("assign.event"); - fFacility.waitForJobs(); - - // verify that events were created under the channel - // Note that domain and channel has to be re-read because the tree is re-created - - domains = session.getChildren(); - - // Verify that channel was created with correct data - channels = domains[0].getChildren(); - - ITraceControlComponent[] ustEvents = channels[0].getChildren(); - assertEquals(2, ustEvents.length); - - event = (TraceEventComponent) ustEvents[0]; - assertEquals("ust_tests_hello:tptest_sighandler", event.getName()); - assertEquals(TraceLogLevel.TRACE_DEBUG_LINE, event.getLogLevel()); - assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); - assertEquals(TraceEnablement.ENABLED, event.getState()); - - event = (TraceEventComponent) ustEvents[1]; - assertEquals("ust_tests_hello:tptest", ustEvents[1].getName()); - assertEquals(TraceLogLevel.TRACE_DEBUG_LINE, event.getLogLevel()); - assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); - assertEquals(TraceEnablement.ENABLED, event.getState()); - - // ------------------------------------------------------------------------ - // Disable event components - // ------------------------------------------------------------------------ - fFacility.getControlView().setSelection(event); - // Give GUI time to actually execute the selection - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - fFacility.executeCommand("disable.event"); - fFacility.waitForJobs(); - - assertEquals(TraceEnablement.DISABLED, event.getState()); - - // ------------------------------------------------------------------------ - // Enable event component - // ------------------------------------------------------------------------ - fFacility.getControlView().setSelection(event); - fFacility.executeCommand("enable.event"); - fFacility.waitForJobs(); - - // Verify event state - assertEquals(TraceEnablement.ENABLED, event.getState()); - - // ------------------------------------------------------------------------ - // Destroy session - // ------------------------------------------------------------------------ - destroySession(session); - - // Verify that no more session components exist - assertEquals(0, groups[1].getChildren().length); - - -// fFacility.delay(60000); - } - - private TraceSessionComponent createSession(ITraceControlComponent group) throws ExecutionException, NotDefinedException, NotEnabledException, NotHandledException { - fFacility.getControlView().setSelection(group); - // Give GUI time to actually execute the selection - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - fFacility.executeCommand("createSession"); - fFacility.waitForJobs(); - - ITraceControlComponent[] sessions = group.getChildren(); - if ((sessions == null) || (sessions.length == 0)) { - return null; - } - return (TraceSessionComponent)sessions[0]; - } - - private void destroySession(TraceSessionComponent session) throws ExecutionException, NotDefinedException, NotEnabledException, NotHandledException { - fFacility.getControlView().setSelection(session); - // Give GUI time to actually execute the selection - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - fFacility.executeCommand("destroySession"); - fFacility.waitForJobs(); - } - -// assertEquals("sched_kthread_stop_ret", baseEventInfo.getName()); -// assertEquals(TraceLogLevel.TRACE_EMERG, baseEventInfo.getLogLevel()); -// assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType()); -// -// baseEventInfo = (BaseEventComponent) events[2]; -// assertEquals("sched_wakeup_new", baseEventInfo.getName()); -// assertEquals(TraceLogLevel.TRACE_EMERG, baseEventInfo.getLogLevel()); -// assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType()); -// -// // ------------------------------------------------------------------------ -// // Verify UstProviderComponent -// // ------------------------------------------------------------------------ -// UstProviderComponent ustProvider = (UstProviderComponent) providers[1]; -// assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", ustProvider.getName()); -// assertEquals(9379, ustProvider.getPid()); -// -// // ------------------------------------------------------------------------ -// // Verify event info (UST provider) -// // ------------------------------------------------------------------------ -// events = ustProvider.getChildren(); -// assertNotNull(events); -// assertEquals(2, events.length); -// -// baseEventInfo = (BaseEventComponent) events[0]; -// assertNotNull(baseEventInfo); -// assertEquals("ust_tests_hello:tptest_sighandler", baseEventInfo.getName()); -// assertEquals(TraceLogLevel.TRACE_DEBUG_MODULE, baseEventInfo.getLogLevel()); -// assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType()); -// -// baseEventInfo = (BaseEventComponent) events[1]; -// assertEquals("ust_tests_hello:tptest", baseEventInfo.getName()); -// assertEquals(TraceLogLevel.TRACE_INFO, baseEventInfo.getLogLevel()); -// assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType()); -// -// // ------------------------------------------------------------------------ -// // Verify UstProviderComponent -// // ------------------------------------------------------------------------ -// ustProvider = (UstProviderComponent) providers[2]; -// assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", ustProvider.getName()); -// assertEquals(4852, ustProvider.getPid()); -// -// // verify getters and setter -// verifyUstProviderGettersSetters(ustProvider); -// -// // ------------------------------------------------------------------------ -// // Verify event info (UST provider) -// // ------------------------------------------------------------------------ -// events = ustProvider.getChildren(); -// assertNotNull(events); -// assertEquals(2, events.length); -// -// baseEventInfo = (BaseEventComponent) events[0]; -// assertNotNull(baseEventInfo); -// assertEquals("ust_tests_hello:tptest_sighandler", baseEventInfo.getName()); -// assertEquals(TraceLogLevel.TRACE_WARNING, baseEventInfo.getLogLevel()); -// assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType()); -// -// baseEventInfo = (BaseEventComponent) events[1]; -// assertEquals("ust_tests_hello:tptest", baseEventInfo.getName()); -// assertEquals(TraceLogLevel.TRACE_DEBUG_FUNCTION, baseEventInfo.getLogLevel()); -// assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType()); -// -// // verify getters and setters -// verifyBaseEventGettersSetters(baseEventInfo); -// -// // ------------------------------------------------------------------------ -// // Verify TraceSessionGroup -// // ------------------------------------------------------------------------ -// ITraceControlComponent[] sessions = groups[1].getChildren(); -// assertNotNull(sessions); -// assertEquals(2, sessions.length); -// for (int i = 0; i < sessions.length; i++) { -// assertTrue(sessions[i] instanceof TraceSessionComponent); -// } -// assertEquals("mysession1", sessions[0].getName()); -// assertEquals("mysession", sessions[1].getName()); -// -// // ------------------------------------------------------------------------ -// // Verify TraceSessionComponent -// // ------------------------------------------------------------------------ -// TraceSessionComponent session = (TraceSessionComponent)sessions[1]; -// assertEquals("mysession", session.getName()); -// assertEquals("/home/user/lttng-traces/mysession-20120129-084256", session.getSessionPath()); -// assertEquals(TraceSessionState.ACTIVE, session.getSessionState()); -// -// // Verify setters and setters -// verifySessionGetterSetters(session); -// -// ITraceControlComponent[] domains = session.getChildren(); -// assertNotNull(domains); -// assertEquals(2, domains.length); -// -// // ------------------------------------------------------------------------ -// // Verify Kernel domain -// // ------------------------------------------------------------------------ -// assertEquals("Kernel", domains[0].getName()); -// ITraceControlComponent[] channels = domains[0].getChildren(); -// assertNotNull(channels); -// assertEquals(2, channels.length); -// -// // ------------------------------------------------------------------------ -// // Verify Kernel's channel0 -// // ------------------------------------------------------------------------ -// assertTrue(channels[0] instanceof TraceChannelComponent); -// TraceChannelComponent channel = (TraceChannelComponent) channels[0]; -// assertEquals("channel0", channel.getName()); -// assertEquals(4, channel.getNumberOfSubBuffers()); -// assertEquals("splice()", channel.getOutputType()); -// assertEquals(false, channel.isOverwriteMode()); -// assertEquals(200, channel.getReadTimer()); -// assertEquals(TraceEnablement.ENABLED, channel.getState()); -// assertEquals(262144, channel.getSubBufferSize()); -// assertEquals(0, channel.getSwitchTimer()); -// -// // ------------------------------------------------------------------------ -// // Verify event info (kernel, channel0) -// // ------------------------------------------------------------------------ -// ITraceControlComponent[] channel0Events = channel.getChildren(); -// assertNotNull(channel0Events); -// assertEquals(5, channel0Events.length); -// assertTrue(channel0Events[0] instanceof TraceEventComponent); -// assertTrue(channel0Events[1] instanceof TraceEventComponent); -// assertTrue(channel0Events[2] instanceof TraceProbeEventComponent); -// assertTrue(channel0Events[3] instanceof TraceProbeEventComponent); -// assertTrue(channel0Events[4] instanceof TraceEventComponent); -// -// TraceEventComponent event = (TraceEventComponent) channel0Events[0]; -// assertEquals("block_rq_remap", event.getName()); -// assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel()); -// assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); -// assertEquals(TraceEnablement.ENABLED, event.getState()); -// -// event = (TraceEventComponent) channel0Events[1]; -// assertEquals("block_bio_remap", event.getName()); -// assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel()); -// assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); -// assertEquals(TraceEnablement.DISABLED, event.getState()); -// -// TraceProbeEventComponent probeEvent = (TraceProbeEventComponent) channel0Events[2]; -// assertEquals("myevent2", probeEvent.getName()); -// assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel()); -// assertEquals(TraceEventType.PROBE, probeEvent.getEventType()); -// assertEquals(TraceEnablement.ENABLED, probeEvent.getState()); -// assertEquals("0xc0101340", probeEvent.getAddress()); -// assertNull(probeEvent.getOffset()); -// assertNull(probeEvent.getSymbol()); -// -// probeEvent = (TraceProbeEventComponent) channel0Events[3]; -// assertEquals("myevent0", probeEvent.getName()); -// assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel()); -// assertEquals(TraceEventType.PROBE, probeEvent.getEventType()); -// assertEquals(TraceEnablement.ENABLED, probeEvent.getState()); -// assertNull(probeEvent.getAddress()); -// assertEquals("0x0", probeEvent.getOffset()); -// assertEquals("init_post", probeEvent.getSymbol()); -// -// event = (TraceEventComponent) channel0Events[4]; -// assertEquals("syscalls", event.getName()); -// assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); -// assertEquals(TraceEventType.SYSCALL, event.getEventType()); -// assertEquals(TraceEnablement.ENABLED, event.getState()); -// -// // ------------------------------------------------------------------------ -// // Verify Kernel's channel1 -// // ------------------------------------------------------------------------ -// assertEquals("channel1", channels[1].getName()); -// channel = (TraceChannelComponent) channels[1]; -// assertEquals(4, channel.getNumberOfSubBuffers()); -// assertEquals("splice()", channel.getOutputType()); -// assertEquals(true, channel.isOverwriteMode()); -// assertEquals(400, channel.getReadTimer()); -// assertEquals(TraceEnablement.DISABLED, channel.getState()); -// assertEquals(524288, channel.getSubBufferSize()); -// assertEquals(100, channel.getSwitchTimer()); -// -// // ------------------------------------------------------------------------ -// // Verify event info (kernel, channel1) -// // ------------------------------------------------------------------------ -// ITraceControlComponent[] channel1Events = channels[1].getChildren(); -// assertEquals(0, channel1Events.length); -// -// // ------------------------------------------------------------------------ -// // Verify domain UST global -// // ------------------------------------------------------------------------ -// assertEquals("UST global", domains[1].getName()); -// -// ITraceControlComponent[] ustChannels = domains[1].getChildren(); -// -// for (int i = 0; i < ustChannels.length; i++) { -// assertTrue(ustChannels[i] instanceof TraceChannelComponent); -// } -// -// // ------------------------------------------------------------------------ -// // Verify UST global's mychannel1 -// // ------------------------------------------------------------------------ -// channel = (TraceChannelComponent) ustChannels[0]; -// assertEquals("mychannel1", channel.getName()); -// assertEquals(8, channel.getNumberOfSubBuffers()); -// assertEquals("mmap()", channel.getOutputType()); -// assertEquals(true, channel.isOverwriteMode()); -// assertEquals(100, channel.getReadTimer()); -// assertEquals(TraceEnablement.DISABLED, channel.getState()); -// assertEquals(8192, channel.getSubBufferSize()); -// assertEquals(200, channel.getSwitchTimer()); -// -// // verify getters and setters -// verifyChannelGettersSetters(channel); -// -// // ------------------------------------------------------------------------ -// // Verify event info (UST global, mychannel1) -// // ------------------------------------------------------------------------ -// ITraceControlComponent[] ustEvents = channel.getChildren(); -// assertEquals(0, ustEvents.length); -// -// // ------------------------------------------------------------------------ -// // Verify UST global's channel0 -// // ------------------------------------------------------------------------ -// channel = (TraceChannelComponent) ustChannels[1]; -// assertEquals("channel0", channel.getName()); -// assertEquals(4, channel.getNumberOfSubBuffers()); -// assertEquals("mmap()", channel.getOutputType()); -// assertEquals(false, channel.isOverwriteMode()); -// assertEquals(200, channel.getReadTimer()); -// assertEquals(TraceEnablement.ENABLED, channel.getState()); -// assertEquals(4096, channel.getSubBufferSize()); -// assertEquals(0, channel.getSwitchTimer()); -// -// // ------------------------------------------------------------------------ -// // Verify event info (UST global, channel0) -// // ------------------------------------------------------------------------ -// ustEvents = channel.getChildren(); -// assertEquals(2, ustEvents.length); -// -// event = (TraceEventComponent) ustEvents[0]; -// assertEquals("ust_tests_hello:tptest_sighandler", event.getName()); -// assertEquals(TraceLogLevel.TRACE_DEBUG_LINE, event.getLogLevel()); -// assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); -// assertEquals(TraceEnablement.DISABLED, event.getState()); -// -// event = (TraceEventComponent) ustEvents[1]; -// assertEquals("*", ustEvents[1].getName()); -// assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); -// assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); -// assertEquals(TraceEnablement.ENABLED, event.getState()); -// -// // verify getters and setters -// verifyEventGettersSetters(event); -// -// // disconnect -// node.disconnect(); -// assertEquals(TargetNodeState.DISCONNECTED, node.getTargetNodeState()); -// assertNotNull(node.getImage()); -// assertNotSame(connectedImage, node.getImage()); -// } -// -// private void verifySessionGetterSetters(TraceSessionComponent session) { -// // save original values -// String name = session.getName(); -// String origPath = session.getSessionPath(); -// TraceSessionState origState = session.getSessionState(); -// -// // test cases -// session.setName("newName"); -// assertEquals("newName", session.getName()); -// -// session.setSessionPath("/home/user/tmp"); -// assertEquals("/home/user/tmp", session.getSessionPath()); -// -// session.setSessionState(TraceSessionState.INACTIVE); -// assertEquals(TraceSessionState.INACTIVE, session.getSessionState()); -// Image inactiveImage = session.getImage(); -// assertNotNull(inactiveImage); -// -// session.setSessionState("active"); -// assertEquals(TraceSessionState.ACTIVE, session.getSessionState()); -// -// Image activeImage = session.getImage(); -// assertNotNull(activeImage); -// assertNotSame(activeImage, inactiveImage); -// -// -// // restore original values -// session.setName(name); -// session.setSessionPath(origPath); -// session.setSessionState(origState); -// } -// -// private void verifyBaseEventGettersSetters(BaseEventComponent event) { -// // save original values -// String name = event.getName(); -// TraceLogLevel level = event.getLogLevel(); -// TraceEventType type = event.getEventType(); -// -// // test cases -// event.setName("newName"); -// assertEquals("newName", event.getName()); -// -// event.setLogLevel(TraceLogLevel.TRACE_INFO); -// assertEquals(TraceLogLevel.TRACE_INFO, event.getLogLevel()); -// event.setLogLevel("TRACE_ALERT"); -// assertEquals(TraceLogLevel.TRACE_ALERT, event.getLogLevel()); -// -// event.setEventType(TraceEventType.UNKNOWN); -// assertEquals(TraceEventType.UNKNOWN, event.getEventType()); -// event.setEventType("tracepoint"); -// assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); -// -// // restore original values -// event.setName(name); -// event.setLogLevel(level); -// event.setEventType(type); -// } -// -// private void verifyEventGettersSetters(TraceEventComponent event) { -// // save original values -// String name = event.getName(); -// TraceLogLevel level = event.getLogLevel(); -// TraceEventType type = event.getEventType(); -// TraceEnablement state = event.getState(); -// -// // test cases -// event.setName("newName"); -// assertEquals("newName", event.getName()); -// -// event.setLogLevel(TraceLogLevel.TRACE_INFO); -// assertEquals(TraceLogLevel.TRACE_INFO, event.getLogLevel()); -// event.setLogLevel("TRACE_ALERT"); -// assertEquals(TraceLogLevel.TRACE_ALERT, event.getLogLevel()); -// -// event.setEventType(TraceEventType.UNKNOWN); -// assertEquals(TraceEventType.UNKNOWN, event.getEventType()); -// event.setEventType("tracepoint"); -// assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); -// -// event.setState("disabled"); -// assertEquals(TraceEnablement.DISABLED, event.getState()); -// -// Image disabledImage = event.getImage(); -// assertNotNull(disabledImage); -// -// event.setState(TraceEnablement.ENABLED); -// assertEquals(TraceEnablement.ENABLED, event.getState()); -// -// Image enabledImage = event.getImage(); -// assertNotNull(enabledImage); -// assertNotSame(enabledImage, disabledImage); -// -// // restore original values -// event.setName(name); -// event.setLogLevel(level); -// event.setEventType(type); -// event.setState(state); -// } -// -// private void verifyChannelGettersSetters(TraceChannelComponent channel) { -// // save original values -// String name = channel.getName(); -// int nbSubBuffers = channel.getNumberOfSubBuffers(); -// String type = channel.getOutputType(); -// boolean mode = channel.isOverwriteMode(); -// long readTimer = channel.getReadTimer(); -// TraceEnablement state = channel.getState(); -// long subBufferSize = channel.getSubBufferSize(); -// long switchTimer = channel.getSwitchTimer(); -// -// // test cases -// channel.setName("newName"); -// assertEquals("newName", channel.getName()); -// -// channel.setNumberOfSubBuffers(2); -// assertEquals(2, channel.getNumberOfSubBuffers()); -// -// channel.setOutputType("splice()"); -// assertEquals("splice()", channel.getOutputType()); -// -// channel.setOverwriteMode(false); -// assertEquals(false, channel.isOverwriteMode()); -// -// channel.setReadTimer(250); -// assertEquals(250, channel.getReadTimer()); -// -// channel.setState("enabled"); -// assertEquals(TraceEnablement.ENABLED, channel.getState()); -// -// Image enabledImage = channel.getImage(); -// assertNotNull(enabledImage); -// channel.setState(TraceEnablement.DISABLED); -// assertEquals(TraceEnablement.DISABLED, channel.getState()); -// -// Image disabledImage = channel.getImage(); -// assertNotNull(disabledImage); -// assertNotSame(enabledImage, disabledImage); -// -// channel.setSubBufferSize(1024); -// assertEquals(1024, channel.getSubBufferSize()); -// -// channel.setSwitchTimer(1000); -// assertEquals(1000, channel.getSwitchTimer()); -// -// // restore original values -// channel.setName(name); -// channel.setNumberOfSubBuffers(nbSubBuffers); -// channel.setOutputType(type); -// channel.setOverwriteMode(mode); -// channel.setReadTimer(readTimer); -// channel.setState(state); -// channel.setSubBufferSize(subBufferSize); -// channel.setSwitchTimer(switchTimer); -// } -// -// private void verifyUstProviderGettersSetters(UstProviderComponent ustProvider) { -// // save original values -// String name = ustProvider.getName(); -// int pid = ustProvider.getPid(); -// -// // test cases -// ustProvider.setName("newName"); -// assertEquals("newName", ustProvider.getName()); -// -// ustProvider.setPid(9876); -// assertEquals(9876, ustProvider.getPid()); -// -// // restore original values -// ustProvider.setName(name); -// ustProvider.setPid(pid); -// } - - public class CreateSessionDialogStub implements ICreateSessionDialog { - public String fPath = null; - - @Override - public String getSessionName() { - return "mysession"; - } - - @Override - public String getSessionPath() { - return fPath; - } - - @Override - public boolean isDefaultSessionPath() { - return fPath == null; - } - - @Override - public void setTraceSessionGroup(TraceSessionGroup group) { - - } - - @Override - public int open() { - return 0; - } - - public void setSessionPath(String path) { - fPath = path; - } - } - - public class GetEventInfoDialogStub implements IGetEventInfoDialog { - - private TraceSessionComponent[] fSessions; - - @Override - public TraceSessionComponent getSession() { - return fSessions[0]; - } - - @Override - public TraceChannelComponent getChannel() { - return null; - } - - @Override - public void setIsKernel(boolean isKernel) { - } - - @Override - public void setSessions(TraceSessionComponent[] sessions) { - fSessions = sessions; - } - - @Override - public int open() { - return 0; - } - } - - public class DestroyConfirmDialogStub implements IConfirmDialog { - - @Override - public boolean openConfirm(Shell parent, String title, String message) { - return true; - } - } - - public class CreateChannelDialogStub implements ICreateChannelDialog { - - @Override - public IChannelInfo getChannelInfo() { - ChannelInfo info = new ChannelInfo("mychannel"); - info.setNumberOfSubBuffers(2); - info.setOverwriteMode(false); - info.setReadTimer(100); - info.setSwitchTimer(200); - info.setSubBufferSize(16384); - return info; - } - - @Override - public void setDomainComponent(TraceDomainComponent domain) { - } - - @Override - public int open() { - return 0; - } - - @Override - public boolean isKernel() { - return false; - } - - } -} \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTestFacility.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTestFacility.java index aeb3a09576..46b75357d1 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTestFacility.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTestFacility.java @@ -17,6 +17,8 @@ import org.eclipse.core.commands.NotHandledException; import org.eclipse.core.commands.common.NotDefinedException; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.linuxtools.internal.lttng2.ui.views.control.ControlView; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionComponent; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IViewPart; import org.eclipse.ui.PartInitException; @@ -32,10 +34,14 @@ public class TraceControlTestFacility { // ------------------------------------------------------------------------ // Constants // ------------------------------------------------------------------------ - final static public int WAIT_FOR_JOBS_DELAY = 1000; - final static public int GUI_REFESH_DELAY = 500; - - final static public String COMMAND_CATEGORY_PREFIX = "org.eclipse.linuxtools.internal.lttng2.ui.commands.control."; //$NON-NLS-1$ + public final static int WAIT_FOR_JOBS_DELAY = 1000; + public final static int GUI_REFESH_DELAY = 500; + + public final static String DIRECTORY = "testfiles"; //$NON-NLS-1$ + public final static String COMMAND_CATEGORY_PREFIX = "org.eclipse.linuxtools.internal.lttng2.ui.commands.control."; //$NON-NLS-1$ + public final static String SCEN_INIT_TEST = "Initialize"; //$NON-NLS-1$ + public final static String SCEN_SCENARIO_SESSION_HANDLING = "SessionHandling"; //$NON-NLS-1$ + public final static String SCEN_SCENARIO_SESSION_HANDLING_WITH_PATH = "SessionHandlingWithPath"; //$NON-NLS-1$ // ------------------------------------------------------------------------ // Attributes @@ -86,6 +92,9 @@ public class TraceControlTestFacility { } + /** + * Disposes the facility (and GUI) + */ public void dispose() { if (fIsInitialized) { waitForJobs(); @@ -94,7 +103,11 @@ public class TraceControlTestFacility { fIsInitialized = false; } } - + + /** + * Creates a delay for given time. + * @param waitTimeMillis - time in milli seconds + */ public void delay(long waitTimeMillis) { Display display = Display.getCurrent(); if (display != null) { @@ -123,7 +136,6 @@ public class TraceControlTestFacility { } } - /** * @return current control view */ @@ -131,10 +143,129 @@ public class TraceControlTestFacility { return fControlView; } + /** + * Executes an Eclipse command with command ID after selecting passed component + * @param component - component to select in the tree + * @param commandId - command ID + * @throws ExecutionException + * @throws NotDefinedException + * @throws NotEnabledException + * @throws NotHandledException + */ + public void executeCommand(ITraceControlComponent component, String commandId) throws ExecutionException, NotDefinedException, NotEnabledException, NotHandledException { + setSelection(component); + executeCommand(commandId); + } + + /** + * Executes an Eclipse command with command ID after selecting passed components + * @param components - array of components to select in the tree + * @param commandId - command ID + * @throws ExecutionException + * @throws NotDefinedException + * @throws NotEnabledException + * @throws NotHandledException + */ + public void executeCommand(ITraceControlComponent[] components, String commandId) throws ExecutionException, NotDefinedException, NotEnabledException, NotHandledException { + setSelection(components); + executeCommand(commandId); + } + + /** + * Executes an Eclipse command with command ID + * @param commandId + * @throws ExecutionException + * @throws NotDefinedException + * @throws NotEnabledException + * @throws NotHandledException + */ public void executeCommand(String commandId) throws ExecutionException, NotDefinedException, NotEnabledException, NotHandledException { -// ICommandService commandService = (ICommandService) fControlView.getSite().getService(ICommandService.class); IHandlerService handlerService = (IHandlerService) fControlView.getSite().getService(IHandlerService.class); handlerService.executeCommand(COMMAND_CATEGORY_PREFIX + commandId, null); + waitForJobs(); + } + + /** + * Selects passed component + * @param component - component to select in the tree + * @param commandId - command ID + */ + public void setSelection(ITraceControlComponent component) { + fControlView.setSelection(component); + + // Give GUI time to actually execute refresh + delay(TraceControlTestFacility.GUI_REFESH_DELAY); } + + /** + * Selects passed components + * @param components - array of component to select in the tree + * @param commandId - command ID + */ + public void setSelection(ITraceControlComponent[] components) { + fControlView.setSelection(components); + + // Give GUI time to actually execute refresh + delay(TraceControlTestFacility.GUI_REFESH_DELAY); + } + + /** + * Creates session on passed session group. + * @param group - session group + * @return - trace session group if it's successful else null + * @throws ExecutionException + * @throws NotDefinedException + * @throws NotEnabledException + * @throws NotHandledException + */ + @SuppressWarnings("nls") + public TraceSessionComponent createSession(ITraceControlComponent group) throws ExecutionException, NotDefinedException, NotEnabledException, NotHandledException { + executeCommand(group, "createSession"); + + ITraceControlComponent[] sessions = group.getChildren(); + if ((sessions == null) || (sessions.length == 0)) { + return null; + } + return (TraceSessionComponent)sessions[0]; + } + + /** + * Destroys a given session. + * @param session - session to destroy + * @throws ExecutionException + * @throws NotDefinedException + * @throws NotEnabledException + * @throws NotHandledException + */ + @SuppressWarnings("nls") + public void destroySession(TraceSessionComponent session) throws ExecutionException, NotDefinedException, NotEnabledException, NotHandledException { + executeCommand(session, "destroySession"); + } + + /** + * Starts a given session + * @param session - session to start + * @throws ExecutionException + * @throws NotDefinedException + * @throws NotEnabledException + * @throws NotHandledException + */ + @SuppressWarnings("nls") + public void startSession(TraceSessionComponent session) throws ExecutionException, NotDefinedException, NotEnabledException, NotHandledException { + executeCommand(session, "start"); + } + + /** + * Stops a given session + * @param session - session to stop + * @throws ExecutionException + * @throws NotDefinedException + * @throws NotEnabledException + * @throws NotHandledException + */ + @SuppressWarnings("nls") + public void stopSession(TraceSessionComponent session) throws ExecutionException, NotDefinedException, NotEnabledException, NotHandledException { + executeCommand(session, "stop"); + } } diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTreeModelTest.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTreeModelTest.java index 677e3d3ce0..a83288b744 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTreeModelTest.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTreeModelTest.java @@ -47,14 +47,16 @@ import org.eclipse.swt.graphics.Image; import org.junit.After; import org.junit.Before; - /** * The class TraceControlTreeModelTest contains tests for the tree component classes. */ @SuppressWarnings("nls") public class TraceControlTreeModelTest extends TestCase { - - private static final String DIRECTORY = "testfiles"; + + // ------------------------------------------------------------------------ + // Constants + // ------------------------------------------------------------------------ + private static final String TEST_STREAM = "ListInfoTest.cfg"; private static final String SCEN_LIST_INFO_TEST = "ListInfoTest"; @@ -92,7 +94,7 @@ public class TraceControlTreeModelTest extends TestCase { @Before public void setUp() throws Exception { fProxy = new TestRemoteSystemProxy(); - URL location = FileLocator.find(Activator.getDefault().getBundle(), new Path(DIRECTORY + File.separator + TEST_STREAM), null); + URL location = FileLocator.find(Activator.getDefault().getBundle(), new Path(TraceControlTestFacility.DIRECTORY + File.separator + TEST_STREAM), null); File testfile = new File(FileLocator.toFileURL(location).toURI()); fTestFile = testfile.getAbsolutePath(); } @@ -440,6 +442,8 @@ public class TraceControlTreeModelTest extends TestCase { assertEquals(TargetNodeState.DISCONNECTED, node.getTargetNodeState()); assertNotNull(node.getImage()); assertNotSame(connectedImage, node.getImage()); + + node.getParent().removeChild(node); } private void verifySessionGetterSetters(TraceSessionComponent session) { diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstProviderTests.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstProviderTests.java new file mode 100644 index 0000000000..a1b9df6831 --- /dev/null +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstProviderTests.java @@ -0,0 +1,297 @@ +/********************************************************************** + * Copyright (c) 2012 Ericsson + * + * 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: + * Bernd Hufmann - Initial API and implementation + **********************************************************************/ +package org.eclipse.linuxtools.lttng2.ui.tests.control.model.component; + +import java.io.File; +import java.net.URL; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Path; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.CreateChannelDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.CreateSessionDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.DestroyConfirmDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.GetEventInfoDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.service.TestRemoteSystemProxy; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.TraceControlDialogFactory; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TargetNodeState; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEnablement; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEventType; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceLogLevel; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceSessionState; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.BaseEventComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.KernelProviderComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TargetNodeComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceChannelComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceEventComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.UstProviderComponent; +import org.eclipse.linuxtools.lttng2.ui.tests.Activator; +import org.eclipse.rse.core.model.Host; +import org.eclipse.rse.core.model.IHost; +import org.eclipse.rse.internal.core.model.SystemProfile; +import org.junit.After; +import org.junit.Before; + +/** + * The class TraceControlUstProviderTests contains UST provider handling + * test cases. + */ +@SuppressWarnings("nls") +public class TraceControlUstProviderTests extends TestCase { + + // ------------------------------------------------------------------------ + // Constants + // ------------------------------------------------------------------------ + private static final String TEST_STREAM = "CreateTreeTest.cfg"; + private static final String SCEN_SCENARIO2_TEST = "Scenario2"; + + // ------------------------------------------------------------------------ + // Test data + // ------------------------------------------------------------------------ + private TraceControlTestFacility fFacility; + private TestRemoteSystemProxy fProxy; + private String fTestFile; + + // ------------------------------------------------------------------------ + // Static methods + // ------------------------------------------------------------------------ + + /** + * Returns test setup used when executing test case stand-alone. + * @return Test setup class + */ + public static Test suite() { + return new ModelImplTestSetup(new TestSuite(TraceControlUstProviderTests.class)); + } + + // ------------------------------------------------------------------------ + // Housekeeping + // ------------------------------------------------------------------------ + + /** + * Perform pre-test initialization. + * + * @throws Exception + * if the initialization fails for some reason + * + */ + @Override + @Before + public void setUp() throws Exception { + fFacility = TraceControlTestFacility.getInstance(); + fProxy = new TestRemoteSystemProxy(); + URL location = FileLocator.find(Activator.getDefault().getBundle(), new Path(TraceControlTestFacility.DIRECTORY + File.separator + TEST_STREAM), null); + File testfile = new File(FileLocator.toFileURL(location).toURI()); + fTestFile = testfile.getAbsolutePath(); + } + + /** + * Perform post-test clean-up. + * + * @throws Exception + * if the clean-up fails for some reason + * + */ + @Override + @After + public void tearDown() throws Exception { + } + + /** + * Run the TraceControlComponent. + */ + public void testUstProviderTree() throws Exception { + + fProxy.setTestFile(fTestFile); + fProxy.setScenario(TraceControlTestFacility.SCEN_INIT_TEST); + + ITraceControlComponent root = TraceControlTestFacility.getInstance().getControlView().getTraceControlRoot(); + + @SuppressWarnings("restriction") + IHost host = new Host(new SystemProfile("myProfile", true)); + host.setHostName("127.0.0.1"); + + TargetNodeComponent node = new TargetNodeComponent("myNode", root, host, fProxy); + root.addChild(node); + + fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); + + fFacility.executeCommand(node, "connect"); + + // Verify that node is connected + assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); + + // Get provider groups + ITraceControlComponent[] groups = node.getChildren(); + assertNotNull(groups); + assertEquals(2, groups.length); + + // Get kernel provider + ITraceControlComponent[] providers = groups[0].getChildren(); + KernelProviderComponent kernelProvider = (KernelProviderComponent) providers[0]; + + // Get kernel provider events and select 2 events + ITraceControlComponent[] events = kernelProvider.getChildren(); + assertNotNull(events); + assertEquals(3, events.length); + + BaseEventComponent baseEventInfo0 = (BaseEventComponent) events[0]; + BaseEventComponent baseEventInfo1 = (BaseEventComponent) events[1]; + + // Initialize dialog implementations for command execution + TraceControlDialogFactory.getInstance().setCreateSessionDialog(new CreateSessionDialogStub()); + TraceControlDialogFactory.getInstance().setGetEventInfoDialog(new GetEventInfoDialogStub()); + TraceControlDialogFactory.getInstance().setConfirmDialog(new DestroyConfirmDialogStub()); + + // ------------------------------------------------------------------------ + // Create session + // ------------------------------------------------------------------------ + // Initialize session handling scenario + fProxy.setScenario(TraceControlTestFacility.SCEN_SCENARIO_SESSION_HANDLING_WITH_PATH); + + CreateSessionDialogStub sessionDialogStub = new CreateSessionDialogStub(); + sessionDialogStub.setSessionPath("/home/user/temp"); + TraceControlDialogFactory.getInstance().setCreateSessionDialog(sessionDialogStub); + + TraceSessionComponent session = fFacility.createSession(groups[1]); + + // Verify that session was created + assertNotNull(session); + assertEquals("mysession", session.getName()); + assertEquals("/home/user/temp", session.getSessionPath()); + assertEquals(TraceSessionState.INACTIVE, session.getSessionState()); + + // ------------------------------------------------------------------------ + // Create Channel on UST global domain + // ------------------------------------------------------------------------ + fProxy.setScenario(SCEN_SCENARIO2_TEST); + CreateChannelDialogStub channelDialogStub = new CreateChannelDialogStub(); + channelDialogStub.setIsKernel(false); + channelDialogStub.getChannelInfo().setOverwriteMode(false); + channelDialogStub.getChannelInfo().setSwitchTimer(200); + channelDialogStub.getChannelInfo().setReadTimer(100); + channelDialogStub.getChannelInfo().setNumberOfSubBuffers(2); + TraceControlDialogFactory.getInstance().setCreateChannelDialog(channelDialogStub); + + fFacility.executeCommand(session, "createChannelOnSession"); + + // Verify that UST domain was created + ITraceControlComponent[] domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + assertEquals("UST global", domains[0].getName()); + + // Verify that channel was created with correct data + ITraceControlComponent[]channels = domains[0].getChildren(); + assertNotNull(channels); + assertEquals(1, channels.length); + + assertTrue(channels[0] instanceof TraceChannelComponent); + TraceChannelComponent channel = (TraceChannelComponent) channels[0]; + assertEquals("mychannel", channel.getName()); + assertEquals(2, channel.getNumberOfSubBuffers()); + assertEquals("mmap()", channel.getOutputType()); + assertEquals(false, channel.isOverwriteMode()); + assertEquals(100, channel.getReadTimer()); + assertEquals(TraceEnablement.ENABLED, channel.getState()); + assertEquals(16384, channel.getSubBufferSize()); + assertEquals(200, channel.getSwitchTimer()); + + // ------------------------------------------------------------------------ + // Enable event on default channel on created session above + // ------------------------------------------------------------------------ + // Get first UST provider + UstProviderComponent ustProvider = (UstProviderComponent) providers[1]; + assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", ustProvider.getName()); + assertEquals(9379, ustProvider.getPid()); + + // Get events + events = ustProvider.getChildren(); + assertNotNull(events); + assertEquals(2, events.length); + + baseEventInfo0 = (BaseEventComponent) events[0]; + baseEventInfo1 = (BaseEventComponent) events[1]; + + ITraceControlComponent[] ustSelection = { baseEventInfo0, baseEventInfo1 }; + + fFacility.executeCommand(ustSelection, "assign.event"); + + // verify that events were created under the channel + // Note that domain and channel has to be re-read because the tree is re-created + + domains = session.getChildren(); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + + ITraceControlComponent[] ustEvents = channels[0].getChildren(); + assertEquals(2, ustEvents.length); + + TraceEventComponent event = (TraceEventComponent) ustEvents[0]; + assertEquals("ust_tests_hello:tptest_sighandler", event.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + event = (TraceEventComponent) ustEvents[1]; + assertEquals("ust_tests_hello:tptest", ustEvents[1].getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Disable event components + // ------------------------------------------------------------------------ + fFacility.executeCommand(event, "disableEvent"); + + assertEquals(TraceEnablement.DISABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Enable event component + // ------------------------------------------------------------------------ + fFacility.executeCommand(event, "enableEvent"); + + // Verify event state + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Destroy session + // ------------------------------------------------------------------------ + + // Initialize session handling scenario + fProxy.setScenario(TraceControlTestFacility.SCEN_SCENARIO_SESSION_HANDLING); + + fFacility.destroySession(session); + + // Verify that no more session components exist + assertEquals(0, groups[1].getChildren().length); + + //------------------------------------------------------------------------- + // Disconnect node + //------------------------------------------------------------------------- + fFacility.executeCommand(node, "disconnect"); + assertEquals(TargetNodeState.DISCONNECTED, node.getTargetNodeState()); + + //------------------------------------------------------------------------- + // Delete node + //------------------------------------------------------------------------- + fFacility.executeCommand(node, "delete"); + assertEquals(0,fFacility.getControlView().getTraceControlRoot().getChildren().length); + } +} \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstSessionTests.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstSessionTests.java new file mode 100644 index 0000000000..c47e49b6fe --- /dev/null +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstSessionTests.java @@ -0,0 +1,549 @@ +/********************************************************************** + * Copyright (c) 2012 Ericsson + * + * 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: + * Bernd Hufmann - Initial API and implementation + **********************************************************************/ +package org.eclipse.linuxtools.lttng2.ui.tests.control.model.component; + +import java.io.File; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Path; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.CreateChannelDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.CreateSessionDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.DestroyConfirmDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.EnableEventsDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.dialogs.GetEventInfoDialogStub; +import org.eclipse.linuxtools.internal.lttng2.stubs.service.TestRemoteSystemProxy; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.TraceControlDialogFactory; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.LogLevelType; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TargetNodeState; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEnablement; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEventType; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceLogLevel; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceSessionState; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.ChannelInfo; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TargetNodeComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceChannelComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceEventComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionComponent; +import org.eclipse.linuxtools.lttng2.ui.tests.Activator; +import org.eclipse.rse.core.model.Host; +import org.eclipse.rse.core.model.IHost; +import org.eclipse.rse.internal.core.model.SystemProfile; +import org.junit.After; +import org.junit.Before; + +/** + * The class TraceControlUstSessionTests contains UST session/channel/event + * handling test cases. + */ +@SuppressWarnings("nls") +public class TraceControlUstSessionTests extends TestCase { + + // ------------------------------------------------------------------------ + // Constants + // ------------------------------------------------------------------------ + private static final String TEST_STREAM = "CreateTreeTest.cfg"; + private static final String SCEN_SCENARIO4_TEST = "Scenario4"; + + // ------------------------------------------------------------------------ + // Test data + // ------------------------------------------------------------------------ + private TraceControlTestFacility fFacility; + private TestRemoteSystemProxy fProxy; + private String fTestFile; + + // ------------------------------------------------------------------------ + // Static methods + // ------------------------------------------------------------------------ + + /** + * Returns test setup used when executing test case stand-alone. + * @return Test setup class + */ + public static Test suite() { + return new ModelImplTestSetup(new TestSuite(TraceControlUstSessionTests.class)); + } + + // ------------------------------------------------------------------------ + // Housekeeping + // ------------------------------------------------------------------------ + + /** + * Perform pre-test initialization. + * + * @throws Exception + * if the initialization fails for some reason + * + */ + @Override + @Before + public void setUp() throws Exception { + fFacility = TraceControlTestFacility.getInstance(); + fProxy = new TestRemoteSystemProxy(); + URL location = FileLocator.find(Activator.getDefault().getBundle(), new Path(TraceControlTestFacility.DIRECTORY + File.separator + TEST_STREAM), null); + File testfile = new File(FileLocator.toFileURL(location).toURI()); + fTestFile = testfile.getAbsolutePath(); + } + + /** + * Perform post-test clean-up. + * + * @throws Exception + * if the clean-up fails for some reason + * + */ + @Override + @After + public void tearDown() throws Exception { + } + + /** + * Run the TraceControlComponent. + */ + public void testTraceSessionTree() throws Exception { + + fProxy.setTestFile(fTestFile); + fProxy.setScenario(TraceControlTestFacility.SCEN_INIT_TEST); + + ITraceControlComponent root = TraceControlTestFacility.getInstance().getControlView().getTraceControlRoot(); + + @SuppressWarnings("restriction") + IHost host = new Host(new SystemProfile("myProfile", true)); + host.setHostName("127.0.0.1"); + + TargetNodeComponent node = new TargetNodeComponent("myNode", root, host, fProxy); + + root.addChild(node); + node.connect(); + + fFacility.waitForJobs(); + + // Verify that node is connected + assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); + + // Get provider groups + ITraceControlComponent[] groups = node.getChildren(); + assertNotNull(groups); + assertEquals(2, groups.length); + + // Initialize dialog implementations for command execution + TraceControlDialogFactory.getInstance().setCreateSessionDialog(new CreateSessionDialogStub()); + TraceControlDialogFactory.getInstance().setGetEventInfoDialog(new GetEventInfoDialogStub()); + TraceControlDialogFactory.getInstance().setConfirmDialog(new DestroyConfirmDialogStub()); + + // Initialize session handling scenario + fProxy.setScenario(TraceControlTestFacility.SCEN_SCENARIO_SESSION_HANDLING); + + // ------------------------------------------------------------------------ + // Create session + // ------------------------------------------------------------------------ + TraceSessionComponent session = fFacility.createSession(groups[1]); + + // Verify that session was created + assertNotNull(session); + assertEquals("mysession", session.getName()); + assertEquals("/home/user/lttng-traces/mysession-20120314-132824", session.getSessionPath()); + assertEquals(TraceSessionState.INACTIVE, session.getSessionState()); + + // Initialize scenario + fProxy.setScenario(SCEN_SCENARIO4_TEST); + + // ------------------------------------------------------------------------ + // Enable default channel on created session above + // ------------------------------------------------------------------------ + CreateChannelDialogStub channelStub = new CreateChannelDialogStub(); + channelStub.setIsKernel(false); + TraceControlDialogFactory.getInstance().setCreateChannelDialog(channelStub); + + fFacility.executeCommand(session, "createChannelOnSession"); + + // Verify that Kernel domain was created + ITraceControlComponent[] domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + assertEquals("UST global", domains[0].getName()); + + // Verify that channel was created with correct data + ITraceControlComponent[] channels = domains[0].getChildren(); + assertNotNull(channels); + assertEquals(1, channels.length); + + assertTrue(channels[0] instanceof TraceChannelComponent); + TraceChannelComponent channel = (TraceChannelComponent) channels[0]; + assertEquals("mychannel", channel.getName()); + assertEquals(4, channel.getNumberOfSubBuffers()); + assertEquals("mmap()", channel.getOutputType()); + assertEquals(true, channel.isOverwriteMode()); + assertEquals(200, channel.getReadTimer()); + assertEquals(TraceEnablement.ENABLED, channel.getState()); + assertEquals(16384, channel.getSubBufferSize()); + assertEquals(100, channel.getSwitchTimer()); + + // ------------------------------------------------------------------------ + // Enable channel on domain + // ------------------------------------------------------------------------ + ChannelInfo info = (ChannelInfo)channelStub.getChannelInfo(); + info.setName("mychannel2"); + info.setOverwriteMode(false); + info.setSubBufferSize(32768); + info.setNumberOfSubBuffers(2); + info.setSwitchTimer(100); + info.setReadTimer(200); + channelStub.setChannelInfo(info); + + fFacility.executeCommand(domains[0], "createChannelOnDomain"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + assertNotNull(channels); + assertEquals(2, channels.length); + + assertTrue(channels[1] instanceof TraceChannelComponent); + channel = (TraceChannelComponent) channels[1]; + assertEquals("mychannel2", channel.getName()); + assertEquals(2, channel.getNumberOfSubBuffers()); + assertEquals("mmap()", channel.getOutputType()); + assertEquals(false, channel.isOverwriteMode()); + assertEquals(200, channel.getReadTimer()); + assertEquals(TraceEnablement.ENABLED, channel.getState()); + assertEquals(32768, channel.getSubBufferSize()); + assertEquals(100, channel.getSwitchTimer()); + + // ------------------------------------------------------------------------ + // Enable event (tracepoint) on session and default channel + // ------------------------------------------------------------------------ + EnableEventsDialogStub eventsDialogStub = new EnableEventsDialogStub(); + eventsDialogStub.setIsTracePoints(true); + List events = new ArrayList(); + events.add("ust_tests_hello:tptest_sighandler"); + eventsDialogStub.setNames(events); + eventsDialogStub.setIsKernel(false); + TraceControlDialogFactory.getInstance().setEnableEventsDialog(eventsDialogStub); + + fFacility.executeCommand(session, "enableEventOnSession"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + assertNotNull(channels); + assertEquals(3, channels.length); + + assertTrue(channels[2] instanceof TraceChannelComponent); + channel = (TraceChannelComponent) channels[2]; + assertEquals("channel0", channel.getName()); + // No need to check parameters of default channel because that has been done in other tests + + ITraceControlComponent[] channel0Events = channel.getChildren(); + assertEquals(1, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + TraceEventComponent event = (TraceEventComponent) channel0Events[0]; + assertEquals("ust_tests_hello:tptest_sighandler", event.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); // TODO + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Enable event (tracepoint) on domain and default channel + // ------------------------------------------------------------------------ + events.clear(); + events.add("ust_tests_hello:tptest"); + eventsDialogStub.setNames(events); + + fFacility.executeCommand(domains[0], "enableEventOnDomain"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[2]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(2, channel0Events.length); + + assertTrue(channel0Events[1] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[1]; + assertEquals("ust_tests_hello:tptest", event.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); // TODO + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Enable event (all tracepoints) on specific channel + // ------------------------------------------------------------------------ + events.clear(); + eventsDialogStub.setNames(events); + eventsDialogStub.setIsAllTracePoints(true); + + fFacility.executeCommand(channels[1], "enableEventOnChannel"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[1]; + // No need to check parameters of default channel because that has been done in other tests + + channel = (TraceChannelComponent) channels[1]; + + channel0Events = channel.getChildren(); + assertEquals(1, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("*", event.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Enable event (wildcard) on specific channel + // ------------------------------------------------------------------------ + events.clear(); + eventsDialogStub.setIsTracePoints(false); + eventsDialogStub.setIsAllTracePoints(false); + eventsDialogStub.setIsWildcard(true); + eventsDialogStub.setWildcard("ust*"); + + fFacility.executeCommand(channels[0], "enableEventOnChannel"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[0]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(1, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("ust*", event.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Enable event (wildcard) on domain + // ------------------------------------------------------------------------ + events.clear(); + eventsDialogStub.setIsTracePoints(false); + eventsDialogStub.setIsAllTracePoints(false); + eventsDialogStub.setIsWildcard(true); + eventsDialogStub.setWildcard("ust*"); + + fFacility.executeCommand(domains[0], "enableEventOnDomain"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[0]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(1, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("ust*", event.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Enable event (wildcard) on session + // ------------------------------------------------------------------------ + events.clear(); + eventsDialogStub.setIsTracePoints(false); + eventsDialogStub.setIsAllTracePoints(false); + eventsDialogStub.setIsWildcard(true); + eventsDialogStub.setWildcard("ust*"); + + fFacility.executeCommand(domains[0], "enableEventOnDomain"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[2]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(4, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("u*", event.getName()); + assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Enable event (loglevel) on domain + // ------------------------------------------------------------------------ + events.clear(); + eventsDialogStub.setIsWildcard(false); + eventsDialogStub.setIsLogLevel(true); + eventsDialogStub.setLogLevelEventName("myevent1"); + eventsDialogStub.setLogLevelType(LogLevelType.LOGLEVEL); + eventsDialogStub.setLogLevel(TraceLogLevel.TRACE_WARNING); + + fFacility.executeCommand(domains[0], "enableEventOnDomain"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[2]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(5, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("myevent1", event.getName()); + assertEquals(TraceLogLevel.TRACE_WARNING, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Enable event (loglevel) on session + // ------------------------------------------------------------------------ + eventsDialogStub.setLogLevelEventName("myevent2"); + eventsDialogStub.setLogLevelType(LogLevelType.LOGLEVEL_ONLY); + eventsDialogStub.setLogLevel(TraceLogLevel.TRACE_DEBUG_FUNCTION); + + fFacility.executeCommand(session, "enableEventOnSession"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[2]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(6, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("myevent2", event.getName()); + assertEquals(TraceLogLevel.TRACE_DEBUG_FUNCTION, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Enable event (loglevel) on channel + // ------------------------------------------------------------------------ + eventsDialogStub.setLogLevelEventName("myevent0"); + eventsDialogStub.setLogLevelType(LogLevelType.LOGLEVEL_ONLY); + eventsDialogStub.setLogLevel(TraceLogLevel.TRACE_DEBUG_FUNCTION); + + fFacility.executeCommand(channels[0], "enableEventOnChannel"); + + // Get Kernel domain component instance + domains = session.getChildren(); + assertNotNull(domains); + assertEquals(1, domains.length); + + // Verify that channel was created with correct data + channels = domains[0].getChildren(); + channel = (TraceChannelComponent) channels[0]; + // No need to check parameters of default channel because that has been done in other tests + + channel0Events = channel.getChildren(); + assertEquals(2, channel0Events.length); + + assertTrue(channel0Events[0] instanceof TraceEventComponent); + + event = (TraceEventComponent) channel0Events[0]; + assertEquals("myevent0", event.getName()); + assertEquals(TraceLogLevel.TRACE_DEBUG_FUNCTION, event.getLogLevel()); + assertEquals(TraceEventType.TRACEPOINT, event.getEventType()); + assertEquals(TraceEnablement.ENABLED, event.getState()); + + // ------------------------------------------------------------------------ + // Destroy session + // ------------------------------------------------------------------------ + // Initialize session handling scenario + fProxy.setScenario(TraceControlTestFacility.SCEN_SCENARIO_SESSION_HANDLING); + + fFacility.destroySession(session); + + // Verify that no more session components exist + assertEquals(0, groups[1].getChildren().length); + + //------------------------------------------------------------------------- + // Disconnect node + //------------------------------------------------------------------------- + fFacility.executeCommand(node, "disconnect"); + assertEquals(TargetNodeState.DISCONNECTED, node.getTargetNodeState()); + + //------------------------------------------------------------------------- + // Delete node + //------------------------------------------------------------------------- + + fFacility.executeCommand(node, "delete"); + + assertEquals(0,fFacility.getControlView().getTraceControlRoot().getChildren().length); + } +} \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/CreateChannelDialogStub.java b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/CreateChannelDialogStub.java new file mode 100644 index 0000000000..187f9cc40e --- /dev/null +++ b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/CreateChannelDialogStub.java @@ -0,0 +1,76 @@ +/********************************************************************** + * Copyright (c) 2012 Ericsson + * + * 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: + * Bernd Hufmann - Initial API and implementation + **********************************************************************/ +package org.eclipse.linuxtools.internal.lttng2.stubs.dialogs; + +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.ICreateChannelDialog; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IChannelInfo; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.ChannelInfo; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent; + +/** + * Create channel dialog stub implementation. + */ +public class CreateChannelDialogStub implements ICreateChannelDialog { + + // ------------------------------------------------------------------------ + // Attributes + // ------------------------------------------------------------------------ + private TraceDomainComponent fDomain; + private ChannelInfo fChannelInfo; + private boolean fIsKernel; + + // ------------------------------------------------------------------------ + // Constructor + // ------------------------------------------------------------------------ + public CreateChannelDialogStub() { + fChannelInfo = new ChannelInfo("mychannel"); //$NON-NLS-1$ + fChannelInfo.setNumberOfSubBuffers(4); + fChannelInfo.setOverwriteMode(true); + fChannelInfo.setReadTimer(200); + fChannelInfo.setSwitchTimer(100); + fChannelInfo.setSubBufferSize(16384); + } + + // ------------------------------------------------------------------------ + // Accessors + // ------------------------------------------------------------------------ + public void setIsKernel(boolean isKernel) { + fIsKernel = isKernel; + } + + @Override + public IChannelInfo getChannelInfo() { + return fChannelInfo; + } + + @Override + public void setDomainComponent(TraceDomainComponent domain) { + fDomain = domain; + if (fDomain != null) { + fIsKernel = fDomain.isKernel(); + } + } + + @Override + public int open() { + return 0; + } + + @Override + public boolean isKernel() { + return fIsKernel; + } + + public void setChannelInfo(ChannelInfo info) { + fChannelInfo = info; + } +} \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/CreateSessionDialogStub.java b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/CreateSessionDialogStub.java new file mode 100644 index 0000000000..5a79cc5b81 --- /dev/null +++ b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/CreateSessionDialogStub.java @@ -0,0 +1,58 @@ +/********************************************************************** + * Copyright (c) 2012 Ericsson + * + * 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: + * Bernd Hufmann - Initial API and implementation + **********************************************************************/ +package org.eclipse.linuxtools.internal.lttng2.stubs.dialogs; + +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.ICreateSessionDialog; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionGroup; + +/** + * Create session dialog stub implementation. + */ +public class CreateSessionDialogStub implements ICreateSessionDialog { + + public String fName = "mysession"; //$NON-NLS-1$ + public String fPath = null; + + + @Override + public String getSessionName() { + return fName; + } + + @Override + public String getSessionPath() { + return fPath; + } + + @Override + public boolean isDefaultSessionPath() { + return fPath == null; + } + + @Override + public void setTraceSessionGroup(TraceSessionGroup group) { + + } + + @Override + public int open() { + return 0; + } + + public void setSessionPath(String path) { + fPath = path; + } + + public void setSessionName(String name) { + fName = name; + } +} diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/DestroyConfirmDialogStub.java b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/DestroyConfirmDialogStub.java new file mode 100644 index 0000000000..d754109688 --- /dev/null +++ b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/DestroyConfirmDialogStub.java @@ -0,0 +1,26 @@ +/********************************************************************** + * Copyright (c) 2012 Ericsson + * + * 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: + * Bernd Hufmann - Initial API and implementation + **********************************************************************/ +package org.eclipse.linuxtools.internal.lttng2.stubs.dialogs; + +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IConfirmDialog; +import org.eclipse.swt.widgets.Shell; + +/** + * A confirmation dialog stub implementation. + */ +public class DestroyConfirmDialogStub implements IConfirmDialog { + + @Override + public boolean openConfirm(Shell parent, String title, String message) { + return true; + } +} \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/EnableEventsDialogStub.java b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/EnableEventsDialogStub.java new file mode 100644 index 0000000000..91715ce90f --- /dev/null +++ b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/EnableEventsDialogStub.java @@ -0,0 +1,222 @@ +/********************************************************************** + * Copyright (c) 2012 Ericsson + * + * 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: + * Bernd Hufmann - Initial API and implementation + **********************************************************************/ +package org.eclipse.linuxtools.internal.lttng2.stubs.dialogs; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableEventsDialog; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.LogLevelType; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceLogLevel; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceProviderGroup; + +/** + * Enable events dialog stub implementation. + */ +public class EnableEventsDialogStub implements IEnableEventsDialog { + + // ------------------------------------------------------------------------ + // Attributes + // ------------------------------------------------------------------------ + private boolean fIsKernel; + private boolean fIsTracePoints; + private boolean fIsAllTracePoints; + private boolean fIsSysCalls; + private boolean fIsDynamicProbe; + private String fProbeEventName; + private String fDynamicProbe; + private boolean fIsFunctionProbe; + private String fFunctionEventName; + private String fFunctionProbe; + private boolean fIsWildcard; + private String fWildcard; + private boolean fIsLogLevel; + private String fLogLevelEventName; + private TraceLogLevel fLogLevel; + private LogLevelType fLogLevelType; + List fNames = new ArrayList(); + + // ------------------------------------------------------------------------ + // Accessors + // ------------------------------------------------------------------------ + public void setIsKernel(boolean isKernel) { + fIsKernel = isKernel; + } + + public void setIsTracePoints(boolean isTracePoints) { + fIsTracePoints = isTracePoints; + } + + public void setIsAllTracePoints(boolean isAllTracePoints) { + fIsAllTracePoints = isAllTracePoints; + } + + public void setIsSysCalls(boolean isSysCalls) { + this.fIsSysCalls = isSysCalls; + } + + public void setIsDynamicProbe(boolean isDynamicProbe) { + fIsDynamicProbe = isDynamicProbe; + } + + public void setProbeEventName(String probeEventName) { + fProbeEventName = probeEventName; + } + + public void setDynamicProbe(String dynamicProbe) { + fDynamicProbe = dynamicProbe; + } + + public void setIsFunctionProbe(boolean isFunctionProbe) { + fIsFunctionProbe = isFunctionProbe; + } + + public void setFunctionEventName(String functionEventName) { + fFunctionEventName = functionEventName; + } + + public void setFunctionProbe(String functionProbe) { + fFunctionProbe = functionProbe; + } + + public void setIsWildcard(boolean isWildcard) { + fIsWildcard = isWildcard; + } + + public void setWildcard(String wildcard) { + fWildcard = wildcard; + } + + public void setIsLogLevel(boolean isLogLevel) { + fIsLogLevel = isLogLevel; + } + + public void setLogLevelEventName(String logLevelEventName) { + fLogLevelEventName = logLevelEventName; + } + + public void setLogLevel(TraceLogLevel logLevel) { + fLogLevel = logLevel; + } + + public void setLogLevelType(LogLevelType logLevelType) { + fLogLevelType = logLevelType; + } + + public void setNames(List names) { + fNames = names; + } + + @Override + public boolean isTracepoints() { + return fIsTracePoints; + } + + @Override + public boolean isAllTracePoints() { + return fIsAllTracePoints; + } + + @Override + public boolean isSysCalls() { + return fIsSysCalls; + } + + @Override + public boolean isAllSysCalls() { + return fIsSysCalls; + } + + @Override + public List getEventNames() { + return fNames; + } + + @Override + public boolean isDynamicProbe() { + return fIsDynamicProbe; + } + + @Override + public String getProbeEventName() { + return fProbeEventName; + } + + @Override + public String getProbeName() { + return fDynamicProbe; + } + + @Override + public boolean isDynamicFunctionProbe() { + return fIsFunctionProbe; + } + + @Override + public String getFunctionEventName() { + return fFunctionEventName; + } + + @Override + public String getFunction() { + return fFunctionProbe; + } + + @Override + public boolean isWildcard() { + return fIsWildcard; + } + + @Override + public String getWildcard() { + return fWildcard; + } + + @Override + public boolean isLogLevel() { + return fIsLogLevel; + } + + @Override + public LogLevelType getLogLevelType() { + return fLogLevelType; + } + + @Override + public TraceLogLevel getLogLevel() { + return fLogLevel; + } + + @Override + public String getLogLevelEventName() { + return fLogLevelEventName; + } + + @Override + public boolean isKernel() { + return fIsKernel; + } + + @Override + public void setTraceProviderGroup(TraceProviderGroup providerGroup) { + } + + @Override + public void setTraceDomainComponent(TraceDomainComponent domain) { + } + + @Override + public int open() { + return 0; + } +} \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/GetEventInfoDialogStub.java b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/GetEventInfoDialogStub.java new file mode 100644 index 0000000000..97597336eb --- /dev/null +++ b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/GetEventInfoDialogStub.java @@ -0,0 +1,49 @@ +/********************************************************************** + * Copyright (c) 2012 Ericsson + * + * 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: + * Bernd Hufmann - Initial API and implementation + **********************************************************************/ +package org.eclipse.linuxtools.internal.lttng2.stubs.dialogs; + +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IGetEventInfoDialog; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceChannelComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionComponent; + +/** + * Get event information dialog stub implementation. + */ +public class GetEventInfoDialogStub implements IGetEventInfoDialog { + + private TraceSessionComponent[] fSessions; + + @Override + public TraceSessionComponent getSession() { + return fSessions[0]; + } + + @Override + public TraceChannelComponent getChannel() { + return null; + } + + @Override + public void setIsKernel(boolean isKernel) { + } + + @Override + public void setSessions(TraceSessionComponent[] sessions) { + fSessions = sessions; + } + + @Override + public int open() { + return 0; + } +} + diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/testfiles/CreateTreeTest.cfg b/org.eclipse.linuxtools.lttng2.ui.tests/testfiles/CreateTreeTest.cfg index 3b087951cb..121d281d45 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/testfiles/CreateTreeTest.cfg +++ b/org.eclipse.linuxtools.lttng2.ui.tests/testfiles/CreateTreeTest.cfg @@ -50,8 +50,8 @@ UST events: ------------- PID: 9379 - Name: /home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello - ust_tests_hello:tptest_sighandler (loglevel: TRACE_DEBUG_MODULE (10)) (type: tracepoint) - ust_tests_hello:tptest (loglevel: TRACE_INFO (6)) (type: tracepoint) + ust_tests_hello:tptest_sighandler (loglevel: TRACE_WARNING (4)) (type: tracepoint) + ust_tests_hello:tptest (loglevel: TRACE_DEBUG_FUNCTION (12)) (type: tracepoint) PID: 4852 - Name: /home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello ust_tests_hello:tptest_sighandler (loglevel: TRACE_WARNING (4)) (type: tracepoint) @@ -61,10 +61,11 @@ PID: 4852 - Name: /home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello #################################################################### -# Scenario: Enable events from kernel provider events +# Scenario: Create and destroy session #################################################################### -Scenario1 +SessionHandling + lttng create mysession @@ -88,6 +89,87 @@ Tracing session mysession: [inactive] + +lttng destroy mysession + + +0 + + +Session mysession destroyed. + + + +lttng start mysession + + +0 + + +Tracing started for session mysession. + + + +lttng stop mysession + + +0 + + +Tracing stopped for session mysession. + + + + +#################################################################### +# Scenario: Create and destroy session +#################################################################### + +SessionHandlingWithPath + + +lttng create mysession -o /home/user/temp + + +0 + + +Session mysession created. +Traces will be written in /home/user/temp + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/temp + + + + +lttng destroy mysession + + +0 + + +Session mysession destroyed. + + + + + +#################################################################### +# Scenario: Enable events from kernel provider events +#################################################################### + +Scenario1 + + lttng enable-event sched_kthread_stop,sched_kthread_stop_ret -k -s mysession --tracepoint @@ -150,17 +232,6 @@ lttng enable-event sched_kthread_stop -k -s mysession -c channel0 --tracepoint kernel event sched_kthread_stop enabled in channel channel0 - - -lttng destroy mysession - - -0 - - -Session mysession destroyed. - - #################################################################### @@ -168,15 +239,15 @@ Session mysession destroyed. #################################################################### Scenario2 + -lttng create mysession -o /home/user/temp +lttng enable-channel mychannel -u -s mysession --subbuf-size 16384 --num-subbuf 2 --switch-timer 200 --read-timer 100 0 -Session mysession created. -Traces will be written in /home/user/temp +UST channel mychannel enabled for session mysession @@ -189,16 +260,34 @@ lttng list mysession Tracing session mysession: [inactive] Trace path: /home/user/temp +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 16384 + number of subbufers: 2 + switch timer interval: 200 + read timer interval: 100 + output: mmap() + + Events: + None + -lttng enable-channel mychannel -u -s mysession --subbuf-size 16384 --num-subbuf 2 --switch-timer 200 --read-timer 100 +lttng enable-event ust_tests_hello:tptest_sighandler,ust_tests_hello:tptest -u -s mysession --tracepoint 0 -UST channel mychannel enabled for session mysession +UST event ust_tests_hello:tptest_sighandler in channel channel0 +UST sched_ust_tests_hello:tptest created in channel channel0 @@ -225,20 +314,84 @@ Channels: read timer interval: 100 output: mmap() + Events: + ust_tests_hello:tptest_sighandler (type: tracepoint) [enabled] + ust_tests_hello:tptest (type: tracepoint) [enabled] + + + + +lttng disable-event ust_tests_hello:tptest -u -s mysession -c mychannel + + +0 + + +kernel event ust_tests_hello:tptest in channel mychannel + + + +lttng enable-event ust_tests_hello:tptest -u -s mysession -c mychannel --tracepoint + + +0 + + +kernel event ust_tests_hello:tptest enabled in channel mychannel + + + + + +Scenario3 + + +lttng enable-channel mychannel -k -s mysession --overwrite --subbuf-size 16384 --num-subbuf 4 --switch-timer 100 --read-timer 200 + + +0 + + +Kernel channel mychannel enabled for session mysession + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + Events: None -lttng enable-event ust_tests_hello:tptest_sighandler,ust_tests_hello:tptest -u -s mysession --tracepoint +lttng enable-channel mychannel2 -k -s mysession --subbuf-size 32768 --num-subbuf 2 --switch-timer 100 --read-timer 200 0 -UST event ust_tests_hello:tptest_sighandler in channel channel0 -UST sched_ust_tests_hello:tptest created in channel channel0 +Kernel channel mychannel2 enabled for session mysession @@ -249,58 +402,1784 @@ lttng list mysession Tracing session mysession: [inactive] - Trace path: /home/user/temp + Trace path: /home/user/lttng-traces/mysession-20120314-132824 -=== Domain: UST global === +=== Domain: Kernel === Channels: ------------- - mychannel: [enabled] Attributes: - overwrite mode: 0 + overwrite mode: 1 subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + None + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 number of subbufers: 2 - switch timer interval: 200 - read timer interval: 100 - output: mmap() + switch timer interval: 100 + read timer interval: 200 + output: splice() Events: - ust_tests_hello:tptest_sighandler (loglevel: TRACE_DEBUG_LINE (13)) (type: tracepoint) [enabled] - ust_tests_hello:tptest (loglevel: TRACE_DEBUG_LINE (13)) (type: tracepoint) [enabled] + None + -lttng disable-event ust_tests_hello:tptest -u -s mysession -c mychannel +lttng disable-channel mychannel,mychannel2 -k -s mysession 0 -kernel event ust_tests_hello:tptest in channel mychannel +Kernel channel mychannel disabled for session mysession +Kernel channel mychannel2 disabled for session mysession -lttng enable-event ust_tests_hello:tptest -u -s mysession -c mychannel --tracepoint +lttng enable-channel mychannel,mychannel2 -k -s mysession 0 -kernel event ust_tests_hello:tptest enabled in channel mychannel +Kernel channel mychannel enabled for session mysession +Kernel channel mychannel2 enabled for session mysession - -lttng destroy mysession +lttng enable-event sched_kthread_stop,sched_kthread_stop_ret -k -s mysession --tracepoint 0 -Session mysession destroyed. +kernel event sched_kthread_stop created in channel channel0 +kernel sched_kthread_stop_ret created in channel channel0 - + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + None + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + None + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event sched_wakeup_new -k -s mysession --tracepoint + + +0 + + +kernel event sched_wakeup_new created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + None + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + None + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event -a -k -s mysession -c mychannel2 --tracepoint + + +0 + + +All kernel event sched_kthread_stop created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + None + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event -a -k -s mysession -c mychannel --syscall + + +0 + + +All kernel system calls are enabled in channel mychannel + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + syscalls (type: syscall) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event -a -k -s mysession --syscall + + +0 + + +All kernel system calls are enabled in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + syscalls (type: syscall) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + syscalls (type: syscall) [enabled] + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event -a -k -s mysession --syscall + + +0 + + +All kernel system calls are enabled in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + syscalls (type: syscall) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + syscalls (type: syscall) [enabled] + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event myevent1 -k -s mysession --probe 0xc0101280 + + +0 + + +kernel event myevent1 created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + syscalls (type: syscall) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + myevent1 (type: probe) [enabled] + addr: 0xc0101280 + syscalls (type: syscall) [enabled] + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event myevent2 -k -s mysession -c channel0 --probe init_post + + +0 + + +kernel event myevent2 created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + syscalls (type: syscall) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + myevent2 (type: probe) [enabled] + offset: 0x0 + symbol: init_post + myevent1 (type: probe) [enabled] + addr: 0xc0101280 + syscalls (type: syscall) [enabled] + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event myevent3 -k -s mysession --probe init_post:0x1000 + + +0 + + +kernel event myevent2 created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + syscalls (type: syscall) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + myevent3 (type: probe) [enabled] + offset: 0x1000 + symbol: init_post + myevent2 (type: probe) [enabled] + offset: 0x0 + symbol: init_post + myevent1 (type: probe) [enabled] + addr: 0xc0101280 + syscalls (type: syscall) [enabled] + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event myevent4 -k -s mysession --function create_dev + + +0 + + +kernel event myevent4 created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + syscalls (type: syscall) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + myevent4 (type: probe) [enabled] + offset: 0x0 + symbol: create_dev + myevent3 (type: probe) [enabled] + offset: 0x1000 + symbol: init_post + myevent2 (type: probe) [enabled] + offset: 0x0 + symbol: init_post + myevent1 (type: probe) [enabled] + addr: 0xc0101280 + syscalls (type: syscall) [enabled] + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event myevent5 -k -s mysession --function create_dev:0x2000 + + +0 + + +kernel event myevent5 created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + syscalls (type: syscall) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + myevent5 (type: probe) [enabled] + offset: 0x2000 + symbol: create_dev + myevent4 (type: probe) [enabled] + offset: 0x0 + symbol: create_dev + myevent3 (type: probe) [enabled] + offset: 0x1000 + symbol: init_post + myevent2 (type: probe) [enabled] + offset: 0x0 + symbol: init_post + myevent1 (type: probe) [enabled] + addr: 0xc0101280 + syscalls (type: syscall) [enabled] + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng enable-event myevent -k -s mysession -c mychannel --function create_dev:0x2000 + + +0 + + +kernel event myevent created in channel mychannel + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + myevent (type: probe) [enabled] + offset: 0x2000 + symbol: create_dev + syscalls (type: syscall) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + myevent5 (type: probe) [enabled] + offset: 0x2000 + symbol: create_dev + myevent4 (type: probe) [enabled] + offset: 0x0 + symbol: create_dev + myevent3 (type: probe) [enabled] + offset: 0x1000 + symbol: init_post + myevent2 (type: probe) [enabled] + offset: 0x0 + symbol: init_post + myevent1 (type: probe) [enabled] + addr: 0xc0101280 + syscalls (type: syscall) [enabled] + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + +lttng list + + +0 + + +Available tracing sessions: + 1) mysession (/home/eedbhu/lttng-traces/mysession-20120321-115617) [inactive] + +Use lttng list for more details + + + +lttng list -k + + +0 + + +Kernel events +------------- + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) + + + + +lttng list -u + + +0 + + +UST events: +------------- + +PID: 9379 - Name: /home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello + ust_tests_hello:tptest_sighandler (loglevel: TRACE_WARNING (4)) (type: tracepoint) + ust_tests_hello:tptest (loglevel: TRACE_DEBUG_FUNCTION (12)) (type: tracepoint) + +PID: 4852 - Name: /home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello + ust_tests_hello:tptest_sighandler (loglevel: TRACE_WARNING (4)) (type: tracepoint) + ust_tests_hello:tptest (loglevel: TRACE_DEBUG_FUNCTION (12)) (type: tracepoint) + + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: Kernel === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + myevent (type: probe) [enabled] + offset: 0x2000 + symbol: create_dev + syscalls (type: syscall) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: splice() + + Events: + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + myevent5 (type: probe) [enabled] + offset: 0x2000 + symbol: create_dev + myevent4 (type: probe) [enabled] + offset: 0x0 + symbol: create_dev + myevent3 (type: probe) [enabled] + offset: 0x1000 + symbol: init_post + myevent2 (type: probe) [enabled] + offset: 0x0 + symbol: init_post + myevent1 (type: probe) [enabled] + addr: 0xc0101280 + syscalls (type: syscall) [enabled] + sched_kthread_stop_ret (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_kthread_stop (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + sched_wakeup_new (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] + + + + + + +Scenario4 + + +lttng enable-channel mychannel -u -s mysession --overwrite --subbuf-size 16384 --num-subbuf 4 --switch-timer 100 --read-timer 200 + + +0 + + +UST channel mychannel enabled for session mysession + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + None + + + + +lttng enable-channel mychannel2 -u -s mysession --subbuf-size 32768 --num-subbuf 2 --switch-timer 100 --read-timer 200 + + +0 + + +UST channel mychannel2 enabled for session mysession + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + None + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + None + + + + +lttng enable-event ust_tests_hello:tptest_sighandler -u -s mysession --tracepoint + + +0 + + +UST event ust_tests_hello:tptest_sighandler created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + None + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + None + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: mmap() + + Events: + ust_tests_hello:tptest_sighandler (type: tracepoint) [enabled] + + + + +lttng enable-event ust_tests_hello:tptest -u -s mysession --tracepoint + + +0 + + +UST event ust_tests_hello:tptest created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + None + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + None + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: mmap() + + Events: + ust_tests_hello:tptest_sighandler (type: tracepoint) [enabled] + ust_tests_hello:tptest (type: tracepoint) [enabled] + + + + +lttng enable-event -a -u -s mysession -c mychannel2 --tracepoint + + +0 + + +All UST events created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + None + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + * (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: mmap() + + Events: + ust_tests_hello:tptest_sighandler (type: tracepoint) [enabled] + ust_tests_hello:tptest (type: tracepoint) [enabled] + + + + +lttng enable-event ust* -u -s mysession -c mychannel --tracepoint + + +0 + + +UST event ust* created in channel mychannel + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + ust* (type: tracepoint) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + * (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: mmap() + + Events: + ust_tests_hello:tptest_sighandler (type: tracepoint) [enabled] + ust_tests_hello:tptest (type: tracepoint) [enabled] + + + + +lttng enable-event ust* -u -s mysession --tracepoint + + +0 + + +UST event ust* created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + ust* (type: tracepoint) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + * (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: mmap() + + Events: + ust* (type: tracepoint) [enabled] + ust_tests_hello:tptest_sighandler (type: tracepoint) [enabled] + ust_tests_hello:tptest (type: tracepoint) [enabled] + + + + +lttng enable-event u* -u -s mysession --tracepoint + + +0 + + +UST event u* created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + ust* (type: tracepoint) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + * (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: mmap() + + Events: + u* (type: tracepoint) [enabled] + ust* (type: tracepoint) [enabled] + ust_tests_hello:tptest_sighandler (type: tracepoint) [enabled] + ust_tests_hello:tptest (type: tracepoint) [enabled] + + + + + +lttng enable-event myevent1 -u -s mysession --loglevel TRACE_WARNING + + +0 + + +UST event myevent1 created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + ust* (type: tracepoint) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + * (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + myevent1 (loglevel: TRACE_WARNING (4)) (type: tracepoint) [enabled] + u* (type: tracepoint) [enabled] + ust* (type: tracepoint) [enabled] + ust_tests_hello:tptest_sighandler (type: tracepoint) [enabled] + ust_tests_hello:tptest (type: tracepoint) [enabled] + + + + +lttng enable-event myevent2 -u -s mysession --loglevel-only TRACE_DEBUG_FUNCTION + + +0 + + +UST event myevent2 created in channel channel0 + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + ust* (type: tracepoint) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + * (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + myevent2 (loglevel: TRACE_DEBUG_FUNCTION (12)) (type: tracepoint) [enabled] + myevent1 (loglevel: TRACE_WARNING (4)) (type: loglevel) [enabled] + u* (type: tracepoint) [enabled] + ust* (type: tracepoint) [enabled] + ust_tests_hello:tptest_sighandler (type: tracepoint) [enabled] + ust_tests_hello:tptest (type: tracepoint) [enabled] + + + + +lttng enable-event myevent0 -u -s mysession -c mychannel --loglevel-only TRACE_DEBUG_FUNCTION + + +0 + + +UST event myevent0 created in channel mychannel + + + +lttng list mysession + + +0 + + +Tracing session mysession: [inactive] + Trace path: /home/user/lttng-traces/mysession-20120314-132824 + +=== Domain: UST global === + +Channels: +------------- +- mychannel: [enabled] + + Attributes: + overwrite mode: 1 + subbufers size: 16384 + number of subbufers: 4 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + myevent0 (loglevel: TRACE_DEBUG_FUNCTION (12)) (type: tracepoint) [enabled] + ust* (type: tracepoint) [enabled] + +- mychannel2: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 32768 + number of subbufers: 2 + switch timer interval: 100 + read timer interval: 200 + output: mmap() + + Events: + * (type: tracepoint) [enabled] + +- channel0: [enabled] + + Attributes: + overwrite mode: 0 + subbufers size: 262144 + number of subbufers: 4 + switch timer interval: 0 + read timer interval: 200 + output: splice() + + Events: + myevent2 (loglevel: TRACE_DEBUG_FUNCTION (12)) (type: tracepoint) [enabled] + myevent1 (loglevel: TRACE_WARNING (4)) (type: loglevel) [enabled] + u* (type: tracepoint) [enabled] + ust* (type: tracepoint) [enabled] + ust_tests_hello:tptest_sighandler (type: tracepoint) [enabled] + ust_tests_hello:tptest (type: tracepoint) [enabled] + + + + + + + diff --git a/org.eclipse.linuxtools.lttng2.ui/plugin.properties b/org.eclipse.linuxtools.lttng2.ui/plugin.properties index 045c232849..21f0793a20 100644 --- a/org.eclipse.linuxtools.lttng2.ui/plugin.properties +++ b/org.eclipse.linuxtools.lttng2.ui/plugin.properties @@ -107,14 +107,14 @@ commands.control.connect=Connect commands.control.connect.description=Connect to Target Node commands.control.disconnect=Disconnect -commands.control.discconnect.description=Disconnect to Target Node +commands.control.disconnect.description=Disconnect to Target Node commands.control.refresh=Refresh commands.control.refresh.description=Refresh Node Configuration commands.control.delete=Delete -commands.control.deleete.description=Delete Target Node +commands.control.delete.description=Delete Target Node commands.control.create.session=Create Session commands.control.create.session.description=Create a Trace Session @@ -146,5 +146,9 @@ commands.control.enable.event.description=Enable Event commands.control.enable.eventOnDomain=Enable Event (default channel) commands.control.enable.eventOnDomain.description=Enable Event on Default Channel +commands.control.enable.eventOnSession=Enable Event (default channel) +commands.control.enable.eventOnSession.description=Enable Event on Default Channel + + commands.control.disable.event=Disable Event commands.control.disable.event.description=Disable Event diff --git a/org.eclipse.linuxtools.lttng2.ui/plugin.xml b/org.eclipse.linuxtools.lttng2.ui/plugin.xml index a078905c00..135a71264f 100644 --- a/org.eclipse.linuxtools.lttng2.ui/plugin.xml +++ b/org.eclipse.linuxtools.lttng2.ui/plugin.xml @@ -123,32 +123,32 @@ + description="%commands.control.enable.eventOnSession.description" + id="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.enableEventOnSession" + name="%commands.control.enable.eventOnSession"> @@ -394,7 +394,7 @@ @@ -448,7 +448,7 @@ @@ -527,7 +527,7 @@ @@ -546,7 +546,7 @@ @@ -565,7 +565,7 @@ @@ -808,7 +808,7 @@ + commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.enableEvent"> @@ -824,7 +824,7 @@ + commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.disableEvent"> @@ -840,7 +840,7 @@ + commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.enableEventOnChannel"> @@ -856,7 +856,7 @@ + commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.enableEventOnDomain"> @@ -871,7 +871,7 @@ + commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.enableEventOnSession"> diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/DisconnectHandler.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/DisconnectHandler.java index 4aedb75e9e..b90b25857f 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/DisconnectHandler.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/DisconnectHandler.java @@ -36,9 +36,7 @@ public class DisconnectHandler extends BaseNodeHandler { public Object execute(ExecutionEvent event) throws ExecutionException { fLock.lock(); try { - ITraceControlComponent root = fTargetNode.getParent(); fTargetNode.disconnect(); - root.removeChild(fTargetNode); } finally { fLock.unlock(); } -- 2.34.1