Add support for LTTng 2.0 command calibrate
authorBernd Hufmann <bhufmann@gmail.com>
Wed, 11 Apr 2012 18:20:32 +0000 (14:20 -0400)
committerBernd Hufmann <bhufmann@gmail.com>
Thu, 12 Apr 2012 18:07:12 +0000 (14:07 -0400)
14 files changed:
org.eclipse.linuxtools.lttng2.ui/icons/elcl16/add-context.gif [new file with mode: 0644]
org.eclipse.linuxtools.lttng2.ui/icons/elcl16/calibrate.gif [new file with mode: 0644]
org.eclipse.linuxtools.lttng2.ui/icons/elcl16/disable.gif [new file with mode: 0644]
org.eclipse.linuxtools.lttng2.ui/icons/elcl16/enable.gif [new file with mode: 0644]
org.eclipse.linuxtools.lttng2.ui/icons/obj16/domain.gif
org.eclipse.linuxtools.lttng2.ui/plugin.properties
org.eclipse.linuxtools.lttng2.ui/plugin.xml
org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/Messages.java
org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/dialogs/AddContextDialog.java
org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/CalibrateHandler.java [new file with mode: 0644]
org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/messages.properties
org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TraceDomainComponent.java
org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/service/ILttngControlService.java
org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/service/LTTngControlService.java

diff --git a/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/add-context.gif b/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/add-context.gif
new file mode 100644 (file)
index 0000000..030eade
Binary files /dev/null and b/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/add-context.gif differ
diff --git a/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/calibrate.gif b/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/calibrate.gif
new file mode 100644 (file)
index 0000000..c984fba
Binary files /dev/null and b/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/calibrate.gif differ
diff --git a/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/disable.gif b/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/disable.gif
new file mode 100644 (file)
index 0000000..f6b9f8a
Binary files /dev/null and b/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/disable.gif differ
diff --git a/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/enable.gif b/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/enable.gif
new file mode 100644 (file)
index 0000000..9cacb96
Binary files /dev/null and b/org.eclipse.linuxtools.lttng2.ui/icons/elcl16/enable.gif differ
index bb2d794614bfa38f0ec4179e4f1849a4d88cbf23..c4a8af418445186dec6bb4f750c13a832181fe76 100644 (file)
Binary files a/org.eclipse.linuxtools.lttng2.ui/icons/obj16/domain.gif and b/org.eclipse.linuxtools.lttng2.ui/icons/obj16/domain.gif differ
index c309391167b6f8e54502e5cdec7f01117f290c4f..dbbe92c7193d2efea2b759d89a96a558d740d87d 100644 (file)
@@ -69,7 +69,7 @@ trace.control.rse.system.type.description=LTTng Trace Control (v2.0 or later)
 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
@@ -84,13 +84,13 @@ commands.control.refresh.description=Refresh Node Configuration
 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
@@ -105,22 +105,29 @@ commands.control.start.description=Start Trace Session
 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
index 772b20ebbad9c02e730892351e88f8deb6a0f87f..31315fc7dd1b52f12d4fb184eb9a109eb5ce3fce 100644 (file)
       </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">
index 00cadc68c1c83079989ff136feb7d8b817eeae40..b885828846e2178eb3054147fb5cd3699a8b2d61 100644 (file)
@@ -70,9 +70,13 @@ final public class Messages extends NLS {
     
     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;
index 18ec7287a90165ff23a7c8de4b5f94cf1c2737c7..a8b00d44fb42faf2801be0eaaaf31a355d6ad397 100644 (file)
@@ -49,7 +49,7 @@ public class AddContextDialog extends Dialog implements IAddContextDialog  {
     /**
      * 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
diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/CalibrateHandler.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/CalibrateHandler.java
new file mode 100644 (file)
index 0000000..552b6a2
--- /dev/null
@@ -0,0 +1,139 @@
+/**********************************************************************
+ * 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;
+    }
+}
index d37aebef38f585819511574f50baaa1115bb000b..e433e95227f7693da09dcde4c3f1642669845940 100644 (file)
@@ -43,9 +43,13 @@ TraceControl_DisableEventsJob=Disabling Events...
 
 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
index c8373395d2e1122c35c7b34ab5c9234619cbae87..3970e21aaf91a368eefadcbb264ce6c89eea7286 100644 (file)
@@ -289,4 +289,21 @@ public class TraceDomainComponent extends TraceControlComponent {
     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);
+    }
 }
index 14a6410a3289b4c5a489378832ae3c013f0570e3..86bf8d22c46556f16329374a454fe26e904d00f5 100644 (file)
@@ -197,5 +197,12 @@ public interface ILttngControlService {
      * @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;
 }
index c471d2f03bef3d0b0056f18d3796c90c80cf4fbf..83c44a081caab83302f858b5b82c4ee4fad1b89d 100644 (file)
@@ -102,7 +102,11 @@ public class LTTngControlService implements ILttngControlService {
      * 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.
@@ -1059,6 +1063,33 @@ public class LTTngControlService implements ILttngControlService {
         }
     }
 
+    /*
+     * (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
     // ------------------------------------------------------------------------
This page took 0.038373 seconds and 5 git commands to generate.