From a0ed2a87c031aff8ab6810653141610340352361 Mon Sep 17 00:00:00 2001 From: Maria Guseva Date: Tue, 7 Jun 2016 20:00:48 +0300 Subject: [PATCH] SRADA-216: Wait for start tracing finished before process stop in DA CLI. 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 --- .../tizen/dynamicanalyzer/cli/manager/ProcessManager.java | 2 +- .../tizen/dynamicanalyzer/cli/tracing/TracingProcess.java | 13 ++++++++++++- .../dynamicanalyzer/cli/manager/ProcessManagerTest.java | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManager.java b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManager.java index a6d20f3..986f214 100644 --- a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManager.java +++ b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManager.java @@ -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. diff --git a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingProcess.java b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingProcess.java index 3e9d480..4ad2c6f 100644 --- a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingProcess.java +++ b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingProcess.java @@ -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; } /** diff --git a/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManagerTest.java b/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManagerTest.java index bd28ef1..cc4a436 100644 --- a/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManagerTest.java +++ b/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManagerTest.java @@ -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() { -- 2.7.4