From e799e5f3d0d6261e862b20fc0b280dc16e34333f Mon Sep 17 00:00:00 2001 From: Simon Delisle Date: Wed, 26 Jun 2013 11:58:39 -0400 Subject: [PATCH] LTTng: Support for LTTng Tools 2.2 Change-Id: Ib87e9e5598f8b7caad42b1e780f8cddb8aeee4d2 Signed-off-by: Simon Delisle Reviewed-on: https://git.eclipse.org/r/14203 Tested-by: Hudson CI Reviewed-by: Bernd Hufmann IP-Clean: Bernd Hufmann Tested-by: Bernd Hufmann --- .../doc/User-Guide.mediawiki | 25 ++- .../doc/images/LTTng2CreateChannelDialog.png | Bin 30182 -> 12554 bytes .../LTTng2CreateChannelDialogFileRotation.png | Bin 0 -> 11924 bytes ...LTTng2CreateChannelDialogMetadataFlush.png | Bin 0 -> 12132 bytes ...LTTng2CreateChannelDialogPerUIDBuffers.png | Bin 0 -> 11966 bytes .../control/model/impl/ChannelInfoTest.java | 30 +++ .../core/control/model/IChannelInfo.java | 52 ++--- .../core/control/model/impl/ChannelInfo.java | 46 +++++ .../service/LTTngControlServiceTest.java | 29 +++ .../dialogs/EnableChannelDialogStub.java | 7 + .../testfiles/LTTngServiceTest.cfg | 41 ++++ .../control/dialogs/EnableChannelDialog.java | 183 ++++++++++++++++-- .../control/dialogs/IEnableChannelDialog.java | 7 + .../handlers/BaseEnableChannelHandler.java | 1 + .../ui/views/control/messages/Messages.java | 8 + .../control/messages/messages.properties | 13 +- .../model/impl/TargetNodeComponent.java | 24 +++ .../control/service/LTTngControlService.java | 49 +++-- .../service/LTTngControlServiceConstants.java | 21 ++ 19 files changed, 483 insertions(+), 53 deletions(-) create mode 100644 org.eclipse.linuxtools.lttng.help/doc/images/LTTng2CreateChannelDialogFileRotation.png create mode 100644 org.eclipse.linuxtools.lttng.help/doc/images/LTTng2CreateChannelDialogMetadataFlush.png create mode 100644 org.eclipse.linuxtools.lttng.help/doc/images/LTTng2CreateChannelDialogPerUIDBuffers.png diff --git a/org.eclipse.linuxtools.lttng.help/doc/User-Guide.mediawiki b/org.eclipse.linuxtools.lttng.help/doc/User-Guide.mediawiki index 05118ac4d4..0c390e5d16 100644 --- a/org.eclipse.linuxtools.lttng.help/doc/User-Guide.mediawiki +++ b/org.eclipse.linuxtools.lttng.help/doc/User-Guide.mediawiki @@ -952,7 +952,7 @@ A dialog box will open for entering information about the channel to be created. [[Image:images/LTTng2CreateChannelDialog.png]] -By default the domain '''Kernel''' is selected and the corresponding default values are shown. To create a UST channel, select '''UST''' under the domain section. To get the default values of UST, then press button '''Default'''. +By default the domain '''Kernel''' is selected. To create a UST channel, select '''UST''' under the domain section. The label in any text box indicates that the default value of the tracer will be configured. To initialize the dialog box press button '''Default'''. If required update the following channel information and then press '''Ok'''. @@ -965,6 +965,29 @@ If required update the following channel information and then press '''Ok'''. Upon successful operation, the requested domain will be created under the session tree node as well as the requested channel will be added under the domain. The channel will be '''ENABLED'''. +==== Trace file rotation ==== + +Since LTTng Tools v2.2.0 it is possible to set the maximum size of trace files and the maximum number of them. These options are located in the same dialog box that is used to enabling channels. + +[[Image:images/LTTng2CreateChannelDialogFileRotation.png]] + +* '''Maximum size of trace files''': The maximum size of trace files +* '''Maximum number of trace files''': The maximum number of trace files + +==== Per UID buffers ==== + +Since LTTng Tools v2.2.0 it is possible to have one buffer per UID for UST traces. It can be activated in the dialog box when enabling channels. + +[[Image:images/LTTng2CreateChannelDialogPerUIDBuffers.png]] + +* '''Per UID buffers''': To activate the per UID buffers option for UST channel only + +==== Periodical flush for metadata ==== + +Since LTTng Tools v2.2.0 it is possible to configure periodical flush for the metadata channel. To set this, use the checkbox '''Configure metadata channel''' then use the switcher timer interval for the interval. + +[[Image:images/LTTng2CreateChannelDialogMetadataFlush.png]] + ==== Enabling Channels On Domain Level ==== Once a domain is available, channels can be enabled directly using the domain. To enable a channel under an existing domain, select the tree node of the relevant domain and press the right mouse button. Then select the '''Enable Channel...''' button of the context-sensitive menu. diff --git a/org.eclipse.linuxtools.lttng.help/doc/images/LTTng2CreateChannelDialog.png b/org.eclipse.linuxtools.lttng.help/doc/images/LTTng2CreateChannelDialog.png index 592c67a2d1fef5a561afd17b2417b713345518a6..c675071b1fb7cf0c996974a3fa509d46922a2bae 100644 GIT binary patch literal 12554 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 literal 30182 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 diff --git a/org.eclipse.linuxtools.lttng.help/doc/images/LTTng2CreateChannelDialogFileRotation.png b/org.eclipse.linuxtools.lttng.help/doc/images/LTTng2CreateChannelDialogFileRotation.png new file mode 100644 index 0000000000000000000000000000000000000000..087cb23bd7620c97b1d5059a35267530ac7ab845 GIT binary patch literal 11924 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 literal 0 HcmV?d00001 diff --git a/org.eclipse.linuxtools.lttng.help/doc/images/LTTng2CreateChannelDialogPerUIDBuffers.png b/org.eclipse.linuxtools.lttng.help/doc/images/LTTng2CreateChannelDialogPerUIDBuffers.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ea6c6e7f449ea847b68708bb78c4f710fcc3db GIT binary patch literal 11966 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 literal 0 HcmV?d00001 diff --git a/org.eclipse.linuxtools.lttng2.core.tests/src/org/eclipse/linuxtools/lttng2/core/tests/control/model/impl/ChannelInfoTest.java b/org.eclipse.linuxtools.lttng2.core.tests/src/org/eclipse/linuxtools/lttng2/core/tests/control/model/impl/ChannelInfoTest.java index 89754b1e5a..0f94c5a40d 100644 --- a/org.eclipse.linuxtools.lttng2.core.tests/src/org/eclipse/linuxtools/lttng2/core/tests/control/model/impl/ChannelInfoTest.java +++ b/org.eclipse.linuxtools.lttng2.core.tests/src/org/eclipse/linuxtools/lttng2/core/tests/control/model/impl/ChannelInfoTest.java @@ -77,6 +77,9 @@ public class ChannelInfoTest { assertEquals("disabled", result.getState().getInName()); assertEquals(0, result.getSubBufferSize()); assertEquals(0, result.getSwitchTimer()); + assertEquals(0, result.getMaxSizeTraceFiles()); + assertEquals(0, result.getMaxNumberTraceFiles()); + assertEquals(false, result.isBuffersUID()); } /** @@ -94,6 +97,9 @@ public class ChannelInfoTest { assertEquals(fChannelInfo1.getState(), channelInfo.getState()); assertEquals(fChannelInfo1.getSwitchTimer(), channelInfo.getSwitchTimer()); assertEquals(fChannelInfo1.getEvents().length, channelInfo.getEvents().length); + assertEquals(fChannelInfo1.getMaxSizeTraceFiles(), channelInfo.getMaxSizeTraceFiles()); + assertEquals(fChannelInfo1.getMaxNumberTraceFiles(), channelInfo.getMaxNumberTraceFiles()); + assertEquals(fChannelInfo1.isBuffersUID(), channelInfo.isBuffersUID()); IEventInfo[] orignalEvents = fChannelInfo1.getEvents(); IEventInfo[] resultEvents = channelInfo.getEvents(); @@ -157,6 +163,9 @@ public class ChannelInfoTest { fixture.setNumberOfSubBuffers(4); fixture.setOutputType("splice()"); fixture.setSubBufferSize(1L); + fixture.setMaxSizeTraceFiles(1024); + fixture.setMaxNumberTraceFiles(20); + fixture.setBuffersUID(true); fixture.addEvent(new EventInfo("event")); long switchTimer = fixture.getSwitchTimer(); @@ -180,6 +189,15 @@ public class ChannelInfoTest { long subBufferSize = fixture.getSubBufferSize(); assertEquals(1L, subBufferSize); + int maxSizeTraceFiles = fixture.getMaxSizeTraceFiles(); + assertEquals(1024, maxSizeTraceFiles); + + int maxNumberTraceFiles = fixture.getMaxNumberTraceFiles(); + assertEquals(20, maxNumberTraceFiles); + + boolean buffersUID = fixture.isBuffersUID(); + assertTrue(buffersUID); + fixture.setSwitchTimer(5L); fixture.setOverwriteMode(false); fixture.setReadTimer(6L); @@ -187,6 +205,9 @@ public class ChannelInfoTest { fixture.setNumberOfSubBuffers(7); fixture.setOutputType("mmap()"); fixture.setSubBufferSize(8L); + fixture.setMaxSizeTraceFiles(4096); + fixture.setMaxNumberTraceFiles(10); + fixture.setBuffersUID(false); switchTimer = fixture.getSwitchTimer(); assertEquals(5L, switchTimer); @@ -208,6 +229,15 @@ public class ChannelInfoTest { subBufferSize = fixture.getSubBufferSize(); assertEquals(8L, subBufferSize); + + maxSizeTraceFiles = fixture.getMaxSizeTraceFiles(); + assertEquals(4096, maxSizeTraceFiles); + + maxNumberTraceFiles = fixture.getMaxNumberTraceFiles(); + assertEquals(10, maxNumberTraceFiles); + + buffersUID = fixture.isBuffersUID(); + assertFalse(buffersUID); } /** diff --git a/org.eclipse.linuxtools.lttng2.core/src/org/eclipse/linuxtools/internal/lttng2/core/control/model/IChannelInfo.java b/org.eclipse.linuxtools.lttng2.core/src/org/eclipse/linuxtools/internal/lttng2/core/control/model/IChannelInfo.java index a048307c63..c4428d66d5 100644 --- a/org.eclipse.linuxtools.lttng2.core/src/org/eclipse/linuxtools/internal/lttng2/core/control/model/IChannelInfo.java +++ b/org.eclipse.linuxtools.lttng2.core/src/org/eclipse/linuxtools/internal/lttng2/core/control/model/IChannelInfo.java @@ -8,6 +8,7 @@ * * Contributors: * Bernd Hufmann - Initial API and implementation + * Simon Delisle - Updated for support of LTTng Tools 2.2 **********************************************************************/ package org.eclipse.linuxtools.internal.lttng2.core.control.model; @@ -29,30 +30,6 @@ public interface IChannelInfo extends ITraceInfo { * Default value for overwrite mode. */ public final static boolean DEFAULT_OVERWRITE_MODE = false; - /** - * Default value for sub-buffer size for a UST channel. - */ - public final static long DEFAULT_SUB_BUFFER_SIZE_UST = 4096L; - /** - * Default value for sub-buffer size for a Kernel channel. - */ - public final static long DEFAULT_SUB_BUFFER_SIZE_KERNEL = 262144L; - /** - * Default value for number of sub-buffer a UST channel. - */ - public final static int DEFAULT_NUMBER_OF_SUB_BUFFERS_UST = 8; - /** - * Default value for number of sub-buffer a Kernel channel. - */ - public final static int DEFAULT_NUMBER_OF_SUB_BUFFERS_KERNEL = 4; - /** - * Default value for number of the switch timer interval. - */ - public final static long DEFAULT_SWITCH_TIMER = 0; - /** - * Default value for number of the read timer interval. - */ - public final static long DEFAULT_READ_TIMER = 200; /** * @return the overwrite mode value. @@ -143,4 +120,31 @@ public interface IChannelInfo extends ITraceInfo { * @param event - event information to add. */ void addEvent(IEventInfo event); + /** + * Sets the maximum size of trace files + * @param maxSizeTraceFiles - maximum size + */ + void setMaxSizeTraceFiles(int maxSizeTraceFiles); + /** + * Sets the maximum number of trace files + * @param maxNumberTraceFiles - maximum number + */ + void setMaxNumberTraceFiles(int maxNumberTraceFiles); + /** + * @return maximum size of trace files + */ + int getMaxSizeTraceFiles(); + /** + * @return maximum number of trace files + */ + int getMaxNumberTraceFiles(); + /** + * Sets per UID buffers + * @param buffersUID - enable or not + */ + void setBuffersUID(boolean buffersUID); + /** + * @return the value of buffersUID (enable or not) + */ + boolean isBuffersUID(); } diff --git a/org.eclipse.linuxtools.lttng2.core/src/org/eclipse/linuxtools/internal/lttng2/core/control/model/impl/ChannelInfo.java b/org.eclipse.linuxtools.lttng2.core/src/org/eclipse/linuxtools/internal/lttng2/core/control/model/impl/ChannelInfo.java index 641d00c961..ccbb390c58 100644 --- a/org.eclipse.linuxtools.lttng2.core/src/org/eclipse/linuxtools/internal/lttng2/core/control/model/impl/ChannelInfo.java +++ b/org.eclipse.linuxtools.lttng2.core/src/org/eclipse/linuxtools/internal/lttng2/core/control/model/impl/ChannelInfo.java @@ -8,6 +8,7 @@ * * Contributors: * Bernd Hufmann - Initial API and implementation + * Simon Delisle - Updated for support of LTTng Tools 2.2 **********************************************************************/ package org.eclipse.linuxtools.internal.lttng2.core.control.model.impl; @@ -64,6 +65,18 @@ public class ChannelInfo extends TraceInfo implements IChannelInfo { * The events information of the channel. */ private final List fEvents = new ArrayList(); + /** + * The maximum size of trace files + */ + private int fMaxSizeTraceFiles; + /** + * The maximum number of trace files + */ + private int fMaxNumberTraceFiles; + /** + * The value of the checkbox per UID buffers + */ + private boolean fIsBuffersUID; // ------------------------------------------------------------------------ @@ -88,6 +101,9 @@ public class ChannelInfo extends TraceInfo implements IChannelInfo { fNumberOfSubBuffers = other.fNumberOfSubBuffers; fSwitchTimer = other.fSwitchTimer; fReadTimer = other.fReadTimer; + fMaxSizeTraceFiles = other.fMaxSizeTraceFiles; + fMaxNumberTraceFiles = other.fMaxNumberTraceFiles; + fIsBuffersUID = other.fIsBuffersUID; fOutputType = (other.fOutputType == null ? null : String.valueOf(other.fOutputType)); fState = other.fState; for (Iterator iterator = other.fEvents.iterator(); iterator.hasNext();) { @@ -293,4 +309,34 @@ public class ChannelInfo extends TraceInfo implements IChannelInfo { output.append(")]"); return output.toString(); } + + @Override + public void setMaxSizeTraceFiles(int maxSizeTraceFiles) { + fMaxSizeTraceFiles = maxSizeTraceFiles; + } + + @Override + public void setMaxNumberTraceFiles(int maxNumberTraceFiles) { + fMaxNumberTraceFiles = maxNumberTraceFiles; + } + + @Override + public int getMaxSizeTraceFiles() { + return fMaxSizeTraceFiles; + } + + @Override + public int getMaxNumberTraceFiles() { + return fMaxNumberTraceFiles; + } + + @Override + public void setBuffersUID(boolean buffersUID) { + fIsBuffersUID = buffersUID; + } + + @Override + public boolean isBuffersUID() { + return fIsBuffersUID; + } } diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/service/LTTngControlServiceTest.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/service/LTTngControlServiceTest.java index dd4881bf2b..1e00346bbb 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/service/LTTngControlServiceTest.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/service/LTTngControlServiceTest.java @@ -830,6 +830,8 @@ public class LTTngControlServiceTest { chanInfo.setReadTimer(100); chanInfo.setSwitchTimer(200); chanInfo.setNumberOfSubBuffers(2); + chanInfo.setMaxNumberTraceFiles(10); + chanInfo.setMaxSizeTraceFiles(0); fService.enableChannels(sessionName, list, true, chanInfo, new NullProgressMonitor()); // Create/enable/configure 1 UST channel @@ -842,6 +844,33 @@ public class LTTngControlServiceTest { chanInfo.setReadTimer(200); chanInfo.setSwitchTimer(100); chanInfo.setNumberOfSubBuffers(1); + chanInfo.setMaxNumberTraceFiles(20); + chanInfo.setMaxSizeTraceFiles(0); + fService.enableChannels(sessionName, list, false, chanInfo, new NullProgressMonitor()); + + } catch (ExecutionException e) { + fail(e.toString()); + } + } + + @Test + public void testCreateChannelUIDBuffer() { + try { + String sessionName = "mysession2"; + List list = new ArrayList(); + String USTChannel = "ustChannel"; + list.add(USTChannel); + fShell.setScenario(SCEN_CHANNEL_HANDLING); + + ChannelInfo chanInfo = new ChannelInfo(""); + chanInfo.setOverwriteMode(true); + chanInfo.setSubBufferSize(32768); + chanInfo.setReadTimer(200); + chanInfo.setSwitchTimer(100); + chanInfo.setNumberOfSubBuffers(1); + chanInfo.setMaxNumberTraceFiles(20); + chanInfo.setMaxSizeTraceFiles(0); + chanInfo.setBuffersUID(true); fService.enableChannels(sessionName, list, false, chanInfo, new NullProgressMonitor()); } catch (ExecutionException e) { diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/EnableChannelDialogStub.java b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/EnableChannelDialogStub.java index cc8b34c032..46f528b3cd 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/EnableChannelDialogStub.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/dialogs/EnableChannelDialogStub.java @@ -14,6 +14,7 @@ package org.eclipse.linuxtools.internal.lttng2.stubs.dialogs; import org.eclipse.linuxtools.internal.lttng2.core.control.model.IChannelInfo; import org.eclipse.linuxtools.internal.lttng2.core.control.model.impl.ChannelInfo; import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableChannelDialog; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TargetNodeComponent; import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent; /** @@ -26,6 +27,7 @@ public class EnableChannelDialogStub implements IEnableChannelDialog { // Attributes // ------------------------------------------------------------------------ private TraceDomainComponent fDomain; + private TargetNodeComponent fTargetNodeComponent; private ChannelInfo fChannelInfo; private boolean fIsKernel; @@ -79,4 +81,9 @@ public class EnableChannelDialogStub implements IEnableChannelDialog { public void setChannelInfo(ChannelInfo info) { fChannelInfo = info; } + + @Override + public void setTargetNodeComponent(TargetNodeComponent node) { + fTargetNodeComponent = node; + } } \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/testfiles/LTTngServiceTest.cfg b/org.eclipse.linuxtools.lttng2.ui.tests/testfiles/LTTngServiceTest.cfg index d9b9e823ba..2bb70d7b7b 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/testfiles/LTTngServiceTest.cfg +++ b/org.eclipse.linuxtools.lttng2.ui.tests/testfiles/LTTngServiceTest.cfg @@ -650,6 +650,17 @@ Session mysession2 destroyed at /home/eedbhu ChannelHandling + +lttng enable-channel mychannel0,mychannel1 -k -s mysession2 --overwrite --subbuf-size 16384 --num-subbuf 2 --switch-timer 200 --read-timer 100 -C 0 -W 10 + + +0 + + +Kernel channel mychannel0 enabled for session mysession2 +Kernel channel mychannel1 enabled for session mysession2 + + lttng enable-channel mychannel0,mychannel1 -k -s mysession2 --overwrite --subbuf-size 16384 --num-subbuf 2 --switch-timer 200 --read-timer 100 @@ -661,6 +672,16 @@ Kernel channel mychannel0 enabled for session mysession2 Kernel channel mychannel1 enabled for session mysession2 + +lttng enable-channel ustChannel -u -s mysession2 --overwrite --subbuf-size 32768 --num-subbuf 1 --switch-timer 100 --read-timer 200 -C 0 -W 20 + + +0 + + +UST channel channel0 enabled for session mysession2 + + lttng enable-channel ustChannel -u -s mysession2 --overwrite --subbuf-size 32768 --num-subbuf 1 --switch-timer 100 --read-timer 200 @@ -671,6 +692,26 @@ lttng enable-channel ustChannel -u -s mysession2 --overwrite --subbuf-size 327 UST channel channel0 enabled for session mysession2 + +lttng enable-channel ustChannel -u -s mysession2 --overwrite --subbuf-size 32768 --num-subbuf 1 --switch-timer 100 --read-timer 200 --buffers-uid -C 0 -W 20 + + +0 + + +UST channel channel0 enabled for session mysession2 + + + +lttng enable-channel ustChannel -u -s mysession2 --overwrite --subbuf-size 32768 --num-subbuf 1 --switch-timer 100 --read-timer 200 --buffers-uid + + +0 + + +UST channel channel0 enabled for session mysession2 + + lttng enable-channel mychannel0,mychannel1 -k -s mysession2 diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/dialogs/EnableChannelDialog.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/dialogs/EnableChannelDialog.java index ae92efb5c7..fc217522cb 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/dialogs/EnableChannelDialog.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/dialogs/EnableChannelDialog.java @@ -8,6 +8,7 @@ * * Contributors: * Bernd Hufmann - Initial API and implementation + * Simon Delisle - Updated for support of LTTng Tools 2.2 **********************************************************************/ package org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs; @@ -18,8 +19,14 @@ import org.eclipse.linuxtools.internal.lttng2.core.control.model.IChannelInfo; import org.eclipse.linuxtools.internal.lttng2.core.control.model.impl.ChannelInfo; import org.eclipse.linuxtools.internal.lttng2.ui.Activator; import org.eclipse.linuxtools.internal.lttng2.ui.views.control.messages.Messages; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TargetNodeComponent; import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.service.LTTngControlServiceConstants; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.FocusEvent; +import org.eclipse.swt.events.FocusListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.VerifyEvent; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.layout.GridData; @@ -49,6 +56,11 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog */ public static final String ENABLE_CHANNEL_ICON_FILE = "icons/elcl16/add_button.gif"; //$NON-NLS-1$ + /** + * To indicate that the default value will be used for this field + */ + private static final String DEFAULT_TEXT = "<" + Messages.EnableChannelDialog_DefaultMessage + ">"; //$NON-NLS-1$ //$NON-NLS-2$ + // ------------------------------------------------------------------------ // Attributes // ------------------------------------------------------------------------ @@ -93,10 +105,18 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog * Null in case of creation on session level. */ private TraceDomainComponent fDomain = null; + /** + * The target node component + */ + private TargetNodeComponent fTargetNodeComponent = null; /** * Common verify listener for numeric text input. */ private VerifyListener fVerifyListener = null; + /** + * Common focus listener + */ + private FocusListener fFocusListener = null; /** * Output channel information. */ @@ -109,6 +129,27 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog * Flag which indicates whether Kernel domain is available or not */ private boolean fHasKernel; + /** + * Maximum size of trace files of the channel. + */ + private Text fMaxSizeTraceText = null; + /** + * Maximum number of trace files of the channel. + */ + private Text fMaxNumberTraceText = null; + /** + * CheckBox for selecting per UID buffers. + */ + private Button fUIDBuffersButton = null; + /** + * CheckBox to configure metadata channel + */ + private Button fMetadataChannelButton = null; + /** + * Previous channel name + */ + private String fPreviousChannelName = null; + // ------------------------------------------------------------------------ // Constructors @@ -126,10 +167,33 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog fVerifyListener = new VerifyListener() { @Override public void verifyText(VerifyEvent e) { - // only numbers are allowed. - e.doit = e.text.matches("[0-9]*"); //$NON-NLS-1$ + // only numbers and default are allowed. + e.doit = e.text.matches("[0-9]*") || e.text.matches(DEFAULT_TEXT); //$NON-NLS-1$ } }; + + // Common focus listener + fFocusListener = new FocusListener() { + + @Override + public void focusLost(FocusEvent e) { + Text focusLostWidget = (Text) e.widget; + if (focusLostWidget.getText().isEmpty()) { + focusLostWidget.setText(DEFAULT_TEXT); + focusLostWidget.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); + } + } + + @Override + public void focusGained(FocusEvent e) { + Text focusGainedWidget = (Text) e.widget; + if (focusGainedWidget.getText().equals(DEFAULT_TEXT)) { + focusGainedWidget.setText(""); //$NON-NLS-1$ + focusGainedWidget.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_BLACK)); + } + } + }; + setShellStyle(SWT.RESIZE); } @@ -168,6 +232,11 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog fHasKernel = hasKernel; } + @Override + public void setTargetNodeComponent(TargetNodeComponent node) { + fTargetNodeComponent = node; + } + // ------------------------------------------------------------------------ // Operations // ------------------------------------------------------------------------ @@ -197,24 +266,65 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog fSubBufferSizeText = new Text(dialogComposite, SWT.NONE); fSubBufferSizeText.setToolTipText(Messages.TraceControl_EnableChannelSubBufferSizeTooltip); fSubBufferSizeText.addVerifyListener(fVerifyListener); + fSubBufferSizeText.addFocusListener(fFocusListener); + fSubBufferSizeText.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); Label numSubBufferLabel = new Label(dialogComposite, SWT.RIGHT); numSubBufferLabel.setText(Messages.TraceControl_NbSubBuffersPropertyName); fNumberOfSubBuffersText = new Text(dialogComposite, SWT.NONE); fNumberOfSubBuffersText.setToolTipText(Messages.TraceControl_EnableChannelNbSubBuffersTooltip); fNumberOfSubBuffersText.addVerifyListener(fVerifyListener); + fNumberOfSubBuffersText.addFocusListener(fFocusListener); Label switchTimerLabel = new Label(dialogComposite, SWT.RIGHT); switchTimerLabel.setText(Messages.TraceControl_SwitchTimerPropertyName); fSwitchTimerText = new Text(dialogComposite, SWT.NONE); fSwitchTimerText.setToolTipText(Messages.TraceControl_EnableChannelSwitchTimerTooltip); fSwitchTimerText.addVerifyListener(fVerifyListener); + fSwitchTimerText.addFocusListener(fFocusListener); Label readTimerLabel = new Label(dialogComposite, SWT.RIGHT); readTimerLabel.setText(Messages.TraceControl_ReadTimerPropertyName); fReadTimerText = new Text(dialogComposite, SWT.NONE); fReadTimerText.setToolTipText(Messages.TraceControl_EnableChannelReadTimerTooltip); fReadTimerText.addVerifyListener(fVerifyListener); + fReadTimerText.addFocusListener(fFocusListener); + + if (fTargetNodeComponent.isTraceFileRotationSupported()) { + Label maxSizeTraceFilesLabel = new Label(dialogComposite, SWT.RIGHT); + maxSizeTraceFilesLabel.setText(Messages.TraceControl_MaxSizeTraceFilesPropertyName); + fMaxSizeTraceText = new Text(dialogComposite, SWT.NONE); + fMaxSizeTraceText.setToolTipText(Messages.TraceControl_EnbleChannelMaxSizeTraceFilesTooltip); + fMaxSizeTraceText.addVerifyListener(fVerifyListener); + fMaxSizeTraceText.addFocusListener(fFocusListener); + + Label maxNumTraceFilesLabel = new Label(dialogComposite, SWT.RIGHT); + maxNumTraceFilesLabel.setText(Messages.TraceControl_MaxNumTraceFilesPropertyName); + fMaxNumberTraceText = new Text(dialogComposite, SWT.NONE); + fMaxNumberTraceText.setToolTipText(Messages.TraceControl_EnbleChannelMaxNumTraceFilesTooltip); + fMaxNumberTraceText.addVerifyListener(fVerifyListener); + fMaxNumberTraceText.addFocusListener(fFocusListener); + } + + if (fTargetNodeComponent.isPeriodicalMetadataFlushSupported()) { + fMetadataChannelButton = new Button(dialogComposite, SWT.CHECK); + fMetadataChannelButton.setText(Messages.TraceControl_ConfigureMetadataChannelName); + fMetadataChannelButton.setSelection(false); + + fMetadataChannelButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (fMetadataChannelButton.getSelection()) { + fPreviousChannelName = fChannelNameText.getText(); + fChannelNameText.setText("metadata"); //$NON-NLS-1$ + fChannelNameText.setEnabled(false); + } else { + fChannelNameText.setText(fPreviousChannelName); + fChannelNameText.setEnabled(true); + } + } + }); + } Group discardModeGroup = new Group(dialogComposite, SWT.SHADOW_NONE); discardModeGroup.setText(Messages.TraceControl_EnableChannelDiscardModeGroupName); @@ -243,6 +353,27 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog fUstButton.setText(Messages.TraceControl_UstDisplayName); fUstButton.setSelection(!fIsKernel); + if (fTargetNodeComponent.isPerUIDBuffersSupported()) { + Button fDummyButton = new Button(domainGroup, SWT.CHECK); + fDummyButton.setEnabled(false); + fDummyButton.setVisible(false); + fUIDBuffersButton = new Button(domainGroup, SWT.CHECK); + fUIDBuffersButton.setText(Messages.TraceControl_PerUidBuffersDisplayName); + fUIDBuffersButton.setSelection(false); + fUIDBuffersButton.setEnabled(!fIsKernel); + + fUstButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (fUstButton.getSelection()) { + fUIDBuffersButton.setEnabled(true); + } else { + fUIDBuffersButton.setEnabled(false); + } + } + }); + } + if ((fDomain != null) || (!fHasKernel)) { fKernelButton.setEnabled(false); fUstButton.setEnabled(false); @@ -263,6 +394,14 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog fKernelButton.setLayoutData(data); data = new GridData(SWT.BEGINNING, SWT.BEGINNING, true, true); fUstButton.setLayoutData(data); + if (fTargetNodeComponent.isPerUIDBuffersSupported()) { + data = new GridData(SWT.BEGINNING, SWT.BEGINNING, true, true); + fUIDBuffersButton.setLayoutData(data); + } + if (fTargetNodeComponent.isPeriodicalMetadataFlushSupported()) { + data = new GridData(SWT.BEGINNING, SWT.BEGINNING, true, true); + fMetadataChannelButton.setLayoutData(data); + } data = new GridData(GridData.FILL_HORIZONTAL); data.horizontalSpan = 2; @@ -272,6 +411,10 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog fNumberOfSubBuffersText.setLayoutData(data); fSwitchTimerText.setLayoutData(data); fReadTimerText.setLayoutData(data); + if (fTargetNodeComponent.isTraceFileRotationSupported()) { + fMaxNumberTraceText.setLayoutData(data); + fMaxSizeTraceText.setLayoutData(data); + } setDefaults(); @@ -289,11 +432,18 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog protected void okPressed() { // Set channel information fChannelInfo = new ChannelInfo(fChannelNameText.getText()); - fChannelInfo.setSubBufferSize(Long.parseLong(fSubBufferSizeText.getText())); - fChannelInfo.setNumberOfSubBuffers(Integer.parseInt(fNumberOfSubBuffersText.getText())); - fChannelInfo.setSwitchTimer(Long.parseLong(fSwitchTimerText.getText())); - fChannelInfo.setReadTimer(Long.parseLong(fReadTimerText.getText())); + fChannelInfo.setSubBufferSize(fSubBufferSizeText.getText().equals(DEFAULT_TEXT) ? LTTngControlServiceConstants.UNUSED_VALUE : Long.parseLong(fSubBufferSizeText.getText())); + fChannelInfo.setNumberOfSubBuffers(fNumberOfSubBuffersText.getText().equals(DEFAULT_TEXT) ? LTTngControlServiceConstants.UNUSED_VALUE : Integer.parseInt(fNumberOfSubBuffersText.getText())); + fChannelInfo.setSwitchTimer(fSwitchTimerText.getText().equals(DEFAULT_TEXT) ? LTTngControlServiceConstants.UNUSED_VALUE : Long.parseLong(fSwitchTimerText.getText())); + fChannelInfo.setReadTimer(fReadTimerText.getText().equals(DEFAULT_TEXT) ? LTTngControlServiceConstants.UNUSED_VALUE : Long.parseLong(fReadTimerText.getText())); fChannelInfo.setOverwriteMode(fOverwriteModeButton.getSelection()); + if (fTargetNodeComponent.isTraceFileRotationSupported()) { + fChannelInfo.setMaxSizeTraceFiles(fMaxSizeTraceText.getText().equals(DEFAULT_TEXT) ? LTTngControlServiceConstants.UNUSED_VALUE : Integer.parseInt(fMaxSizeTraceText.getText())); + fChannelInfo.setMaxNumberTraceFiles(fMaxNumberTraceText.getText().equals(DEFAULT_TEXT) ? LTTngControlServiceConstants.UNUSED_VALUE : Integer.parseInt(fMaxNumberTraceText.getText())); + } + if (fTargetNodeComponent.isPerUIDBuffersSupported()) { + fChannelInfo.setBuffersUID(fUIDBuffersButton.getSelection()); + } fIsKernel = fKernelButton.getSelection(); @@ -334,15 +484,20 @@ public class EnableChannelDialog extends Dialog implements IEnableChannelDialog * Sets default value depending on Kernel or UST */ private void setDefaults() { - fSwitchTimerText.setText(String.valueOf(IChannelInfo.DEFAULT_SWITCH_TIMER)); - fReadTimerText.setText(String.valueOf(IChannelInfo.DEFAULT_READ_TIMER)); + fSwitchTimerText.setText(DEFAULT_TEXT); + fSwitchTimerText.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); + fReadTimerText.setText(DEFAULT_TEXT); + fReadTimerText.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); fOverwriteModeButton.setSelection(IChannelInfo.DEFAULT_OVERWRITE_MODE); - if (fKernelButton.getSelection()) { - fSubBufferSizeText.setText(String.valueOf(IChannelInfo.DEFAULT_SUB_BUFFER_SIZE_KERNEL)); - fNumberOfSubBuffersText.setText(String.valueOf(IChannelInfo.DEFAULT_NUMBER_OF_SUB_BUFFERS_KERNEL)); - } else { - fSubBufferSizeText.setText(String.valueOf(IChannelInfo.DEFAULT_SUB_BUFFER_SIZE_UST)); - fNumberOfSubBuffersText.setText(String.valueOf(IChannelInfo.DEFAULT_NUMBER_OF_SUB_BUFFERS_UST)); + if (fTargetNodeComponent.isTraceFileRotationSupported()) { + fMaxSizeTraceText.setText(DEFAULT_TEXT); + fMaxSizeTraceText.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); + fMaxNumberTraceText.setText(DEFAULT_TEXT); + fMaxNumberTraceText.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); } + fSubBufferSizeText.setText(DEFAULT_TEXT); + fSubBufferSizeText.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); + fNumberOfSubBuffersText.setText(DEFAULT_TEXT); + fNumberOfSubBuffersText.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); } } diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/dialogs/IEnableChannelDialog.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/dialogs/IEnableChannelDialog.java index 4f873ce88e..8024602df0 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/dialogs/IEnableChannelDialog.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/dialogs/IEnableChannelDialog.java @@ -12,6 +12,7 @@ package org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs; import org.eclipse.linuxtools.internal.lttng2.core.control.model.IChannelInfo; +import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TargetNodeComponent; import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent; /** @@ -37,6 +38,12 @@ public interface IEnableChannelDialog { */ void setDomainComponent(TraceDomainComponent domain); + /** + * Set the targent node component + * @param node - the node component + */ + void setTargetNodeComponent(TargetNodeComponent node); + /** * @return true for Kernel domain. False for UST. */ diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/BaseEnableChannelHandler.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/BaseEnableChannelHandler.java index 358d0c9ba8..44406c63ef 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/BaseEnableChannelHandler.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/handlers/BaseEnableChannelHandler.java @@ -82,6 +82,7 @@ abstract class BaseEnableChannelHandler extends BaseControlViewHandler { final CommandParameter param = fParam.clone(); final IEnableChannelDialog dialog = TraceControlDialogFactory.getInstance().getEnableChannelDialog(); + dialog.setTargetNodeComponent(param.getSession().getTargetNode()); dialog.setDomainComponent(getDomain(param)); dialog.setHasKernel(param.getSession().hasKernelProvider()); diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/messages/Messages.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/messages/Messages.java index a7d541b516..760802d9cf 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/messages/Messages.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/messages/Messages.java @@ -25,6 +25,8 @@ import org.eclipse.osgi.util.NLS; final public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.linuxtools.internal.lttng2.ui.views.control.messages.messages"; //$NON-NLS-1$ + public static String EnableChannelDialog_DefaultMessage; + // Failures public static String TraceControl_ConnectionFailure; public static String TraceControl_DisconnectionFailure; @@ -146,6 +148,8 @@ final public class Messages extends NLS { public static String TraceControl_EnableChannelDiscardModeTooltip; public static String TraceControl_EnableChannelOverwriteModeLabel; public static String TraceControl_EnableChannelOverwriteModeTooltip; + public static String TraceControl_EnbleChannelMaxSizeTraceFilesTooltip; + public static String TraceControl_EnbleChannelMaxNumTraceFilesTooltip; public static String TraceControl_InvalidChannelNameError; public static String TraceControl_ChannelAlreadyExistsError; @@ -225,6 +229,7 @@ final public class Messages extends NLS { public static String TraceControl_EventDisplayName; public static String TraceControl_ProviderDisplayName; public static String TraceControl_KernelProviderDisplayName; + public static String TraceControl_PerUidBuffersDisplayName; // Property names public static String TraceControl_SessionNamePropertyName; @@ -251,6 +256,9 @@ final public class Messages extends NLS { public static String TraceControl_ProbeAddressPropertyName; public static String TraceControl_ProbeOffsetPropertyName; public static String TraceControl_ProbeSymbolPropertyName; + public static String TraceControl_MaxSizeTraceFilesPropertyName; + public static String TraceControl_MaxNumTraceFilesPropertyName; + public static String TraceControl_ConfigureMetadataChannelName; // Preferences public static String TraceControl_TracingGroupPreference; diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/messages/messages.properties b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/messages/messages.properties index 6097feecec..121a090a86 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/messages/messages.properties +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/messages/messages.properties @@ -10,6 +10,7 @@ # Bernd Hufmann - initial API and implementation ############################################################################### +EnableChannelDialog_DefaultMessage=Default TraceControl_ConnectionFailure=Connecting to host failed TraceControl_DisconnectionFailure=Disconnection from host failed TraceControl_ExecutionCancelled=Command Execution cancelled @@ -124,9 +125,9 @@ TraceControl_FileSubSystemError=File subsystem error in session creation dialog. TraceControl_EnableChannelDialogTitle=Enable Channel TraceControl_EnableChannelNameLabel=Channel Name TraceControl_EnableChannelNameTooltip=The name of the channel to be enabled. -TraceControl_EnableChannelSubBufferSizeTooltip=The sub-buffers size of the channel. Needs to be a power of 2 for kernel and ust tracers. -TraceControl_EnableChannelNbSubBuffersTooltip=The number of sub-buffers of the channel. Needs to be a power of 2 for kernel and ust tracers. -TraceControl_EnableChannelSwitchTimerTooltip=The Switch subbuffer timer interval in usec (default: 0). Needs to be a power of 2 for kernel and ust tracers. +TraceControl_EnableChannelSubBufferSizeTooltip=The sub-buffers size of the channel. Needs to be a power of 2 for kernel and ust tracers (Only for versions prior to 2.2.0). +TraceControl_EnableChannelNbSubBuffersTooltip=The number of sub-buffers of the channel. Needs to be a power of 2 for kernel and ust tracers (Only for versions prior to 2.2.0). +TraceControl_EnableChannelSwitchTimerTooltip=The Switch subbuffer timer interval in usec (default: 0). Needs to be a power of 2 for kernel and ust tracers (Only for versions prior to 2.2.0). TraceControl_EnableChannelReadTimerTooltip=The Read timer interval in usec. TraceControl_EnableChannelOutputTypeTooltip=The output type of the channel. TraceControl_EnableChannelDiscardModeGroupName=Discard Mode @@ -134,6 +135,8 @@ TraceControl_EnableChannelDiscardModeLabel=Discard TraceControl_EnableChannelDiscardModeTooltip=Discard event when subbuffers are full TraceControl_EnableChannelOverwriteModeLabel=Overwrite TraceControl_EnableChannelOverwriteModeTooltip=Flight recorder mode : overwrites events when subbuffers are full +TraceControl_EnbleChannelMaxSizeTraceFilesTooltip=Maximum size of each tracefile within a stream (in bytes). 0 means unlimited +TraceControl_EnbleChannelMaxNumTraceFilesTooltip=Used in conjunction with the maximum size of trace files option, this will limit the number of files created to the specified count. 0 means unlimited TraceControl_InvalidChannelNameError=The channel name is invalid or empty TraceControl_ChannelAlreadyExistsError=Channel already exists @@ -213,6 +216,7 @@ TraceControl_ChannelDisplayName=Channel TraceControl_EventDisplayName=Event TraceControl_ProviderDisplayName=Provider TraceControl_KernelProviderDisplayName=Kernel +TraceControl_PerUidBuffersDisplayName=Per UID buffers # Property names TraceControl_SessionNamePropertyName=Session Name @@ -239,6 +243,9 @@ TraceControl_ProcessIdPropertyName=Process ID TraceControl_ProbeAddressPropertyName=Address TraceControl_ProbeOffsetPropertyName=Offset TraceControl_ProbeSymbolPropertyName=Symbol +TraceControl_MaxSizeTraceFilesPropertyName=Maximum size of trace files +TraceControl_MaxNumTraceFilesPropertyName=Maximum number of trace files +TraceControl_ConfigureMetadataChannelName=Configure metadata channel # Preferences TraceControl_TracingGroupPreference=&Tracing Group diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TargetNodeComponent.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TargetNodeComponent.java index 5b01e7b291..926d632e98 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TargetNodeComponent.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TargetNodeComponent.java @@ -233,6 +233,30 @@ public class TargetNodeComponent extends TraceControlComponent implements ICommu return getControlService().isVersionSupported("2.1.0"); //$NON-NLS-1$ } + /** + * Returns if node supports per UID buffers or not + * @return true if node supports per UID buffers else false + */ + public boolean isPerUIDBuffersSupported() { + return getControlService().isVersionSupported("2.2.0"); //$NON-NLS-1$ + } + + /** + * Returns if node supports trace file rotation or not + * @return true if node supports trace file rotation else false + */ + public boolean isTraceFileRotationSupported() { + return getControlService().isVersionSupported("2.2.0"); //$NON-NLS-1$ + } + + /** + * Returns if node supports periodical flush for metadata or not + * @return true if node supports periodical flush for metadata else false + */ + public boolean isPeriodicalMetadataFlushSupported() { + return getControlService().isVersionSupported("2.2.0"); //$NON-NLS-1$ + } + // ------------------------------------------------------------------------ // Operations // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/service/LTTngControlService.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/service/LTTngControlService.java index 2eb8fba79d..4517baa5bc 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/service/LTTngControlService.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/service/LTTngControlService.java @@ -9,6 +9,7 @@ * Contributors: * Bernd Hufmann - Initial API and implementation * Bernd Hufmann - Updated for support of LTTng Tools 2.1 + * Simon Delisle - Updated for support of LTTng Tools 2.2 **********************************************************************/ package org.eclipse.linuxtools.internal.lttng2.ui.views.control.service; @@ -575,21 +576,47 @@ public class LTTngControlService implements ILttngControlService { } // --subbuf-size SIZE Subbuffer size in bytes // (default: 4096, kernel default: 262144) - command.append(LTTngControlServiceConstants.OPTION_SUB_BUFFER_SIZE); - command.append(String.valueOf(info.getSubBufferSize())); + if (info.getSubBufferSize() != LTTngControlServiceConstants.UNUSED_VALUE) { + command.append(LTTngControlServiceConstants.OPTION_SUB_BUFFER_SIZE); + command.append(String.valueOf(info.getSubBufferSize())); + } // --num-subbuf NUM Number of subbufers -// (default: 8, kernel default: 4) - command.append(LTTngControlServiceConstants.OPTION_NUM_SUB_BUFFERS); - command.append(String.valueOf(info.getNumberOfSubBuffers())); + if (info.getNumberOfSubBuffers() != LTTngControlServiceConstants.UNUSED_VALUE) { + command.append(LTTngControlServiceConstants.OPTION_NUM_SUB_BUFFERS); + command.append(String.valueOf(info.getNumberOfSubBuffers())); + } + +// --switch-timer USEC Switch timer interval in usec + if (info.getSwitchTimer() != LTTngControlServiceConstants.UNUSED_VALUE) { + command.append(LTTngControlServiceConstants.OPTION_SWITCH_TIMER); + command.append(String.valueOf(info.getSwitchTimer())); + } -// --switch-timer USEC Switch timer interval in usec (default: 0) - command.append(LTTngControlServiceConstants.OPTION_SWITCH_TIMER); - command.append(String.valueOf(info.getSwitchTimer())); +// --read-timer USEC Read timer interval in usec + if (info.getReadTimer() != LTTngControlServiceConstants.UNUSED_VALUE) { + command.append(LTTngControlServiceConstants.OPTION_READ_TIMER); + command.append(String.valueOf(info.getReadTimer())); + } -// --read-timer USEC Read timer interval in usec (default: 200) - command.append(LTTngControlServiceConstants.OPTION_READ_TIMER); - command.append(String.valueOf(info.getReadTimer())); + if (isVersionSupported("2.2.0")) { //$NON-NLS-1$ +// --buffer-uid Every application sharing the same UID use the same buffers + if (!isKernel && info.isBuffersUID()) { + command.append(LTTngControlServiceConstants.OPTION_PER_UID_BUFFERS); + } + +// -C SIZE Maximum size of trace files in bytes + if (info.getMaxSizeTraceFiles() != LTTngControlServiceConstants.UNUSED_VALUE) { + command.append(LTTngControlServiceConstants.OPTION_MAX_SIZE_TRACE_FILES); + command.append(String.valueOf(info.getMaxSizeTraceFiles())); + } + +// -W NUM Maximum number of trace files + if (info.getMaxNumberTraceFiles() != LTTngControlServiceConstants.UNUSED_VALUE) { + command.append(LTTngControlServiceConstants.OPTION_MAX_TRACE_FILES); + command.append(String.valueOf(info.getMaxNumberTraceFiles())); + } + } } executeCommand(command.toString(), monitor); diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/service/LTTngControlServiceConstants.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/service/LTTngControlServiceConstants.java index bc3216fa2d..0e549e580b 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/service/LTTngControlServiceConstants.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/service/LTTngControlServiceConstants.java @@ -9,6 +9,7 @@ * Contributors: * Bernd Hufmann - Initial API and implementation * Bernd Hufmann - Updated for support of LTTng Tools 2.1 + * Simon Delisle - Updated for support of LTTng Tools 2.2 **********************************************************************/ package org.eclipse.linuxtools.internal.lttng2.ui.views.control.service; @@ -31,6 +32,14 @@ public interface LTTngControlServiceConstants { */ static final Pattern VERSION_2_PATTERN = Pattern.compile("(2\\.\\d+\\.\\d+).*"); //$NON-NLS-1$ + // ------------------------------------------------------------------------ + // Constants + // ------------------------------------------------------------------------ + /** + * Unused value + */ + static final int UNUSED_VALUE = -1; + // ------------------------------------------------------------------------ // Command constants // ------------------------------------------------------------------------ @@ -214,6 +223,18 @@ public interface LTTngControlServiceConstants { * Command line option for configuring the streaming data URL. */ static final String OPTION_DATA_URL = " -D "; //$NON-NLS-1$ + /** + * Command line option for per UID buffers + */ + static final String OPTION_PER_UID_BUFFERS = " --buffers-uid "; //$NON-NLS-1$ + /** + * Command line option for maximum size of trace files + */ + static final String OPTION_MAX_SIZE_TRACE_FILES = " -C "; //$NON-NLS-1$ + /** + * Command line option for maximum trace files + */ + static final String OPTION_MAX_TRACE_FILES = " -W "; //$NON-NLS-1$ // ------------------------------------------------------------------------ // Parsing constants -- 2.34.1