control: Bug 487847: Fix intermittent failure of ControlViewProfileTest
authorBernd Hufmann <Bernd.Hufmann@ericsson.com>
Fri, 19 Feb 2016 16:01:43 +0000 (11:01 -0500)
committerBernd Hufmann <bernd.hufmann@ericsson.com>
Fri, 19 Feb 2016 20:41:40 +0000 (15:41 -0500)
On Hudson multiple instances of this test can run at the same time.
The test reads and writes to the same directory for lttng profiles.
This is not the problem. The problem is that all instances use the same
file name which is derived from the LTTng session. To fix this, each
instance needs to generate session different session names. In the
implementation the method System.nanoTime() is used for that.

Since the test uses a LTTng Tools stub where the input and output of a
command are read from a testfile the session name must not be hardcoded
in the file. The stub was update so that it's possible to inject a
session name.

Change-Id: Idab89827e4ba5e2670d3ee947a1406a5a6dd78ed
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/66943
Reviewed-by: Hudson CI
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/control/ui/swtbot/tests/ControlViewProfileTest.java
lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/testfiles/Profile.cfg
lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/stubs/org/eclipse/tracecompass/internal/lttng2/control/stubs/service/TestRemoteSystemProxy.java
lttng/org.eclipse.tracecompass.lttng2.control.ui.tests/stubs/org/eclipse/tracecompass/internal/lttng2/control/stubs/shells/LTTngToolsFileShell.java

index de7e59d7722fe6b856ba7fba84a923ced16ff54c..f7db9d003de91a281340d79860cf08730c93f4cb 100644 (file)
@@ -38,7 +38,7 @@ public class ControlViewProfileTest extends ControlViewTest {
     private static final String TEST_STREAM = "Profile.cfg";
     private static final String CREATE_PROFILE_SCENARIO_NAME = "ProfileTest";
 
-    private static final String SESSION_NAME = "_control_view_test_profile";
+    private static final String SESSION_NAME = String.valueOf(System.nanoTime());
 
     @Override
     protected String getTestStream() {
@@ -57,6 +57,7 @@ public class ControlViewProfileTest extends ControlViewTest {
         // Save and load feature will only work on a Linux remote
         assumeTrue(IS_LINUX);
 
+        fProxy.setSessionName(getSessionName());
         fProxy.setTestFile(fTestFile);
         fProxy.setScenario(INIT_SCENARIO_NAME);
 
@@ -70,6 +71,7 @@ public class ControlViewProfileTest extends ControlViewTest {
         // Disable saving of profiles
         fProxy.setProfileName(null);
         fProxy.deleteProfileFile();
+        fProxy.setSessionName(null);
         testDisconnectFromNode();
     }
 
index 24f5d940e0dd469f9a2fd10492c759b5a0dcedf4..f0419f350f9c0198ec3c8453939d316d3a210d55 100644 (file)
@@ -38,17 +38,17 @@ lttng --mi xml list
 </COMMAND_RESULT>
 <COMMAND_OUTPUT>
 <?xml version="1.0" encoding="UTF-8"?>
-<command><name>list</name><output><sessions><session><name>_control_view_test_profile</name><path>/home/eedbhu/lttng-traces/_control_view_test_profile-20151203-134849</path><enabled>false</enabled><snapshot_mode>0</snapshot_mode><live_timer_interval>0</live_timer_interval></session></sessions></output></command>
+<command><name>list</name><output><sessions><session><name>${sessionname}</name><path>/home/eedbhu/lttng-traces/${sessionname}-20151203-134849</path><enabled>false</enabled><snapshot_mode>0</snapshot_mode><live_timer_interval>0</live_timer_interval></session></sessions></output></command>
 </COMMAND_OUTPUT>
 <COMMAND_INPUT>
-lttng --mi xml list _control_view_test_profile
+lttng --mi xml list ${sessionname}
 </COMMAND_INPUT>
 <COMMAND_RESULT>
 0
 </COMMAND_RESULT>
 <COMMAND_OUTPUT>
 <?xml version="1.0" encoding="UTF-8"?>
-<command><name>list</name><output><sessions><session><name>_control_view_test_profile</name><path>/home/eedbhu/lttng-traces/_control_view_test_profile-20151203-134849</path><enabled>false</enabled><snapshot_mode>0</snapshot_mode><live_timer_interval>0</live_timer_interval><domains><domain><type>KERNEL</type><buffer_type>GLOBAL</buffer_type><trackers/><channels><channel><name>channel0</name><enabled>true</enabled><attributes><overwrite_mode>DISCARD</overwrite_mode><subbuffer_size>8388608</subbuffer_size><subbuffer_count>4</subbuffer_count><switch_timer_interval>0</switch_timer_interval><read_timer_interval>200000</read_timer_interval><output_type>SPLICE</output_type><tracefile_size>0</tracefile_size><tracefile_count>0</tracefile_count><live_timer_interval>0</live_timer_interval></attributes><events><event><name>*</name><type>SYSCALL</type><enabled>true</enabled><filter>false</filter></event><event><name>*</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><loglevel>TRACE_EMERG</loglevel><loglevel_type>ALL</loglevel_type><exclusion>false</exclusion></event></events></channel></channels></domain><domain><type>UST</type><buffer_type>PER_UID</buffer_type><trackers/><channels><channel><name>channel0</name><enabled>true</enabled><attributes><overwrite_mode>DISCARD</overwrite_mode><subbuffer_size>8388608</subbuffer_size><subbuffer_count>4</subbuffer_count><switch_timer_interval>0</switch_timer_interval><read_timer_interval>0</read_timer_interval><output_type>MMAP</output_type><tracefile_size>0</tracefile_size><tracefile_count>0</tracefile_count><live_timer_interval>0</live_timer_interval></attributes><events><event><name>*</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><exclusion>false</exclusion></event></events></channel></channels></domain></domains></session></sessions></output></command>
+<command><name>list</name><output><sessions><session><name>${sessionname}</name><path>/home/eedbhu/lttng-traces/${sessionname}-20151203-134849</path><enabled>false</enabled><snapshot_mode>0</snapshot_mode><live_timer_interval>0</live_timer_interval><domains><domain><type>KERNEL</type><buffer_type>GLOBAL</buffer_type><trackers/><channels><channel><name>channel0</name><enabled>true</enabled><attributes><overwrite_mode>DISCARD</overwrite_mode><subbuffer_size>8388608</subbuffer_size><subbuffer_count>4</subbuffer_count><switch_timer_interval>0</switch_timer_interval><read_timer_interval>200000</read_timer_interval><output_type>SPLICE</output_type><tracefile_size>0</tracefile_size><tracefile_count>0</tracefile_count><live_timer_interval>0</live_timer_interval></attributes><events><event><name>*</name><type>SYSCALL</type><enabled>true</enabled><filter>false</filter></event><event><name>*</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><loglevel>TRACE_EMERG</loglevel><loglevel_type>ALL</loglevel_type><exclusion>false</exclusion></event></events></channel></channels></domain><domain><type>UST</type><buffer_type>PER_UID</buffer_type><trackers/><channels><channel><name>channel0</name><enabled>true</enabled><attributes><overwrite_mode>DISCARD</overwrite_mode><subbuffer_size>8388608</subbuffer_size><subbuffer_count>4</subbuffer_count><switch_timer_interval>0</switch_timer_interval><read_timer_interval>0</read_timer_interval><output_type>MMAP</output_type><tracefile_size>0</tracefile_size><tracefile_count>0</tracefile_count><live_timer_interval>0</live_timer_interval></attributes><events><event><name>*</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><exclusion>false</exclusion></event></events></channel></channels></domain></domains></session></sessions></output></command>
 </COMMAND_OUTPUT>
 </SCENARIO>
 <SCENARIO>
@@ -72,14 +72,14 @@ mkdir -p ${userhome}/.lttng/sessions
 <COMMAND_OUTPUT>
 </COMMAND_OUTPUT>
 <COMMAND_INPUT>
-lttng --mi xml load -i ${userhome}/.lttng/sessions/_control_view_test_profile.lttng -f
+lttng --mi xml load -i ${userhome}/.lttng/sessions/${sessionname}.lttng -f
 </COMMAND_INPUT>
 <COMMAND_RESULT>
 0
 </COMMAND_RESULT>
 <COMMAND_OUTPUT>
 <?xml version="1.0" encoding="UTF-8"?>
-<command><name>load</name><output><load><session><name>*</name></session><path>/home/eedbhu/.lttng/sessions/_control_view_test_profile.lttng</path></load></output><success>true</success></command>
+<command><name>load</name><output><load><session><name>*</name></session><path>/home/eedbhu/.lttng/sessions/${sessionname}.lttng</path></load></output><success>true</success></command>
 </COMMAND_OUTPUT>
 <COMMAND_INPUT>
 lttng --mi xml list -k
@@ -109,46 +109,46 @@ lttng --mi xml list
 </COMMAND_RESULT>
 <COMMAND_OUTPUT>
 <?xml version="1.0" encoding="UTF-8"?>
-<command><name>list</name><output><sessions><session><name>_control_view_test_profile</name><path>/home/eedbhu/lttng-traces/_control_view_test_profile-20151203-134849</path><enabled>false</enabled><snapshot_mode>0</snapshot_mode><live_timer_interval>0</live_timer_interval></session></sessions></output></command>
+<command><name>list</name><output><sessions><session><name>${sessionname}</name><path>/home/eedbhu/lttng-traces/${sessionname}-20151203-134849</path><enabled>false</enabled><snapshot_mode>0</snapshot_mode><live_timer_interval>0</live_timer_interval></session></sessions></output></command>
 </COMMAND_OUTPUT>
 <COMMAND_INPUT>
-lttng --mi xml list _control_view_test_profile
+lttng --mi xml list ${sessionname}
 </COMMAND_INPUT>
 <COMMAND_RESULT>
 0
 </COMMAND_RESULT>
 <COMMAND_OUTPUT>
 <?xml version="1.0" encoding="UTF-8"?>
-<command><name>list</name><output><sessions><session><name>_control_view_test_profile</name><path>/home/eedbhu/lttng-traces/_control_view_test_profile-20151203-134849</path><enabled>false</enabled><snapshot_mode>0</snapshot_mode><live_timer_interval>0</live_timer_interval><domains><domain><type>KERNEL</type><buffer_type>GLOBAL</buffer_type><trackers/><channels><channel><name>channel0</name><enabled>true</enabled><attributes><overwrite_mode>DISCARD</overwrite_mode><subbuffer_size>8388608</subbuffer_size><subbuffer_count>4</subbuffer_count><switch_timer_interval>0</switch_timer_interval><read_timer_interval>200000</read_timer_interval><output_type>SPLICE</output_type><tracefile_size>0</tracefile_size><tracefile_count>0</tracefile_count><live_timer_interval>0</live_timer_interval></attributes><events><event><name>*</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><loglevel>TRACE_EMERG</loglevel><loglevel_type>ALL</loglevel_type><exclusion>false</exclusion></event><event><name>*</name><type>SYSCALL</type><enabled>true</enabled><filter>false</filter></event></events></channel></channels></domain><domain><type>UST</type><buffer_type>PER_UID</buffer_type><trackers/><channels><channel><name>channel0</name><enabled>true</enabled><attributes><overwrite_mode>DISCARD</overwrite_mode><subbuffer_size>8388608</subbuffer_size><subbuffer_count>4</subbuffer_count><switch_timer_interval>0</switch_timer_interval><read_timer_interval>0</read_timer_interval><output_type>MMAP</output_type><tracefile_size>0</tracefile_size><tracefile_count>0</tracefile_count><live_timer_interval>0</live_timer_interval></attributes><events><event><name>*</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><exclusion>false</exclusion></event></events></channel></channels></domain></domains></session></sessions></output></command>
+<command><name>list</name><output><sessions><session><name>${sessionname}</name><path>/home/eedbhu/lttng-traces/${sessionname}-20151203-134849</path><enabled>false</enabled><snapshot_mode>0</snapshot_mode><live_timer_interval>0</live_timer_interval><domains><domain><type>KERNEL</type><buffer_type>GLOBAL</buffer_type><trackers/><channels><channel><name>channel0</name><enabled>true</enabled><attributes><overwrite_mode>DISCARD</overwrite_mode><subbuffer_size>8388608</subbuffer_size><subbuffer_count>4</subbuffer_count><switch_timer_interval>0</switch_timer_interval><read_timer_interval>200000</read_timer_interval><output_type>SPLICE</output_type><tracefile_size>0</tracefile_size><tracefile_count>0</tracefile_count><live_timer_interval>0</live_timer_interval></attributes><events><event><name>*</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><loglevel>TRACE_EMERG</loglevel><loglevel_type>ALL</loglevel_type><exclusion>false</exclusion></event><event><name>*</name><type>SYSCALL</type><enabled>true</enabled><filter>false</filter></event></events></channel></channels></domain><domain><type>UST</type><buffer_type>PER_UID</buffer_type><trackers/><channels><channel><name>channel0</name><enabled>true</enabled><attributes><overwrite_mode>DISCARD</overwrite_mode><subbuffer_size>8388608</subbuffer_size><subbuffer_count>4</subbuffer_count><switch_timer_interval>0</switch_timer_interval><read_timer_interval>0</read_timer_interval><output_type>MMAP</output_type><tracefile_size>0</tracefile_size><tracefile_count>0</tracefile_count><live_timer_interval>0</live_timer_interval></attributes><events><event><name>*</name><type>TRACEPOINT</type><enabled>true</enabled><filter>false</filter><exclusion>false</exclusion></event></events></channel></channels></domain></domains></session></sessions></output></command>
 </COMMAND_OUTPUT>
 <COMMAND_INPUT>
-lttng --mi xml start _control_view_test_profile
+lttng --mi xml start ${sessionname}
 </COMMAND_INPUT>
 <COMMAND_RESULT>
 0
 </COMMAND_RESULT>
 <COMMAND_OUTPUT>
 <?xml version="1.0" encoding="UTF-8"?>
-<command><name>start</name><output><sessions><session><name>_control_view_test_profile</name><enabled>true</enabled></session></sessions></output><success>true</success></command>
+<command><name>start</name><output><sessions><session><name>${sessionname}</name><enabled>true</enabled></session></sessions></output><success>true</success></command>
 </COMMAND_OUTPUT>
 <COMMAND_INPUT>
-lttng --mi xml stop _control_view_test_profile
+lttng --mi xml stop ${sessionname}
 </COMMAND_INPUT>
 <COMMAND_RESULT>
 0
 </COMMAND_RESULT>
 <COMMAND_OUTPUT>
 <?xml version="1.0" encoding="UTF-8"?>
-<command><name>stop</name><output><sessions><session><name>_control_view_test_profile</name><enabled>false</enabled></session></sessions></output><success>true</success></command>
+<command><name>stop</name><output><sessions><session><name>${sessionname}</name><enabled>false</enabled></session></sessions></output><success>true</success></command>
 </COMMAND_OUTPUT>
 <COMMAND_INPUT>
-lttng --mi xml destroy _control_view_test_profile
+lttng --mi xml destroy ${sessionname}
 </COMMAND_INPUT>
 <COMMAND_RESULT>
 0
 </COMMAND_RESULT>
 <COMMAND_OUTPUT>
 <?xml version="1.0" encoding="UTF-8"?>
-<command><name>destroy</name><output><sessions><session><name>_control_view_test_profile</name><path>/home/eedbhu/lttng-traces/_control_view_test_profile-20151203-134849</path><enabled>false</enabled><snapshot_mode>0</snapshot_mode><live_timer_interval>0</live_timer_interval></session></sessions></output><success>true</success></command>
+<command><name>destroy</name><output><sessions><session><name>${sessionname}</name><path>/home/eedbhu/lttng-traces/${sessionname}-20151203-134849</path><enabled>false</enabled><snapshot_mode>0</snapshot_mode><live_timer_interval>0</live_timer_interval></session></sessions></output><success>true</success></command>
 </COMMAND_OUTPUT>
 </SCENARIO>
index 8749e491f89311d7a682bc8367872b36dc52ca90..b43a486d7a976920c2687e972949fef34d3bdbe6 100644 (file)
@@ -31,6 +31,7 @@ public class TestRemoteSystemProxy extends RemoteSystemProxy {
     private LTTngToolsFileShell fShell = null;
     private String fTestFile = null;
     private String fScenario = null;
+    private String fSessionName = null;
 
     @Override
     public void connect(IProgressMonitor monitor) throws ExecutionException {
@@ -51,6 +52,7 @@ public class TestRemoteSystemProxy extends RemoteSystemProxy {
         if (shell == null) {
             shell = new LTTngToolsFileShell();
             if ((fTestFile != null) && (fScenario != null)) {
+                shell.setSessionName(fSessionName);
                 shell.loadScenarioFile(fTestFile);
                 shell.setScenario(fScenario);
                 fShell = shell;
@@ -77,6 +79,10 @@ public class TestRemoteSystemProxy extends RemoteSystemProxy {
         }
     }
 
+    public void setSessionName(String sessionName) {
+        fSessionName = sessionName;
+    }
+
     public void deleteProfileFile() {
         if (fShell != null) {
             fShell.deleteProfileFile();
index 1f689ee73b77147100515a2d90a7124dc81121ce..afdf2243ec5532a0444856e823f712df1827e835 100644 (file)
@@ -63,6 +63,8 @@ public class LTTngToolsFileShell extends TestCommandShell {
 
     private final static String LTTNG_USER_HOME_PATTERN = "\\$\\{userhome\\}";
 
+    private final static String SESSION_NAME_PATTERN = "\\$\\{sessionname\\}";
+
     private final static String USER_HOME = System.getProperty("user.home");
 
     private final static Pattern LTTNG_SAVE_MI_PATTERN = Pattern.compile("lttng\\s+--mi xml\\s+save\\s+-f");
@@ -76,6 +78,7 @@ public class LTTngToolsFileShell extends TestCommandShell {
     private String fScenario;
     private String fProfileName = null;
     private File fProfileFile = null;
+    private String fSessionName = null;
 
     private final Map<String, Map<String, ICommandResult>> fScenarioMap = new HashMap<>();
     private final Map<String, Integer> fSessionNameMap = new HashMap<>();
@@ -190,6 +193,11 @@ public class LTTngToolsFileShell extends TestCommandShell {
                             // Update
                             input = input.replaceAll(LTTNG_USER_HOME_PATTERN, USER_HOME);
 
+                            // Update session variable
+                            if (fSessionName != null) {
+                                input = input.replaceAll(SESSION_NAME_PATTERN, fSessionName);
+                            }
+
                             // Handle instances of 'lttng list
                             // <session"-command
                             Matcher matcher = LTTNG_LIST_SESSION_PATTERN.matcher(strLine);
@@ -234,6 +242,12 @@ public class LTTngToolsFileShell extends TestCommandShell {
                             while (isComment(strLine)) {
                                 strLine = br.readLine();
                             }
+
+                            // Update session variable
+                            if (fSessionName != null) {
+                                strLine = strLine.replaceAll(SESSION_NAME_PATTERN, fSessionName);
+                            }
+
                             // lines of output/error output
                             if (errorOutput != null && inErrorOutput) {
                                 errorOutput.add(strLine);
@@ -353,5 +367,9 @@ public class LTTngToolsFileShell extends TestCommandShell {
         }
     }
 
+    public void setSessionName(String sessionName) {
+        fSessionName = sessionName;
+    }
+
 
 }
This page took 0.0331 seconds and 5 git commands to generate.