SRADA-216: Wait for start tracing finished before process stop in DA CLI.
authorMaria Guseva <m.guseva@samsung.com>
Tue, 7 Jun 2016 17:00:48 +0000 (20:00 +0300)
committerMaria Guseva <m.guseva@samsung.com>
Fri, 1 Jul 2016 08:24:03 +0000 (17:24 +0900)
DA is not able to stop tracing correctly while DAState is in PREPARE_START.
Due to that the blocking until the preparation finished is needed in
TracingProcess.startTrace() before return.

* ProcessManager.TRACING_PROCESS_STOP_TIMEOUT - changed to 8sec, time measured
on Tizen_2.4 mobile emulator, enough to start tracing before process stop.
* ProcessManagerTest.BASE_TIMEOUT_MS - updated correspondingly to
TRACING_PROCESS_STOP_TIMEOUT value.
* TracingProcess.startTrace() - added blocking until tracing preparation
finished.

Change-Id: I7c176e0458999b85439edfa5e855c959f6fff66c

org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManager.java
org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingProcess.java
org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManagerTest.java

index a6d20f3..986f214 100644 (file)
@@ -20,7 +20,7 @@ public class ProcessManager implements ProcessManagerMBean {
        /**
         * Timeout for stop tracing command.
         */
-       static int TRACING_PROCESS_STOP_TIMEOUT = 2000; // TODO measure this timeout more accurate later
+       static int TRACING_PROCESS_STOP_TIMEOUT = 8000; // TODO measure this timeout more accurate later
 
        /**
         * Map between device and last trace manager used for that device.
index 3e9d480..4ad2c6f 100644 (file)
@@ -55,7 +55,18 @@ public class TracingProcess {
         *         {@link ErrorCode#ERR_EXCEPTION_OCCURRED} if couldn't select requested template.
         */
        public synchronized ErrorCode startTrace() {
-               return CliInternals.startTracing(args);
+               ErrorCode result =  CliInternals.startTracing(args);
+               // Block until StartTraceManager thread starts all needed jobs
+               try {
+                       DAState.waitPrepared();
+               } catch (InterruptedException e) {
+                       Logger.error(e);
+                       return ErrorCode.ERR_EXCEPTION_OCCURRED;
+               }
+               // If CliInternals.startTracing returns Success the StartTraceManager thread still may fail
+               if (!DAState.isRunning() && result==ErrorCode.SUCCESS)
+                       result = ErrorCode.ERR_EXCEPTION_OCCURRED;
+               return result;
        }
 
        /**
index bd28ef1..cc4a436 100644 (file)
@@ -57,7 +57,7 @@ public class ProcessManagerTest {
        /**
         * Whitebox constant from {@link ProcessManager#TRACING_PROCESS_STOP_TIMEOUT}.
         */
-       private final static long BASE_TIMEOUT_MS = 2000;
+       private final static long BASE_TIMEOUT_MS = 8000;
 
        @Before
        public void setUp() {