lttng.control: Adding support for the Python domain in the Control view
authorBruno Roy <bruno.roy@ericsson.com>
Wed, 3 Aug 2016 13:28:59 +0000 (09:28 -0400)
committerMatthew Khouzam <matthew.khouzam@ericsson.com>
Fri, 12 Aug 2016 20:22:59 +0000 (16:22 -0400)
Adding the controls for the Python loggers in the Control view. Also
implemented the visualization of those loggers in the Control view.

Change-Id: I59d877e60fc0c9afbd5211e219faa6ba67b8af73
Signed-off-by: Bruno Roy <bruno.roy@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/78506
Reviewed-by: Hudson CI
Reviewed-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Tested-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
16 files changed:
lttng/org.eclipse.tracecompass.lttng2.control.core/src/org/eclipse/tracecompass/internal/lttng2/control/core/model/TracePythonLogLevel.java [new file with mode: 0644]
lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/testfiles/CreateSessionTestLTTng2_8.cfg
lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/testfiles/Profile.cfg
lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/testfiles/CreateSessionTestMi.cfg
lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/testfiles/LTTngServiceMi3Test.cfg
lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/testfiles/LTTngServiceMiTest.cfg
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/EnableLoggersComposite.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/dialogs/GetLoggerInfoDialog.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/BaseEnableEventHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/ChangeLoggerStateHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/messages/Messages.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/messages/messages.properties
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TraceDomainComponent.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/UstProviderComponent.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/service/LTTngControlServiceMI.java

diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.core/src/org/eclipse/tracecompass/internal/lttng2/control/core/model/TracePythonLogLevel.java b/lttng/org.eclipse.tracecompass.lttng2.control.core/src/org/eclipse/tracecompass/internal/lttng2/control/core/model/TracePythonLogLevel.java
new file mode 100644 (file)
index 0000000..200ab03
--- /dev/null
@@ -0,0 +1,93 @@
+/**********************************************************************
+ * Copyright (c) 2016 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:
+ *   Bruno Roy - Initial API and implementation
+ *********************************************************************/
+package org.eclipse.tracecompass.internal.lttng2.control.core.model;
+
+/**
+ * Log Level for Python enumeration.
+ *
+ * @author Bruno Roy
+ */
+@SuppressWarnings("nls")
+public enum TracePythonLogLevel implements ITraceLogLevel{
+
+    // ------------------------------------------------------------------------
+    // Enum definition
+    // ------------------------------------------------------------------------
+    /** Log level critical */
+    PYTHON_CRITICAL("Critical"),
+    /** Log level error */
+    PYTHON_ERROR("Error"),
+    /** Log level warning */
+    PYTHON_WARNING("Warning"),
+    /** Log level info */
+    PYTHON_INFO("Info"),
+    /** Log level debug */
+    PYTHON_DEBUG("Debug"),
+    /** Log level not set */
+    PYTHON_NOTSET("Notset"),
+    /** Log level unknown */
+    LEVEL_UNKNOWN("LEVEL_UNKNOWN");
+
+    // ------------------------------------------------------------------------
+    // Attributes
+    // ------------------------------------------------------------------------
+    /**
+     * Name of enum.
+     */
+    private final String fInName;
+
+    // ------------------------------------------------------------------------
+    // Constuctors
+    // ------------------------------------------------------------------------
+
+    /**
+     * Private constructor
+     *
+     * @param name
+     *            the name of state
+     */
+    private TracePythonLogLevel(String name) {
+        fInName = name;
+    }
+
+    // ------------------------------------------------------------------------
+    // Accessors
+    // ------------------------------------------------------------------------
+
+    @Override
+    public String getInName() {
+        return fInName;
+    }
+
+    // ------------------------------------------------------------------------
+    // Utility
+    // ------------------------------------------------------------------------
+    /**
+     * Return the corresponding {@link TracePythonLogLevel} to String "name"
+     *
+     * @param name
+     *            String to compare to retrieve the good {@link TracePythonLogLevel}
+     * @return the corresponding {@link TracePythonLogLevel}
+     */
+    public static TracePythonLogLevel valueOfString(String name) {
+        if (name == null) {
+            throw new IllegalArgumentException();
+        }
+        for (TracePythonLogLevel tllevel : TracePythonLogLevel.values()) {
+            if (tllevel.name().equals(name)) {
+                return tllevel;
+            }
+        }
+        // No match
+        return LEVEL_UNKNOWN;
+    }
+}
index d911e1a6066738c4794a492003490bb6b0105778..23e28eb54ab61612768e986044207112c0a9ae91 100644 (file)
@@ -62,6 +62,16 @@ lttng --mi xml list -l
 <command xmlns="http://lttng.org/xml/ns/lttng-mi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://lttng.org/xml/ns/lttng-mi http://lttng.org/xml/schemas/lttng-mi/3/lttng-mi-3.0.xsd" schemaVersion="3.0"><name>list</name><output><domains><domain><type>LOG4J</type><buffer_type>PER_PID</buffer_type><pids><pid><id>5600</id><name>java</name><events><event><name>Test</name><type>TRACEPOINT</type><enabled>true</enabled><loglevel>UNKNOWN</loglevel><loglevel_type>ALL</loglevel_type><exclusions/></event></events></pid></pids></domain></domains></output></command>
 </COMMAND_OUTPUT>
 <COMMAND_INPUT>
+lttng --mi xml list -p
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+0
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+<?xml version="1.0" encoding="UTF-8"?>
+<command xmlns="http://lttng.org/xml/ns/lttng-mi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://lttng.org/xml/ns/lttng-mi http://lttng.org/xml/schemas/lttng-mi/3/lttng-mi-3.0.xsd" schemaVersion="3.0"><name>list</name><output><domains><domain><type>PYTHON</type><buffer_type>PER_PID</buffer_type><pids><pid><id>18008</id><name>python3</name><events><event><name>my-logger</name><type>TRACEPOINT</type><enabled>true</enabled><loglevel>PYTHON_NOTSET</loglevel><loglevel_type>ALL</loglevel_type><exclusions/></event></events></pid></pids></domain></domains></output></command>
+</COMMAND_OUTPUT>
+<COMMAND_INPUT>
 lttng --mi xml list
 </COMMAND_INPUT>
 <COMMAND_RESULT>
index 8114912a82c713ec17058fba3946202636693d61..8b93372b678eb8dadd3e11049f41518cfde21963 100644 (file)
@@ -61,6 +61,16 @@ lttng --mi xml list -l
 <command><name>list</name><output><domains><domain><type>LOG4J</type><buffer_type>PER_PID</buffer_type><pids><pid><id>18332</id><name>java</name><events><event><name>Test</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><loglevel>UNKNOWN</loglevel><loglevel_type>ALL</loglevel_type><exclusion>false</exclusion></event></events></pid></pids></domain></domains></output></command>
 </COMMAND_OUTPUT>
 <COMMAND_INPUT>
+lttng --mi xml list -p
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+0
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+<?xml version="1.0" encoding="UTF-8"?>
+<command><name>list</name><output><domains><domain><type>PYTHON</type><buffer_type>PER_PID</buffer_type><pids><pid><id>4940</id><name>python3</name><events><event><name>my-logger</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><loglevel>PYTHON_NOTSET</loglevel><loglevel_type>ALL</loglevel_type><exclusion>false</exclusion></event></events></pid></pids></domain></domains></output></command>
+</COMMAND_OUTPUT>
+<COMMAND_INPUT>
 lttng --mi xml list
 </COMMAND_INPUT>
 <COMMAND_RESULT>
@@ -162,6 +172,16 @@ lttng --mi xml list -l
 <command><name>list</name><output><domains><domain><type>LOG4J</type><buffer_type>PER_PID</buffer_type><pids><pid><id>18332</id><name>java</name><events><event><name>Test</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><loglevel>UNKNOWN</loglevel><loglevel_type>ALL</loglevel_type><exclusion>false</exclusion></event></events></pid></pids></domain></domains></output></command>
 </COMMAND_OUTPUT>
 <COMMAND_INPUT>
+lttng --mi xml list -p
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+0
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+<?xml version="1.0" encoding="UTF-8"?>
+<command><name>list</name><output><domains><domain><type>PYTHON</type><buffer_type>PER_PID</buffer_type><pids><pid><id>4940</id><name>python3</name><events><event><name>my-logger</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><loglevel>PYTHON_NOTSET</loglevel><loglevel_type>ALL</loglevel_type><exclusion>false</exclusion></event></events></pid></pids></domain></domains></output></command>
+</COMMAND_OUTPUT>
+<COMMAND_INPUT>
 lttng --mi xml list
 </COMMAND_INPUT>
 <COMMAND_RESULT>
index 418e1b43f39722e9cbf462718787777b57b64c27..262ba7966cc2959e5cec1b2e8e75844209e632a3 100644 (file)
@@ -305,6 +305,43 @@ lttng --mi xml list -l
     </output>
 </command>
 </COMMAND_OUTPUT>
+<COMMAND_INPUT>
+lttng --mi xml list -p
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+0
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+<?xml version="1.0" encoding="UTF-8"?>
+<command>
+  <name>list</name>
+  <output>
+    <domains>
+      <domain>
+        <type>PYTHON</type>
+        <buffer_type>PER_PID</buffer_type>
+        <pids>
+          <pid>
+            <id>4940</id>
+            <name>python3</name>
+            <events>
+              <event>
+                <name>my-logger</name>
+                <type>TRACEPOINT</type>
+                <enabled>true</enabled>
+                <filter>false</filter>
+                <loglevel>PYTHON_NOTSET</loglevel>
+                <loglevel_type>ALL</loglevel_type>
+                <exclusion>false</exclusion>
+              </event>
+            </events>
+          </pid>
+        </pids>
+      </domain>
+    </domains>
+  </output>
+</command>
+</COMMAND_OUTPUT>
 </SCENARIO>
 
 ####################################################################
index 5064bba33dd8a6f5e7c98db89dc10c3621f900f6..17989db14a9429b31e8f70aac82a435a0237a6bf 100644 (file)
@@ -911,6 +911,42 @@ lttng --mi xml list -l
   </output>
 </command>
 </COMMAND_OUTPUT>
+<COMMAND_INPUT>
+lttng --mi xml list -p
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+0
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+<?xml version="1.0" encoding="UTF-8"?>
+<command xmlns="http://lttng.org/xml/ns/lttng-mi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://lttng.org/xml/ns/lttng-mi http://lttng.org/xml/schemas/lttng-mi/3/lttng-mi-3.0.xsd" schemaVersion="3.0">
+  <name>list</name>
+  <output>
+    <domains>
+      <domain>
+        <type>PYTHON</type>
+        <buffer_type>PER_PID</buffer_type>
+        <pids>
+          <pid>
+            <id>18008</id>
+            <name>python3</name>
+            <events>
+              <event>
+                <name>my-logger</name>
+                <type>TRACEPOINT</type>
+                <enabled>true</enabled>
+                <loglevel>PYTHON_NOTSET</loglevel>
+                <loglevel_type>ALL</loglevel_type>
+                <exclusions />
+              </event>
+            </events>
+          </pid>
+        </pids>
+      </domain>
+    </domains>
+  </output>
+</command>
+</COMMAND_OUTPUT>
 </SCENARIO>
 
 ####################################################################
@@ -998,6 +1034,42 @@ lttng --mi xml list -l
   </output>
 </command>
 </COMMAND_OUTPUT>
+<COMMAND_INPUT>
+lttng --mi xml list -p
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+0
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+<?xml version="1.0" encoding="UTF-8"?>
+<command xmlns="http://lttng.org/xml/ns/lttng-mi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://lttng.org/xml/ns/lttng-mi http://lttng.org/xml/schemas/lttng-mi/3/lttng-mi-3.0.xsd" schemaVersion="3.0">
+  <name>list</name>
+  <output>
+    <domains>
+      <domain>
+        <type>PYTHON</type>
+        <buffer_type>PER_PID</buffer_type>
+        <pids>
+          <pid>
+            <id>18008</id>
+            <name>python3</name>
+            <events>
+              <event>
+                <name>my-logger</name>
+                <type>TRACEPOINT</type>
+                <enabled>true</enabled>
+                <loglevel>PYTHON_NOTSET</loglevel>
+                <loglevel_type>ALL</loglevel_type>
+                <exclusions />
+              </event>
+            </events>
+          </pid>
+        </pids>
+      </domain>
+    </domains>
+  </output>
+</command>
+</COMMAND_OUTPUT>
 </SCENARIO>
 
 ####################################################################
@@ -1223,6 +1295,42 @@ lttng --mi xml list -l
   </output>
 </command>
 </COMMAND_OUTPUT>
+<COMMAND_INPUT>
+lttng --mi xml list -p
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+0
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+<?xml version="1.0" encoding="UTF-8"?>
+<command xmlns="http://lttng.org/xml/ns/lttng-mi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://lttng.org/xml/ns/lttng-mi http://lttng.org/xml/schemas/lttng-mi/3/lttng-mi-3.0.xsd" schemaVersion="3.0">
+  <name>list</name>
+  <output>
+    <domains>
+      <domain>
+        <type>PYTHON</type>
+        <buffer_type>PER_PID</buffer_type>
+        <pids>
+          <pid>
+            <id>18008</id>
+            <name>python3</name>
+            <events>
+              <event>
+                <name>my-logger</name>
+                <type>TRACEPOINT</type>
+                <enabled>true</enabled>
+                <loglevel>PYTHON_NOTSET</loglevel>
+                <loglevel_type>ALL</loglevel_type>
+                <exclusions />
+              </event>
+            </events>
+          </pid>
+        </pids>
+      </domain>
+    </domains>
+  </output>
+</command>
+</COMMAND_OUTPUT>
 </SCENARIO>
 ####################################################################
 # Scenario: Test "lttng create <session>
index 342e999ced1bc34def300be534f721db424363b6..3197353ffe440083db916256a128bd492793964a 100644 (file)
@@ -837,6 +837,43 @@ lttng --mi xml list -l
     </output>
 </command>
 </COMMAND_OUTPUT>
+<COMMAND_INPUT>
+lttng --mi xml list -p
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+0
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+<?xml version="1.0" encoding="UTF-8"?>
+<command>
+  <name>list</name>
+  <output>
+    <domains>
+      <domain>
+        <type>PYTHON</type>
+        <buffer_type>PER_PID</buffer_type>
+        <pids>
+          <pid>
+            <id>4940</id>
+            <name>python3</name>
+            <events>
+              <event>
+                <name>my-logger</name>
+                <type>TRACEPOINT</type>
+                <enabled>true</enabled>
+                <filter>false</filter>
+                <loglevel>PYTHON_NOTSET</loglevel>
+                <loglevel_type>ALL</loglevel_type>
+                <exclusion>false</exclusion>
+              </event>
+            </events>
+          </pid>
+        </pids>
+      </domain>
+    </domains>
+  </output>
+</command>
+</COMMAND_OUTPUT>
 </SCENARIO>
 
 ####################################################################
@@ -923,6 +960,43 @@ lttng --mi xml list -l
     </output>
 </command>
 </COMMAND_OUTPUT>
+<COMMAND_INPUT>
+lttng --mi xml list -p
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+0
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+<?xml version="1.0" encoding="UTF-8"?>
+<command>
+  <name>list</name>
+  <output>
+    <domains>
+      <domain>
+        <type>PYTHON</type>
+        <buffer_type>PER_PID</buffer_type>
+        <pids>
+          <pid>
+            <id>4940</id>
+            <name>python3</name>
+            <events>
+              <event>
+                <name>my-logger</name>
+                <type>TRACEPOINT</type>
+                <enabled>true</enabled>
+                <filter>false</filter>
+                <loglevel>PYTHON_NOTSET</loglevel>
+                <loglevel_type>ALL</loglevel_type>
+                <exclusion>false</exclusion>
+              </event>
+            </events>
+          </pid>
+        </pids>
+      </domain>
+    </domains>
+  </output>
+</command>
+</COMMAND_OUTPUT>
 </SCENARIO>
 
 ####################################################################
@@ -1155,6 +1229,43 @@ lttng --mi xml list -l
     </output>
 </command>
 </COMMAND_OUTPUT>
+<COMMAND_INPUT>
+lttng --mi xml list -p
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+0
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+<?xml version="1.0" encoding="UTF-8"?>
+<command>
+  <name>list</name>
+  <output>
+    <domains>
+      <domain>
+        <type>PYTHON</type>
+        <buffer_type>PER_PID</buffer_type>
+        <pids>
+          <pid>
+            <id>4940</id>
+            <name>python3</name>
+            <events>
+              <event>
+                <name>my-logger</name>
+                <type>TRACEPOINT</type>
+                <enabled>true</enabled>
+                <filter>false</filter>
+                <loglevel>PYTHON_NOTSET</loglevel>
+                <loglevel_type>ALL</loglevel_type>
+                <exclusion>false</exclusion>
+              </event>
+            </events>
+          </pid>
+        </pids>
+      </domain>
+    </domains>
+  </output>
+</command>
+</COMMAND_OUTPUT>
 </SCENARIO>
 ####################################################################
 # Scenario: Test "lttng create <session>
index 4f3b9c971152eb6a430299aacc3fdd2d23d875da..1adb862ed341efbad7e5f71610da0574cfb1579d 100644 (file)
@@ -76,6 +76,10 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
      * The composite with widgets for collecting information about LOG4J events.
      */
     private EnableLoggersComposite fLog4jComposite;
+    /**
+     * The composite with widgets for collecting information about Python events.
+     */
+    private EnableLoggersComposite fPythonComposite;
     /**
      * Radio button for selecting kernel domain.
      */
@@ -92,6 +96,10 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
      * Radio button for selecting LOG4J domain.
      */
     private Button fLog4jButton;
+    /**
+     * Radio button for selecting Python domain.
+     */
+    private Button fPythonButton;
     /**
      * The referenced trace provider group containing the kernel provider and UST
      * provider component which contains a list of available tracepoints.
@@ -135,6 +143,7 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
         case LOG4J:
             return fLog4jComposite.isAllTracePoints();
         case PYTHON:
+            return fPythonComposite.isAllTracePoints();
         case UNKNOWN:
         default:
             return false;
@@ -171,6 +180,7 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
         case LOG4J:
             return fLog4jComposite.isAllTracePoints();
         case PYTHON:
+            return fPythonComposite.isAllTracePoints();
         case UNKNOWN:
         default:
             return false;
@@ -205,6 +215,7 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
         case LOG4J:
             return fLog4jComposite.getEventNames();
         case PYTHON:
+            return fPythonComposite.getEventNames();
         case UNKNOWN:
         default:
             return null;
@@ -287,6 +298,7 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
         case LOG4J:
             return fLog4jComposite.isLogLevel();
         case PYTHON:
+            return fPythonComposite.isLogLevel();
         case UNKNOWN:
         default:
             return false;
@@ -305,6 +317,7 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
         case LOG4J:
             return fLog4jComposite.getLogLevelType();
         case PYTHON:
+            return fPythonComposite.getLogLevelType();
         case UNKNOWN:
         default:
             return null;
@@ -323,6 +336,7 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
         case LOG4J:
             return fLog4jComposite.getLogLevel();
         case PYTHON:
+            return fPythonComposite.getLogLevel();
         case UNKNOWN:
         default:
             return null;
@@ -401,7 +415,7 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
         // ------------------------------------------------------------------------
         Group domainGroup = new Group(fDialogComposite, SWT.SHADOW_NONE);
         domainGroup.setText(Messages.TraceControl_DomainDisplayName);
-        layout = new GridLayout(4, true);
+        layout = new GridLayout(5, true);
         domainGroup.setLayout(layout);
 
         fKernelButton = new Button(domainGroup, SWT.RADIO);
@@ -412,6 +426,8 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
         fJulButton.setText(Messages.TraceControl_JULDomainDisplayName);
         fLog4jButton = new Button(domainGroup, SWT.RADIO);
         fLog4jButton.setText(Messages.TraceControl_LOG4JDomainDisplayName);
+        fPythonButton = new Button(domainGroup, SWT.RADIO);
+        fPythonButton.setText(Messages.TraceControl_PythonDomainDisplayName);
 
         switch (fDomain) {
         case KERNEL:
@@ -427,6 +443,8 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
             fLog4jButton.setSelection(true);
             break;
         case PYTHON:
+            fPythonButton.setSelection(true);
+            break;
         case UNKNOWN:
         default:
             break;
@@ -437,11 +455,13 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
             fUstButton.setEnabled(false);
             fJulButton.setEnabled(false);
             fLog4jButton.setEnabled(false);
+            fPythonButton.setEnabled(false);
         } else if ((fProviderGroup != null) && (!fProviderGroup.hasKernelProvider())) {
             fKernelButton.setEnabled(false);
             fUstButton.setEnabled(true);
             fJulButton.setEnabled(true);
             fLog4jButton.setEnabled(true);
+            fPythonButton.setEnabled(true);
         }
 
         // layout widgets
@@ -460,6 +480,7 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
         fKernelComposite = null;
         fJulComposite = null;
         fLog4jComposite = null;
+        fPythonComposite= null;
 
         switch (fDomain) {
         case KERNEL:
@@ -475,6 +496,8 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
             createLog4jComposite();
             break;
         case PYTHON:
+            createPythonComposite();
+            break;
         case UNKNOWN:
         default:
             break;
@@ -524,7 +547,18 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
             }
         });
 
-        getShell().setMinimumSize(new Point(550, 850));
+        fPythonButton.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                if (fPythonButton.getSelection()) {
+                    disposeAllComposite();
+                    createPythonComposite();
+                    fDialogComposite.layout();
+                }
+            }
+        });
+
+    getShell().setMinimumSize(new Point(550, 850));
 
         return fDialogComposite;
     }
@@ -546,6 +580,8 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
             fDomain = TraceDomainType.JUL;
         } else if (fLog4jButton.getSelection()) {
             fDomain= TraceDomainType.LOG4J;
+        } else if (fPythonButton.getSelection()) {
+            fDomain = TraceDomainType.PYTHON;
         }
 
         // Validate kernel composite in case of kernel domain
@@ -563,11 +599,16 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
             return;
         }
 
-        // Validate LOG4J composite in case of JUL domain
+        // Validate LOG4J composite in case of LOG4J domain
         if (fLog4jComposite != null && !fLog4jComposite.isValid()) {
             return;
         }
 
+        // Validate Python composite in case of Python domain
+        if (fPythonComposite != null && !fPythonComposite.isValid()) {
+            return;
+        }
+
         // validation successful -> call super.okPressed()
         super.okPressed();
     }
@@ -584,6 +625,7 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
         disposeUstComposite();
         disposeJulComposite();
         disposeLog4jComposite();
+        disposePythonComposite();
     }
 
     /**
@@ -622,7 +664,7 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
 
             fUstComposite.createContent();
         }
-    }
+  }
 
     /**
      * Disposes the UST composite (if existing)
@@ -681,4 +723,28 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog  {
             fLog4jComposite = null;
         }
     }
+
+    /**
+     * Creates the Python composite (if not existing)
+     */
+    private void createPythonComposite() {
+        if (fPythonComposite == null) {
+            fPythonComposite = new EnableLoggersComposite(fDialogComposite, SWT.NONE, fProviderGroup, TraceDomainType.PYTHON);
+            GridLayout layout = new GridLayout(1, true);
+            fPythonComposite.setLayout(layout);
+            fPythonComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+            fPythonComposite.createContent();
+        }
+    }
+
+    /**
+     * Disposes the Python composite (if existing)
+     */
+    private void disposePythonComposite() {
+        if (fPythonComposite != null) {
+            fPythonComposite.dispose();
+            fPythonComposite = null;
+        }
+    }
 }
index f527a7f48d0e47e07dc81859e1fb1b16059f0d27..2b47116a160d87a91d452398f9a3d3e48d1cc4ed 100644 (file)
@@ -40,6 +40,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.core.model.LogLevelType;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceJulLogLevel;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLog4jLogLevel;
+import org.eclipse.tracecompass.internal.lttng2.control.core.model.TracePythonLogLevel;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.messages.Messages;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponent;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.BaseLoggerComponent;
@@ -298,6 +299,8 @@ public class EnableLoggersComposite extends Composite implements IBaseEnableUstE
             return TraceJulLogLevel.values();
         case LOG4J:
             return TraceLog4jLogLevel.values();
+        case PYTHON:
+            return TracePythonLogLevel.values();
             //$CASES-OMITTED$
         default:
             return null;
@@ -431,7 +434,8 @@ public class EnableLoggersComposite extends Composite implements IBaseEnableUstE
             int k = 0;
             for (int i = 0; i < levels.length; i++) {
                 if (levels[i] != TraceJulLogLevel.LEVEL_UNKNOWN &&
-                    levels[i] != TraceLog4jLogLevel.LEVEL_UNKNOWN) {
+                    levels[i] != TraceLog4jLogLevel.LEVEL_UNKNOWN &&
+                    levels[i] != TracePythonLogLevel.LEVEL_UNKNOWN) {
                     levelNames[k++] = levels[i].getInName();
                 }
             }
index f07607f2b1c4533bb648017f632efba98b483cd2..8511e213b003cc7ca30fa6fa3c49975f129a6f0c 100644 (file)
@@ -29,6 +29,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainTy
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceJulLogLevel;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLog4jLogLevel;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLogLevel;
+import org.eclipse.tracecompass.internal.lttng2.control.core.model.TracePythonLogLevel;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.ITraceLogLevel;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.Activator;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.messages.Messages;
@@ -112,6 +113,8 @@ public class GetLoggerInfoDialog extends BaseGetInfoDialog implements IGetLogger
 
     @Override
     protected Control createDialogArea(Composite parent) {
+        fLogLevel = null;
+        fLogLevelType = null;
         super.createDialogArea(parent);
         // Main dialog panel
         Composite dialogComposite = new Composite(parent, SWT.NONE);
@@ -152,30 +155,16 @@ public class GetLoggerInfoDialog extends BaseGetInfoDialog implements IGetLogger
         data = new GridData(GridData.FILL_BOTH);
         fLogLevelButton.setLayoutData(data);
 
-        ITraceLogLevel[] levels = null;
         String[] levelNames  = null;
         switch (fLoggerDomain) {
         case JUL:
-            levels = TraceJulLogLevel.values();
-
-            levelNames = new String[levels.length - 1];
-            int k = 0;
-            for (int i = 0; i < levels.length; i++) {
-                if (levels[i] != TraceJulLogLevel.LEVEL_UNKNOWN) {
-                    levelNames[k++] = levels[i].getInName();
-                }
-            }
+            levelNames = findLoglevelNames(TraceJulLogLevel.class);
             break;
         case LOG4J:
-            levels = TraceLog4jLogLevel.values();
-
-            levelNames = new String[levels.length - 1];
-            int l = 0;
-            for (int i = 0; i < levels.length; i++) {
-                if (levels[i] != TraceLog4jLogLevel.LEVEL_UNKNOWN) {
-                    levelNames[l++] = levels[i].getInName();
-                }
-            }
+            levelNames = findLoglevelNames(TraceLog4jLogLevel.class);
+            break;
+        case PYTHON:
+            levelNames = findLoglevelNames(TracePythonLogLevel.class);
             break;
             //$CASES-OMITTED$
         default:
@@ -223,6 +212,9 @@ public class GetLoggerInfoDialog extends BaseGetInfoDialog implements IGetLogger
             case LOG4J:
                 levels = TraceLog4jLogLevel.values();
                 break;
+            case PYTHON:
+                levels = TracePythonLogLevel.values();
+                break;
                 //$CASES-OMITTED$
             default:
                 levels = TraceLogLevel.values();
@@ -246,4 +238,32 @@ public class GetLoggerInfoDialog extends BaseGetInfoDialog implements IGetLogger
         super.okPressed();
     }
 
+    // ------------------------------------------------------------------------
+    // Helper methods
+    // ------------------------------------------------------------------------
+
+    /**
+     * Returns the values of a certain enum type.
+     *
+     * @param enumType
+     *            a value of an enum type, this is to determine the type of the enum
+     * @return an array of String of the values of the enum type
+     */
+    private static String[] findLoglevelNames(Class<? extends ITraceLogLevel> enumType) {
+        ITraceLogLevel[] levels = enumType.getEnumConstants();
+        if (levels == null) {
+            return new String[0];
+        }
+        String[] levelNames = new String[levels.length - 1];
+        int l = 0;
+        for (int i = 0; i < levels.length; i++) {
+            if ((!levels[i].equals(TraceLog4jLogLevel.LEVEL_UNKNOWN)) &&
+                    (!levels[i].equals(TracePythonLogLevel.LEVEL_UNKNOWN)) &&
+                    (!levels[i].equals(TraceJulLogLevel.LEVEL_UNKNOWN))) {
+                levelNames[l++] = levels[i].getInName();
+            }
+        }
+        return levelNames;
+    }
+
 }
index 35943d851ce17a2bb3506bc05ab731f027685917..369ab1aae7a7606490ed6ad0d54500771dec163b 100644 (file)
@@ -238,6 +238,7 @@ public abstract class BaseEnableEventHandler extends BaseControlViewHandler {
                         break;
                     case JUL:
                     case LOG4J:
+                    case PYTHON:
                         eventNames = dialog.getEventNames();
                         if (dialog.isAllEvents()) {
                             eventNames = null;
index 3aad41d4e0d0bfc2128470358f9020724978510f..ac4f11e0c1dc4705a5a998110442c87ccbda4789 100644 (file)
@@ -208,7 +208,7 @@ public abstract class ChangeLoggerStateHandler extends BaseControlViewHandler {
                     // different session or domain they need to be enabled in two different lttng commands. At this moment,
                     // it is simpler to disable the context menu. This issue will be addressed later as an enhancement.
                     if ((!sessionName.equals(logger.getSessionName())) ||
-                        (!domain.getName().equals(logger.getDomain().name()))) {
+                        (!domain.getName().equalsIgnoreCase(logger.getDomain().name()))) {
                         loggers.clear();
                         break;
                     }
index c2c91bf8b46b6e402802bd07f243b3187d1a0e05..48f885cf4fd89e95988cfa3fac577895b5cb342c 100644 (file)
@@ -265,6 +265,7 @@ public final class Messages extends NLS {
     public static String TraceControl_UnknownDomainDisplayName;
     public static String TraceControl_JULDomainDisplayName;
     public static String TraceControl_LOG4JDomainDisplayName;
+    public static String TraceControl_PythonDomainDisplayName;
     public static String TraceControl_AllSessionsDisplayName;
     public static String TraceControl_SessionDisplayName;
     public static String TraceControl_DomainDisplayName;
index 586ffff4e19da5234a4c0158d2682db486633c63..32c0ca61d817b37ddb4542516aaf2a562306cea8 100644 (file)
@@ -250,6 +250,7 @@ TraceControl_ImportDialogStreamedTraceNotificationToggle=Do not warn me again
 TraceControl_KernelDomainDisplayName=Kernel
 TraceControl_JULDomainDisplayName=JUL
 TraceControl_LOG4JDomainDisplayName=LOG4J
+TraceControl_PythonDomainDisplayName=Python
 TraceControl_UstGlobalDomainDisplayName=UST global
 TraceControl_UstDisplayName=UST
 TraceControl_UnknownDomainDisplayName=Unknown domain
index d089fadf3e9bbcfb8f893850b513c1cc2f0439fe..c5cb4609b40e40850fc94da28ed47dd10df2996a 100644 (file)
@@ -85,7 +85,9 @@ public class TraceDomainComponent extends TraceControlComponent {
         }
 
         // Since the loggers are not in a channel, the loggers won't be added by the previous loop
-        if (TraceDomainType.JUL.equals(domainInfo.getDomain()) || TraceDomainType.LOG4J.equals(domainInfo.getDomain())) {
+        if (TraceDomainType.JUL.equals(domainInfo.getDomain()) ||
+            TraceDomainType.LOG4J.equals(domainInfo.getDomain()) ||
+            TraceDomainType.PYTHON.equals(domainInfo.getDomain())) {
             List<ILoggerInfo> loggers = fDomainInfo.getLoggers();
             for (ILoggerInfo loggerInfo : loggers) {
                 TraceLoggerComponent logger = new TraceLoggerComponent(loggerInfo.getName(), this);
index 94622e6d70515025c4771a3c497e76458f9f83da..950c6ec8e52eaf97095669ed685a0291facb60ec 100644 (file)
@@ -66,6 +66,10 @@ public class UstProviderComponent extends TraceControlComponent {
      * UST domain event created by a Java application.
      */
     private static final String LTTNG_LOG4J_EVENT = "lttng_log4j:event"; //$NON-NLS-1$
+    /**
+     * UST domain event created by a Python application.
+     */
+    private static final String LTTNG_PYTHON_EVENT = "lttng_python:event"; //$NON-NLS-1$
 
     // ------------------------------------------------------------------------
     // Attributes
@@ -111,7 +115,8 @@ public class UstProviderComponent extends TraceControlComponent {
                     !events[i].getName().equals(LTTNG_LOG4J_USER_EVENT) &&
                     !events[i].getName().equals(LTTNG_LOG4J_SYS_EVENT) &&
                     !events[i].getName().equals(LTTNG_JUL_EVENT) &&
-                    !events[i].getName().equals(LTTNG_LOG4J_EVENT) ) {
+                    !events[i].getName().equals(LTTNG_LOG4J_EVENT) &&
+                    !events[i].getName().equals(LTTNG_PYTHON_EVENT)) {
                 eventComponents.add(component);
             }
         }
index b1e48c3d4e31e21dc2f7ae4e2c1a064588313842..9099e9bcabff8385d5a7f908ab0b644f2bfe9804 100644 (file)
@@ -53,6 +53,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceEventTyp
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceJulLogLevel;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLog4jLogLevel;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLogLevel;
+import org.eclipse.tracecompass.internal.lttng2.control.core.model.TracePythonLogLevel;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.impl.BaseEventInfo;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.impl.BufferType;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.impl.ChannelInfo;
@@ -393,6 +394,10 @@ public class LTTngControlServiceMI extends LTTngControlService {
             domain = new DomainInfo(Messages.TraceControl_LOG4JDomainDisplayName);
             domain.setDomain(TraceDomainType.LOG4J);
             break;
+        case PYTHON:
+            domain = new DomainInfo(Messages.TraceControl_PythonDomainDisplayName);
+            domain.setDomain(TraceDomainType.PYTHON);
+            break;
         case UNKNOWN:
             domain = new DomainInfo(Messages.TraceControl_UnknownDomainDisplayName);
             domain.setDomain(TraceDomainType.UNKNOWN);
@@ -663,6 +668,7 @@ public class LTTngControlServiceMI extends LTTngControlService {
 
         getUstProviderLoggers(allProviders, TraceDomainType.JUL, monitor);
         getUstProviderLoggers(allProviders, TraceDomainType.LOG4J, monitor);
+        getUstProviderLoggers(allProviders, TraceDomainType.PYTHON, monitor);
 
         return allProviders;
     }
@@ -1017,6 +1023,9 @@ public class LTTngControlServiceMI extends LTTngControlService {
                         case LOG4J:
                             loggerInfo.setLogLevel(TraceLog4jLogLevel.valueOfString(infoNode.getTextContent()));
                             break;
+                        case PYTHON:
+                            loggerInfo.setLogLevel(TracePythonLogLevel.valueOfString(infoNode.getTextContent()));
+                            break;
                             //$CASES-OMITTED$
                         default:
                             break;
This page took 0.039687 seconds and 5 git commands to generate.