commands.control.category=LTTng Trace Control Commands
commands.control.category.description=LTTng Trace Control Commands
-commands.control.new=New Connection
+commands.control.new=New Connection...
commands.control.new.description=New Connection to Target Node
commands.control.connect=Connect
commands.control.delete=Delete
commands.control.delete.description=Delete Target Node
-commands.control.create.session=Create Session
+commands.control.create.session=Create Session...
commands.control.create.session.description=Create a Trace Session
-commands.control.destroy.session=Destroy Session
+commands.control.destroy.session=Destroy Session...
commands.control.destroy.session.description=Destroy a Trace Session
-commands.control.create.channel=Create Channel
+commands.control.create.channel=Create Channel...
commands.control.create.channel.description=Create a Trace Channel
commands.control.enable.channel=Enable Channel
commands.control.stop=Stop
commands.control.stop.description=Stop Trace Session
-commands.control.enable.assign.description=Assign Event to Session and Channel and Enable Event
+commands.control.assign.event=Enable Event...
+commands.control.assign.event.description=Assign Event to Session and Channel and Enable Event
commands.control.enable.event=Enable Event
commands.control.enable.event.description=Enable Event
-commands.control.enable.eventOnDomain=Enable Event (default channel)
+commands.control.enable.eventOnChannel=Enable Event...
+commands.control.enable.eventOnChannel.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=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
-commands.control.add.context=Add Context
+commands.control.add.context=Add Context...
commands.control.add.context.description=Add Context to Channel(s) and/or Event(s)
-commands.control.import=Import
+commands.control.import=Import...
commands.control.import.description=Import Traces to LTTng Project
+
+commands.control.calibrate=Calibrate
+commands.control.calibrate.description=Quantify LTTng overhead
</command>
<command
categoryId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.category"
- description="%commands.control.enable.assign.description"
+ description="%commands.control.assign.event.description"
id="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.assign.event"
- name="%commands.control.enable.event">
+ name="%commands.control.assign.event">
</command>
<command
categoryId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.category"
</command>
<command
categoryId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.category"
- description="%commands.control.enable.event.description"
+ description="%commands.control.enable.eventOnChannel.description"
id="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.enableEventOnChannel"
- name="%commands.control.enable.event">
+ name="%commands.control.enable.eventOnChannel">
</command>
<command
categoryId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.category"
name="%commands.control.import">
</command>
+ <command
+ categoryId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.category"
+ description="%commands.control.calibrate.description"
+ id="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.calibrate"
+ name="%commands.control.calibrate">
+ </command>
</extension>
<extension
</command>
<command
commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.enableChannel"
- icon="icons/elcl16/edit.gif"
+ icon="icons/elcl16/enable.gif"
label="%commands.control.enable.channel"
style="push">
<visibleWhen
</command>
<command
commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.disableChannel"
- icon="icons/elcl16/edit.gif"
+ icon="icons/elcl16/disable.gif"
label="%commands.control.disable.channel"
style="push">
<visibleWhen
<command
commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.assign.event"
- icon="icons/elcl16/edit.gif"
- label="%commands.control.enable.event"
+ icon="icons/elcl16/enable.gif"
+ label="%commands.control.assign.event"
style="push">
<visibleWhen
checkEnabled="false">
<command
commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.enableEvent"
- icon="icons/elcl16/edit.gif"
+ icon="icons/elcl16/enable.gif"
label="%commands.control.enable.event"
style="push">
<visibleWhen
<command
commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.disableEvent"
- icon="icons/elcl16/edit.gif"
+ icon="icons/elcl16/disable.gif"
label="%commands.control.disable.event"
style="push">
<visibleWhen
<command
commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.enableEventOnChannel"
icon="icons/elcl16/edit.gif"
- label="%commands.control.enable.event"
+ label="%commands.control.enable.eventOnChannel"
style="push">
<visibleWhen
checkEnabled="false">
</command>
<command
commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.addContextOnDomain"
- icon="icons/elcl16/edit.gif"
+ icon="icons/elcl16/add-context.gif"
label="%commands.control.add.context"
style="push">
<visibleWhen
</command>
<command
commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.addContextOnChannel"
- icon="icons/elcl16/edit.gif"
+ icon="icons/elcl16/add-context.gif"
label="%commands.control.add.context"
style="push">
<visibleWhen
</command>
<command
commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.addContextOnEvent"
- icon="icons/elcl16/edit.gif"
+ icon="icons/elcl16/add-context.gif"
label="%commands.control.add.context"
style="push">
<visibleWhen
</with>
</visibleWhen>
</command>
+
+ <command
+ commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.calibrate"
+ icon="icons/elcl16/calibrate.gif"
+ label="%commands.control.calibrate"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="activeMenuSelection">
+ <and>
+ <iterate
+ operator="or">
+ <instanceof
+ value="org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent">
+ </instanceof>
+ </iterate>
+ <count
+ value="1">
+ </count>
+ </and>
+ </with>
+ </visibleWhen>
+ </command>
+
</menuContribution>
</extension>
</activeWhen>
</handler>
+ <handler
+ class="org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.CalibrateHandler"
+ commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.calibrate">
+ <activeWhen>
+ <with
+ variable="selection">
+ <iterate
+ operator="or">
+ <instanceof
+ value="org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent">
+ </instanceof>
+ </iterate>
+ </with>
+ </activeWhen>
+ </handler>
+
<handler
class="org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.AddContextOnChannelHandler"
commandId="org.eclipse.linuxtools.internal.lttng2.ui.commands.control.addContextOnChannel">
public static String TraceControl_GetContextJob;
public static String TraceControl_GetContextFailure;
+
public static String TraceControl_AddContextJob;
public static String TraceControl_AddContextFailure;
+ public static String TraceControl_AddCalibrateJob;
+ public static String TraceControl_AddCalibrateFailure;
+
// Dialogs
public static String TraceControl_NewDialogTitle;
public static String TraceControl_NewNodeExistingConnectionGroupName;
/**
* The icon file for this dialog box.
*/
- public static final String ADD_CONTEXT_ICON_FILE = "icons/elcl16/edit.gif"; //$NON-NLS-1$
+ public static final String ADD_CONTEXT_ICON_FILE = "icons/elcl16/add-context.gif"; //$NON-NLS-1$
// ------------------------------------------------------------------------
// Attributes
--- /dev/null
+/**********************************************************************
+ * 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.ui.views.control.handlers;
+
+import java.util.Iterator;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.linuxtools.internal.lttng2.ui.Activator;
+import org.eclipse.linuxtools.internal.lttng2.ui.views.control.ControlView;
+import org.eclipse.linuxtools.internal.lttng2.ui.views.control.Messages;
+import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent;
+import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionComponent;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * <b><u>CalibrateHandler</u></b>
+ * <p>
+ * Command handler implementation to execute command calibrate to quantify LTTng overhead.
+ * </p>
+ */
+public class CalibrateHandler extends BaseControlViewHandler {
+
+ // ------------------------------------------------------------------------
+ // Attributes
+ // ------------------------------------------------------------------------
+ /**
+ * The command execution parameter.
+ */
+ protected DomainCommandParameter fParam = null;
+
+ // ------------------------------------------------------------------------
+ // Operations
+ // ------------------------------------------------------------------------
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+
+ final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+
+ if (window == null) {
+ return false;
+ }
+ fLock.lock();
+ try {
+ // Make a copy for thread safety
+ final DomainCommandParameter param = fParam.clone();
+
+ Job addJob = new Job(Messages.TraceControl_AddCalibrateJob) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ param.getDomain().calibrate(monitor);
+ } catch (ExecutionException e) {
+ return new Status(Status.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_AddCalibrateFailure, e);
+ }
+
+ return Status.OK_STATUS;
+ }
+ };
+ addJob.setUser(true);
+ addJob.schedule();
+
+ } finally {
+ fLock.unlock();
+ }
+ return Status.OK_STATUS;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ */
+ @Override
+ public boolean isEnabled() {
+
+ // Get workbench page for the Control View
+ IWorkbenchPage page = getWorkbenchPage();
+ if (page == null) {
+ return false;
+ }
+
+ TraceDomainComponent domain = null;
+ TraceSessionComponent session = null;
+
+ // Check if one domain is selected
+ ISelection selection = page.getSelection(ControlView.ID);
+ if (selection instanceof StructuredSelection) {
+ StructuredSelection structered = ((StructuredSelection) selection);
+ for (Iterator<?> iterator = structered.iterator(); iterator.hasNext();) {
+ Object element = (Object) iterator.next();
+ if (element instanceof TraceDomainComponent) {
+ TraceDomainComponent tmpDomain = (TraceDomainComponent) element;
+ session = (TraceSessionComponent) tmpDomain.getParent();
+
+ // Add only TraceDomainComponent whose TraceSessionComponent parent is not destroyed
+ if ((!session.isDestroyed())) {
+ domain = tmpDomain;
+ }
+ }
+ }
+ }
+
+ boolean isEnabled = domain != null;
+
+ fLock.lock();
+ try {
+ fParam = null;
+ if (isEnabled) {
+ fParam = new DomainCommandParameter(session, domain);
+ }
+ } finally {
+ fLock.unlock();
+ }
+
+ return isEnabled;
+ }
+}
TraceControl_GetContextJob=Getting Available Contexts...
TraceControl_GetContextFailure=Command to get available contexts failed
+
TraceControl_AddContextJob=Adding Contexts...
TraceControl_AddContextFailure=Command to add contexts failed
+TraceControl_AddCalibrateJob=Calibrating...
+TraceControl_AddCalibrateFailure=Command to calibrate failed
+
# Dialogs
TraceControl_NewDialogTitle=New Connection
TraceControl_NewNodeExistingConnectionGroupName=Existing Connections
public void addContexts(List<String> contexts, IProgressMonitor monitor) throws ExecutionException {
getControlService().addContexts(getSessionName(), null, null, isKernel(), contexts, monitor);
}
+
+ /**
+ * Executes calibrate command to quantify LTTng overhead.
+ * @throws ExecutionException
+ */
+ public void calibrate() throws ExecutionException {
+ calibrate(new NullProgressMonitor());
+ }
+
+ /**
+ * Executes calibrate command to quantify LTTng overhead.
+ * @param monitor - a progress monitor
+ * @throws ExecutionException
+ */
+ public void calibrate(IProgressMonitor monitor) throws ExecutionException {
+ getControlService().calibrate(isKernel(), monitor);
+ }
}
* @throws ExecutionException
*/
public void addContexts(String sessionName, String channelName, String eventName, boolean isKernel, List<String> contexts, IProgressMonitor monitor) throws ExecutionException;
-
+
+ /**
+ * Executes calibrate command to quantify LTTng overhead.
+ * @param isKernel - a flag for indicating kernel or UST.
+ * @param monitor - a progress monitor
+ * @throws ExecutionException
+ */
+ public void calibrate(boolean isKernel, IProgressMonitor monitor) throws ExecutionException;
}
* Command to add a context to channels and/or events
*/
private final static String COMMAND_ADD_CONTEXT = CONTROL_COMMAND + " add-context "; //$NON-NLS-1$
-
+ /**
+ * Command to execute calibrate command to quantify LTTng overhead
+ */
+ private final static String COMMAND_CALIBRATE = CONTROL_COMMAND + " calibrate "; //$NON-NLS-1$
+
// Command options constants
/**
* Command line option for output path.
}
}
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.service.ILttngControlService#calibrate(boolean, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void calibrate(boolean isKernel, IProgressMonitor monitor) throws ExecutionException {
+// String newSessionName = formatParameter(sessionName);
+ StringBuffer command = new StringBuffer(COMMAND_CALIBRATE);
+//
+// command.append(OPTION_SESSION);
+// command.append(newSessionName);
+
+ if (isKernel) {
+ command.append(OPTION_KERNEL);
+ } else {
+ command.append(OPTION_UST);
+ }
+
+ command.append(OPTION_FUNCTION_PROBE);
+
+ ICommandResult result = fCommandShell.executeCommand(command.toString(), monitor);
+
+ if (isError(result)) {
+ throw new ExecutionException(Messages.TraceControl_CommandError + " " + command + "\n" + formatOutput(result.getOutput())); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
// ------------------------------------------------------------------------
// Helper methods
// ------------------------------------------------------------------------