From 21c9f630ad45106d9a4cf41e3b8faf4ef308a877 Mon Sep 17 00:00:00 2001 From: Bruno Roy Date: Fri, 19 Aug 2016 13:13:30 -0400 Subject: [PATCH] lttng.control: Disable Java and Python logging for older LTTng versions Only enable the Java logging for LTTng version 2.6 and above and 2.7 and above for the Python logging. Change-Id: Iafe8a36141238590ccfe2a1cb854841c9f42e1ee Signed-off-by: Bruno Roy Reviewed-on: https://git.eclipse.org/r/79365 Reviewed-by: Marc-Andre Laperle Tested-by: Marc-Andre Laperle Reviewed-by: Hudson CI --- .../ui/views/dialogs/EnableEventsDialog.java | 165 ++++++++++-------- .../handlers/BaseEnableEventHandler.java | 5 +- .../views/model/impl/TargetNodeComponent.java | 24 +++ .../views/model/impl/TraceProviderGroup.java | 25 +++ .../views/service/LTTngControlServiceMI.java | 10 +- 5 files changed, 154 insertions(+), 75 deletions(-) diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/dialogs/EnableEventsDialog.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/dialogs/EnableEventsDialog.java index 1adb862ed3..d4823c3f96 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/dialogs/EnableEventsDialog.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/dialogs/EnableEventsDialog.java @@ -415,19 +415,85 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog { // ------------------------------------------------------------------------ Group domainGroup = new Group(fDialogComposite, SWT.SHADOW_NONE); domainGroup.setText(Messages.TraceControl_DomainDisplayName); - layout = new GridLayout(5, true); - domainGroup.setLayout(layout); fKernelButton = new Button(domainGroup, SWT.RADIO); fKernelButton.setText(Messages.TraceControl_KernelDomainDisplayName); fUstButton = new Button(domainGroup, SWT.RADIO); fUstButton.setText(Messages.TraceControl_UstDisplayName); - fJulButton = new Button(domainGroup, SWT.RADIO); - 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); + int nbColumns = 2; + + fKernelButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (fKernelButton.getSelection()) { + disposeAllComposite(); + createKernelComposite(); + fDialogComposite.layout(); + } + } + }); + + fUstButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (fUstButton.getSelection()) { + disposeAllComposite(); + createUstComposite(); + fDialogComposite.layout(); + } + } + }); + + if (fProviderGroup.isJulLoggingSupported()) { + fJulButton = new Button(domainGroup, SWT.RADIO); + fJulButton.setText(Messages.TraceControl_JULDomainDisplayName); + nbColumns++; + fJulButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (fJulButton.getSelection()) { + disposeAllComposite(); + createJulComposite(); + fDialogComposite.layout(); + } + } + }); + } + + if (fProviderGroup.isLog4jLoggingSupported()) { + fLog4jButton = new Button(domainGroup, SWT.RADIO); + fLog4jButton.setText(Messages.TraceControl_LOG4JDomainDisplayName); + nbColumns++; + fLog4jButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (fLog4jButton.getSelection()) { + disposeAllComposite(); + createLog4jComposite(); + fDialogComposite.layout(); + } + } + }); + } + + if (fProviderGroup.isPythonLoggingSupported()) { + fPythonButton = new Button(domainGroup, SWT.RADIO); + fPythonButton.setText(Messages.TraceControl_PythonDomainDisplayName); + nbColumns++; + fPythonButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (fPythonButton.getSelection()) { + disposeAllComposite(); + createPythonComposite(); + fDialogComposite.layout(); + } + } + }); + } + + layout = new GridLayout(nbColumns, true); + domainGroup.setLayout(layout); switch (fDomain) { case KERNEL: @@ -450,20 +516,6 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog { break; } - if (fDomainComponent != null) { - fKernelButton.setEnabled(false); - 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 GridData data = new GridData(GridData.FILL_HORIZONTAL); domainGroup.setLayoutData(data); @@ -503,60 +555,31 @@ public class EnableEventsDialog extends Dialog implements IEnableEventsDialog { break; } - fKernelButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (fKernelButton.getSelection()) { - disposeAllComposite(); - createKernelComposite(); - fDialogComposite.layout(); - } + if (fDomainComponent != null) { + fKernelButton.setEnabled(false); + fUstButton.setEnabled(false); + if (fProviderGroup.isJulLoggingSupported()) { + fJulButton.setEnabled(false); } - }); - - fUstButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (fUstButton.getSelection()) { - disposeAllComposite(); - createUstComposite(); - fDialogComposite.layout(); - } + if (fProviderGroup.isLog4jLoggingSupported()) { + fLog4jButton.setEnabled(false); } - }); - - fJulButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (fJulButton.getSelection()) { - disposeAllComposite(); - createJulComposite(); - fDialogComposite.layout(); - } + if (fProviderGroup.isPythonLoggingSupported()) { + fPythonButton.setEnabled(false); } - }); - - fLog4jButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (fLog4jButton.getSelection()) { - disposeAllComposite(); - createLog4jComposite(); - fDialogComposite.layout(); - } + } else if ((fProviderGroup != null) && (!fProviderGroup.hasKernelProvider())) { + fKernelButton.setEnabled(false); + fUstButton.setEnabled(true); + if (fProviderGroup.isJulLoggingSupported()) { + fJulButton.setEnabled(true); } - }); - - fPythonButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (fPythonButton.getSelection()) { - disposeAllComposite(); - createPythonComposite(); - fDialogComposite.layout(); - } + if (fProviderGroup.isLog4jLoggingSupported()) { + fLog4jButton.setEnabled(true); } - }); + if (fProviderGroup.isPythonLoggingSupported()) { + fPythonButton.setEnabled(true); + } + } getShell().setMinimumSize(new Point(550, 850)); diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/BaseEnableEventHandler.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/BaseEnableEventHandler.java index 6e3a1f5266..2bb21a3d87 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/BaseEnableEventHandler.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/BaseEnableEventHandler.java @@ -167,7 +167,10 @@ public abstract class BaseEnableEventHandler extends BaseControlViewHandler { List providers = node.getChildren(TraceProviderGroup.class); final IEnableEventsDialog dialog = TraceControlDialogFactory.getInstance().getEnableEventsDialog(); - dialog.setTraceProviderGroup((TraceProviderGroup) providers.get(0)); + // If you don't have the Kernel tracer and no UST application there is not going to be any providers + if (providers.size() > 0) { + dialog.setTraceProviderGroup((TraceProviderGroup) providers.get(0)); + } dialog.setTraceDomainComponent(getDomain(param)); if (dialog.open() != Window.OK) { diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TargetNodeComponent.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TargetNodeComponent.java index 3e93ca87d9..9ec77aae8b 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TargetNodeComponent.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TargetNodeComponent.java @@ -300,6 +300,30 @@ public class TargetNodeComponent extends TraceControlComponent implements IRemot public boolean isPerSyscallEventsSupported() { return getControlService().isVersionSupported("2.6.0"); //$NON-NLS-1$ } + /** + * Returns if node supports JUL logging or not + * @return true if it supports JUL logging else false + * + */ + public boolean isJulLoggingSupported() { + return getControlService().isVersionSupported("2.6.0"); //$NON-NLS-1$ + } + /** + * Returns if node supports LOG4J logging or not + * @return true if it supports LOG4J logging else false + * + */ + public boolean isLog4jLoggingSupported() { + return getControlService().isVersionSupported("2.6.0"); //$NON-NLS-1$ + } + /** + * Returns if node supports Python logging or not + * @return true if it supports Python logging else false + * + */ + public boolean isPythonLoggingSupported() { + return getControlService().isVersionSupported("2.7.0"); //$NON-NLS-1$ + } /** * Checks if given version is supported by this ILTTngControlService implementation. diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TraceProviderGroup.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TraceProviderGroup.java index eb600da676..ad502072e3 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TraceProviderGroup.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TraceProviderGroup.java @@ -115,5 +115,30 @@ public class TraceProviderGroup extends TraceControlComponent { public boolean isPerSyscallEventsSupported() { return ((TargetNodeComponent) getParent()).isPerSyscallEventsSupported(); } + + /** + * Returns if node supports JUL logging or not + * @return true if it supports JUL logging else false + * + */ + public boolean isJulLoggingSupported() { + return ((TargetNodeComponent) getParent()).isJulLoggingSupported(); + } + /** + * Returns if node supports LOG4J logging or not + * @return true if it supports LOG4J logging else false + * + */ + public boolean isLog4jLoggingSupported() { + return ((TargetNodeComponent) getParent()).isLog4jLoggingSupported(); + } + /** + * Returns if node supports Python logging or not + * @return true if it supports Python logging else false + * + */ + public boolean isPythonLoggingSupported() { + return ((TargetNodeComponent) getParent()).isPythonLoggingSupported(); + } } diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/service/LTTngControlServiceMI.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/service/LTTngControlServiceMI.java index 283aaad228..141e81cb98 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/service/LTTngControlServiceMI.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/service/LTTngControlServiceMI.java @@ -666,9 +666,13 @@ public class LTTngControlServiceMI extends LTTngControlService { allProviders.add(providerInfo); } - getUstProviderLoggers(allProviders, TraceDomainType.JUL, monitor); - getUstProviderLoggers(allProviders, TraceDomainType.LOG4J, monitor); - getUstProviderLoggers(allProviders, TraceDomainType.PYTHON, monitor); + if (isVersionSupported("2.6")) { //$NON-NLS-1$ + getUstProviderLoggers(allProviders, TraceDomainType.JUL, monitor); + getUstProviderLoggers(allProviders, TraceDomainType.LOG4J, monitor); + if (isVersionSupported("2.7")) { //$NON-NLS-1$ + getUstProviderLoggers(allProviders, TraceDomainType.PYTHON, monitor); + } + } return allProviders; } -- 2.34.1