From: Patrick Tasse Date: Tue, 11 Oct 2016 20:16:01 +0000 (-0400) Subject: lttng: Fix ControlViewTest X-Git-Url: http://git.efficios.com/?p=deliverable%2Ftracecompass.git;a=commitdiff_plain;h=f3023b37caa4b21e15da5baf57641c6c4cf52a89 lttng: Fix ControlViewTest The regex replacement of the user home in command output are quoted to avoid stripping backslashes in a Windows path. The list provider regex patterns are updated to include the new command options '-j' '-l' and '-p'. The target node state is only set to CONNECTED after the node configuration jobs are completed. The SWTBot test waits for the node configuration jobs to be completed before continuing with the test scenario. The UI test is changed to use a wait condition instead of a loop with delay when waiting for the target node state to be connected. Change-Id: Ie05f58181119cf46d8cdacb8313856f6b3c4da30 Signed-off-by: Patrick Tasse Reviewed-on: https://git.eclipse.org/r/82972 Reviewed-by: Hudson CI Reviewed-by: Bernd Hufmann Tested-by: Bernd Hufmann --- diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/control/ui/swtbot/tests/ControlViewTest.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/control/ui/swtbot/tests/ControlViewTest.java index f5c6aefe82..26b7243f2c 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/control/ui/swtbot/tests/ControlViewTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/control/ui/swtbot/tests/ControlViewTest.java @@ -241,12 +241,13 @@ public class ControlViewTest { nodeItem.select(); SWTBotMenu menuBot = nodeItem.contextMenu(ControlViewSwtBotUtil.CONNECT_MENU_ITEM); menuBot.click(); - WaitUtils.waitForJobs(); fBot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable(ControlViewSwtBotUtil.SESSION_GROUP_NAME, nodeItem)); // Verify that node is connected fBot.waitUntil(ControlViewSwtBotUtil.isStateChanged(fNode, TargetNodeState.CONNECTED)); + // Wait for node configuration jobs + WaitUtils.waitForJobs(); assertEquals(TargetNodeState.CONNECTED, fNode.getTargetNodeState()); } diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TargetNodeConnectedCondition.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TargetNodeConnectedCondition.java new file mode 100644 index 0000000000..13ceff1f28 --- /dev/null +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TargetNodeConnectedCondition.java @@ -0,0 +1,46 @@ +/********************************************************************** + * 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: + * Patrick Tasse - Initial API and implementation + **********************************************************************/ +package org.eclipse.tracecompass.lttng2.control.ui.tests.model.component; + +import org.eclipse.osgi.util.NLS; +import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState; +import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TargetNodeComponent; +import org.eclipse.tracecompass.tmf.ui.tests.shared.IWaitCondition; + +/** + * Condition that waits for a target node to be in connected state. + */ +public class TargetNodeConnectedCondition implements IWaitCondition { + + TargetNodeComponent fNode; + + /** + * Constructor. + * + * @param node + * The target node + */ + public TargetNodeConnectedCondition(TargetNodeComponent node) { + fNode = node; + } + + @Override + public boolean test() throws Exception { + return fNode.getTargetNodeState() == TargetNodeState.CONNECTED; + } + + @Override + public String getFailureMessage() { + return NLS.bind("Target Node {0} did not reach CONNECTED state. State is ", fNode.getName(), fNode.getTargetNodeState().toString()); + } + +} diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlCreateSessionTest.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlCreateSessionTest.java index a5710b5237..9034568f40 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlCreateSessionTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlCreateSessionTest.java @@ -36,6 +36,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Targ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent; import org.eclipse.tracecompass.internal.lttng2.control.ui.views.service.ILttngControlService; import org.eclipse.tracecompass.tmf.remote.core.proxy.TmfRemoteConnectionFactory; +import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -122,11 +123,7 @@ public class TraceControlCreateSessionTest { fFacility.waitForJobs(); fFacility.executeCommand(node, "connect"); - int i = 0; - while ((i < 10) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { - i++; - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - } + WaitUtils.waitUntil(new TargetNodeConnectedCondition(node)); // Verify that node is connected assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlKernelProviderTest.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlKernelProviderTest.java index bb62a73653..c2e723a2ff 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlKernelProviderTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlKernelProviderTest.java @@ -45,6 +45,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Trac import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceProviderGroup; import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent; import org.eclipse.tracecompass.tmf.remote.core.proxy.TmfRemoteConnectionFactory; +import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -120,11 +121,7 @@ public class TraceControlKernelProviderTest { fFacility.waitForJobs(); fFacility.executeCommand(node, "connect"); - int i = 0; - while ((i < 20) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { - i++; - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - } + WaitUtils.waitUntil(new TargetNodeConnectedCondition(node)); // Verify that node is connected assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlKernelSessionTest.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlKernelSessionTest.java index 1cbbdcc927..b37a9463f1 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlKernelSessionTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlKernelSessionTest.java @@ -29,9 +29,9 @@ import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.remote.core.IRemoteConnection; -import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceChannelOutputType; +import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceEnablement; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceEventType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLogLevel; @@ -52,6 +52,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Trac import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceProbeEventComponent; import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent; import org.eclipse.tracecompass.tmf.remote.core.proxy.TmfRemoteConnectionFactory; +import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -126,11 +127,7 @@ public class TraceControlKernelSessionTest { fFacility.waitForJobs(); fFacility.executeCommand(node, "connect"); - int i = 0; - while ((i < 10) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { - i++; - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - } + WaitUtils.waitUntil(new TargetNodeConnectedCondition(node)); // Verify that node is connected assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlSnapshotSessionTest.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlSnapshotSessionTest.java index 9e7f83b264..91ff2578fe 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlSnapshotSessionTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlSnapshotSessionTest.java @@ -38,6 +38,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Targ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent; import org.eclipse.tracecompass.internal.lttng2.control.ui.views.property.TraceSessionPropertySource; import org.eclipse.tracecompass.tmf.remote.core.proxy.TmfRemoteConnectionFactory; +import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils; import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.eclipse.ui.views.properties.IPropertySource; import org.junit.After; @@ -115,11 +116,7 @@ public class TraceControlSnapshotSessionTest { fFacility.waitForJobs(); fFacility.executeCommand(node, "connect"); - int i = 0; - while ((i < 10) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { - i++; - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - } + WaitUtils.waitUntil(new TargetNodeConnectedCondition(node)); // Get provider groups ITraceControlComponent[] groups = node.getChildren(); diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstProviderTest.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstProviderTest.java index bf0a9b9811..6ec19502f9 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstProviderTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstProviderTest.java @@ -25,9 +25,9 @@ import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.remote.core.IRemoteConnection; -import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceChannelOutputType; +import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceEnablement; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceEventType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLogLevel; @@ -47,6 +47,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Trac import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent; import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.UstProviderComponent; import org.eclipse.tracecompass.tmf.remote.core.proxy.TmfRemoteConnectionFactory; +import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -121,12 +122,7 @@ public class TraceControlUstProviderTest { fFacility.waitForJobs(); fFacility.executeCommand(node, "connect"); - - int i = 0; - while ((i < 10) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { - i++; - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - } + WaitUtils.waitUntil(new TargetNodeConnectedCondition(node)); // Verify that node is connected assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstSession2Test.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstSession2Test.java index d7a20f4f2e..0a427b69d5 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstSession2Test.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstSession2Test.java @@ -24,8 +24,8 @@ import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.remote.core.IRemoteConnection; -import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState; +import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.impl.BufferType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.impl.ChannelInfo; import org.eclipse.tracecompass.internal.lttng2.control.stubs.dialogs.CreateSessionDialogStub; @@ -40,6 +40,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Trac import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceDomainComponent; import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent; import org.eclipse.tracecompass.tmf.remote.core.proxy.TmfRemoteConnectionFactory; +import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -116,11 +117,7 @@ public class TraceControlUstSession2Test { fFacility.waitForJobs(); fFacility.executeCommand(node, "connect"); - int i = 0; - while ((i < 10) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { - i++; - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - } + WaitUtils.waitUntil(new TargetNodeConnectedCondition(node)); // Get provider groups ITraceControlComponent[] groups = node.getChildren(); diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstSessionTest.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstSessionTest.java index af8e8a1495..ab61b72950 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstSessionTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/src/org/eclipse/tracecompass/lttng2/control/ui/tests/model/component/TraceControlUstSessionTest.java @@ -31,10 +31,10 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.remote.core.IRemoteConnection; -import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.LogLevelType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceChannelOutputType; +import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceEnablement; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceEventType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLogLevel; @@ -57,6 +57,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Trac import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceEventComponent; import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent; import org.eclipse.tracecompass.tmf.remote.core.proxy.TmfRemoteConnectionFactory; +import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -130,11 +131,7 @@ public class TraceControlUstSessionTest { fFacility.waitForJobs(); fFacility.executeCommand(node, "connect"); - int i = 0; - while ((i < 10) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { - i++; - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); - } + WaitUtils.waitUntil(new TargetNodeConnectedCondition(node)); // Get provider groups ITraceControlComponent[] groups = node.getChildren(); diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/stubs/org/eclipse/tracecompass/internal/lttng2/control/stubs/shells/LTTngToolsFileShell.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/stubs/org/eclipse/tracecompass/internal/lttng2/control/stubs/shells/LTTngToolsFileShell.java index ebcd00e29d..2335dff1db 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/stubs/org/eclipse/tracecompass/internal/lttng2/control/stubs/shells/LTTngToolsFileShell.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/stubs/org/eclipse/tracecompass/internal/lttng2/control/stubs/shells/LTTngToolsFileShell.java @@ -58,10 +58,10 @@ public class LTTngToolsFileShell extends TestCommandShell { private final static String COMMENT_KEY = "#.*"; private final static Pattern LTTNG_LIST_SESSION_PATTERN = Pattern.compile("lttng\\s+list\\s+(.+)"); - private final static String LTTNG_LIST_PROVIDER_PATTERN = "lttng\\s+list\\s+(-u|-k)"; + private final static String LTTNG_LIST_PROVIDER_PATTERN = "lttng\\s+list\\s+(-u|-k|-j|-l|-p).*"; private final static Pattern LTTNG_LIST_SESSION_MI_PATTERN = Pattern.compile("lttng\\s+--mi xml\\s+list\\s+(.+)"); - private final static String LTTNG_LIST_PROVIDER_MI_PATTERN = "lttng\\s+--mi xml\\s+list\\s+(-u|-k)"; + private final static String LTTNG_LIST_PROVIDER_MI_PATTERN = "lttng\\s+--mi xml\\s+list\\s+(-u|-k|-j|-l|-p).*"; private final static String LTTNG_USER_HOME_PATTERN = "\\$\\{userhome\\}"; private final static String LTTNG_WORKSPACE_PATTERN = "\\$\\{workspace\\}"; @@ -201,14 +201,14 @@ public class LTTngToolsFileShell extends TestCommandShell { input = strLine; // Update userhome - input = input.replaceAll(LTTNG_USER_HOME_PATTERN, USER_HOME); + input = input.replaceAll(LTTNG_USER_HOME_PATTERN, Matcher.quoteReplacement(USER_HOME)); // Update workspace - input = input.replaceAll(LTTNG_WORKSPACE_PATTERN, WORKSPACE_HOME); + input = input.replaceAll(LTTNG_WORKSPACE_PATTERN, Matcher.quoteReplacement(WORKSPACE_HOME)); // Update session variable if (fSessionName != null) { - input = input.replaceAll(SESSION_NAME_PATTERN, fSessionName); + input = input.replaceAll(SESSION_NAME_PATTERN, Matcher.quoteReplacement(fSessionName)); } // Handle instances of 'lttng list @@ -257,14 +257,14 @@ public class LTTngToolsFileShell extends TestCommandShell { } // Update userhome - strLine = strLine.replaceAll(LTTNG_USER_HOME_PATTERN, USER_HOME); + strLine = strLine.replaceAll(LTTNG_USER_HOME_PATTERN, Matcher.quoteReplacement(USER_HOME)); // Update workspace - strLine = strLine.replaceAll(LTTNG_WORKSPACE_PATTERN, WORKSPACE_HOME); + strLine = strLine.replaceAll(LTTNG_WORKSPACE_PATTERN, Matcher.quoteReplacement(WORKSPACE_HOME)); // Update session variable if (fSessionName != null) { - strLine = strLine.replaceAll(SESSION_NAME_PATTERN, fSessionName); + strLine = strLine.replaceAll(SESSION_NAME_PATTERN, Matcher.quoteReplacement(fSessionName)); } // lines of output/error output 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 9ec77aae8b..b1c6451a9a 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 @@ -34,8 +34,8 @@ import org.eclipse.remote.core.IRemoteConnectionChangeListener; import org.eclipse.remote.core.RemoteConnectionChangeEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; -import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState; +import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceDomainType; import org.eclipse.tracecompass.internal.lttng2.control.ui.Activator; import org.eclipse.tracecompass.internal.lttng2.control.ui.views.messages.Messages; import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponent; @@ -427,16 +427,19 @@ public class TargetNodeComponent extends TraceControlComponent implements IRemot // Get provider information from node TraceProviderGroup providerGroup = new TraceProviderGroup(Messages.TraceControl_ProviderDisplayName, TargetNodeComponent.this); addChild(providerGroup); + providerGroup.getProviderFromNode(monitor); // Get session information from node TraceSessionGroup sessionGroup = new TraceSessionGroup(Messages.TraceControl_AllSessionsDisplayName, TargetNodeComponent.this); addChild(sessionGroup); - - providerGroup.getProviderFromNode(monitor); sessionGroup.getSessionsFromNode(monitor); } catch (ExecutionException e) { removeAllChildren(); return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_RetrieveNodeConfigurationFailure, e); + } finally { + if (getTargetNodeState() == TargetNodeState.CONNECTING) { + setTargetNodeState(TargetNodeState.CONNECTED); + } } return Status.OK_STATUS; @@ -484,8 +487,7 @@ public class TargetNodeComponent extends TraceControlComponent implements IRemot createControlService(); getConfigurationFromNode(); // Set connected only after the control service has been created and the jobs for creating the - // sub-nodes are scheduled. - setTargetNodeState(TargetNodeState.CONNECTED); + // sub-nodes are completed. } catch (final ExecutionException e) { // Disconnect only if no control service, otherwise stay connected. if (getControlService() == NULL_CONTROL_SERVICE) {