control: Support for filtering of kernel events
authorBernd Hufmann <Bernd.Hufmann@ericsson.com>
Thu, 10 Dec 2015 21:06:59 +0000 (16:06 -0500)
committerBernd Hufmann <bernd.hufmann@ericsson.com>
Thu, 7 Jan 2016 15:58:14 +0000 (10:58 -0500)
This feature is supported since LTTng Tools v2.7.0.

Change-Id: I1a17d6cc3807050bc15c8dd0eb6a763bbe4fb699
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/63591
Reviewed-by: Hudson CI
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/dialogs/EnableEventsDialog.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/dialogs/EnableKernelEventComposite.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/dialogs/EnableUstEventsComposite.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/dialogs/GetEventInfoDialog.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/dialogs/IEnableKernelEvents.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TargetNodeComponent.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TraceProviderGroup.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TraceSessionComponent.java

index e7f89b78d904e8523ea69cfcfd69489f4780b8db..9de796b560bfceb56a335ae8183a87ad70b09147 100644 (file)
@@ -264,10 +264,10 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
 
     @Override
     public String getFilterExpression() {
-        if (!fIsKernel) {
-            return fUstComposite.getFilterExpression();
+        if (fIsKernel) {
+            return fKernelComposite.getFilterExpression();
         }
-        return null;
+        return fUstComposite.getFilterExpression();
     }
 
     // ------------------------------------------------------------------------
index 2c175f8adbf5daeafb79a2a69e6f7bfef0e674dc..4ae2cae64e6a99234fa4d1511d83e44ee0e0d0d9 100644 (file)
@@ -95,6 +95,10 @@ public class EnableKernelEventComposite extends Composite implements IEnableKern
      * The text field for the dynamic function entry/return probe.
      */
     private Text fFunctionText;
+    /**
+     * The filter text
+     */
+    private Text fFilterText;
     /**
      * The referenced trace provider group containing the kernel provider
      * component which contains a list of available tracepoints.
@@ -140,6 +144,10 @@ public class EnableKernelEventComposite extends Composite implements IEnableKern
      * The dynamic function entry/return probe.
      */
     private String fFunctionString;
+    /**
+     * The filter expression
+     */
+    private String fFilterExpression;
 
     // ------------------------------------------------------------------------
     // Constructors
@@ -219,6 +227,11 @@ public class EnableKernelEventComposite extends Composite implements IEnableKern
         return fFunctionString;
     }
 
+    @Override
+    public String getFilterExpression() {
+        return fFilterExpression;
+    }
+
     // ------------------------------------------------------------------------
     // Operations
     // ------------------------------------------------------------------------
@@ -240,6 +253,9 @@ public class EnableKernelEventComposite extends Composite implements IEnableKern
         // Dynamic Function Probe Group
         createDynamicFunctionPropeGroup();
 
+        // Filter Group
+        createFilterGroup();
+
         // Set default enablements
         setKernelEnablements(KernelGroupEnum.TRACEPOINTS);
     }
@@ -312,6 +328,16 @@ public class EnableKernelEventComposite extends Composite implements IEnableKern
             fFunctionString = fFunctionText.getText();
         }
 
+        // initialize filter with null
+        fFilterExpression = null;
+        if (fProviderGroup.isEventFilteringSupported(true)) {
+            String tempFilter = fFilterText.getText();
+
+            if(!tempFilter.isEmpty() && !tempFilter.matches("\\s*")) { //$NON-NLS-1$
+                fFilterExpression = tempFilter;
+            }
+        }
+
         return true;
     }
 
@@ -551,6 +577,22 @@ public class EnableKernelEventComposite extends Composite implements IEnableKern
         fFunctionText.setEnabled(group == KernelGroupEnum.FUNCTION);
     }
 
+    private void createFilterGroup() {
+        if (fProviderGroup.isEventFilteringSupported(true)) {
+            Group filterMainGroup = new Group(this, SWT.SHADOW_NONE);
+            filterMainGroup.setText(Messages.TraceControl_EnableEventsFilterGroupName);
+            GridLayout layout = new GridLayout(3, false);
+            filterMainGroup.setLayout(layout);
+            GridData data = new GridData(GridData.FILL_HORIZONTAL);
+            filterMainGroup.setLayoutData(data);
+
+            fFilterText = new Text(filterMainGroup, SWT.LEFT);
+            fFilterText.setToolTipText(Messages.TraceControl_EnableEventsFilterTooltip);
+            data = new GridData(GridData.FILL_HORIZONTAL);
+            fFilterText.setLayoutData(data);
+        }
+    }
+
     // ------------------------------------------------------------------------
     // Local classes
     // ------------------------------------------------------------------------
index 637aca8936fb2ec500e8c2613a9c1c97a86c3b7c..c585246223069c86870a5cd2e0a94feba9ec40b7 100644 (file)
@@ -342,7 +342,7 @@ public class EnableUstEventsComposite extends Composite implements IEnableUstEve
 
         // initialize filter with null
         fFilterExpression = null;
-        if (fProviderGroup.isEventFilteringSupported()) {
+        if (fProviderGroup.isEventFilteringSupported(false)) {
             String tempFilter = fFilterText.getText();
 
             if(!tempFilter.isEmpty() && !tempFilter.matches("\\s*")) { //$NON-NLS-1$
@@ -535,7 +535,7 @@ public class EnableUstEventsComposite extends Composite implements IEnableUstEve
     }
 
     void createFilterGroup() {
-        if (fProviderGroup.isEventFilteringSupported()) {
+        if (fProviderGroup.isEventFilteringSupported(false)) {
             Group filterMainGroup = new Group(this, SWT.SHADOW_NONE);
             filterMainGroup.setText(Messages.TraceControl_EnableEventsFilterGroupName);
             GridLayout layout = new GridLayout(3, false);
index 88c156a0c4af8fab8e3e8ae472f234015785b191..59f4046f77842f2ade42a762492fc837d214387d 100644 (file)
@@ -223,7 +223,7 @@ public class GetEventInfoDialog extends Dialog implements IGetEventInfoDialog {
         });
 
         // take first session to test whether events filtering is supported or not
-        if (fSessions[0].isEventFilteringSupported() && !fIsKernel) {
+        if (fSessions[0].isEventFilteringSupported(fIsKernel)) {
             Group filterMainGroup = new Group(dialogComposite, SWT.SHADOW_NONE);
             filterMainGroup.setText(Messages.TraceControl_EnableEventsFilterGroupName);
             layout = new GridLayout(2, false);
@@ -268,7 +268,7 @@ public class GetEventInfoDialog extends Dialog implements IGetEventInfoDialog {
 
         // initialize filter with null
         fFilterExpression = null;
-        if (fSessions[0].isEventFilteringSupported() && !fIsKernel) {
+        if (fSessions[0].isEventFilteringSupported(fIsKernel)) {
             String tempFilter = fFilterText.getText();
 
             if(!tempFilter.isEmpty() && !tempFilter.matches("\\s*")) { //$NON-NLS-1$
index b63979ccec74578be31e3a32e747d3abed2158df..8a09dd96157b45f3bb76d9bf7e97f3d7a8a6b789 100644 (file)
@@ -222,9 +222,13 @@ public class TargetNodeComponent extends TraceControlComponent implements IRemot
 
     /**
      * Returns if node supports filtering of events
+     * @param isKernel - <code>true</code> for kernel provider else <code>false</code>
      * @return <code>true</code> if node supports filtering else <code>false</code>
      */
-    public boolean isEventFilteringSupported() {
+    public boolean isEventFilteringSupported(boolean isKernel) {
+        if (isKernel) {
+            return getControlService().isVersionSupported("2.7.0"); //$NON-NLS-1$
+        }
         return getControlService().isVersionSupported("2.1.0"); //$NON-NLS-1$
     }
 
index 83659bd4d563dac9a0bb7b8522ace2f1d8d4645f..86ec90d416ed02755ce1bc2a031ce53d9a1db0aa 100644 (file)
@@ -99,10 +99,11 @@ public class TraceProviderGroup extends TraceControlComponent {
 
     /**
      * Returns if node supports filtering of events
+     * @param isKernel - <code>true</code> for kernel provider else <code>false</code>
      * @return <code>true</code> if node supports filtering else <code>false</code>
      */
-    public boolean isEventFilteringSupported() {
-        return ((TargetNodeComponent)getParent()).isEventFilteringSupported();
+    public boolean isEventFilteringSupported(boolean isKernel) {
+        return ((TargetNodeComponent)getParent()).isEventFilteringSupported(isKernel);
     }
 }
 
index 92733ea15827c35f90f375a3550ef2baf59fe130..32de99024f45ef65d8a0c4f7a6aff3cb6a2cb027 100644 (file)
@@ -253,10 +253,11 @@ public class TraceSessionComponent extends TraceControlComponent {
 
     /**
      * Returns if node supports filtering of events
+     * @param isKernel - <code>true</code> for kernel provider else <code>false</code>
      * @return <code>true</code> if node supports filtering else <code>false</code>
      */
-    public boolean isEventFilteringSupported() {
-        return ((TargetNodeComponent)getParent().getParent()).isEventFilteringSupported();
+    public boolean isEventFilteringSupported(boolean isKernel) {
+        return ((TargetNodeComponent)getParent().getParent()).isEventFilteringSupported(isKernel);
     }
 
     /**
This page took 0.032407 seconds and 5 git commands to generate.