SRADA-216: Create data managers before starting trace threads in CLI mode.
authorMaria Guseva <m.guseva@samsung.com>
Thu, 26 May 2016 07:30:30 +0000 (10:30 +0300)
committerMaria Guseva <m.guseva@samsung.com>
Fri, 1 Jul 2016 03:58:14 +0000 (06:58 +0300)
* CliInternals.startTracing() - invoke setUIElementsBySetting() before
start DA tracing threads.
* CLIAction.setUIElementsBySetting() - add creation of CallStackInserter().
* PageInfoRegistry - disable the InteractiveDataManager as not supported for CLI
and the TimelineChartManager with FIXME comment.

Conflicts:
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/PageInfoRegistry.java

Change-Id: I3766344edba3353a78da9070d2091a1f2b4a4ea4

org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/CliInternals.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/CLIAction.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/PageInfoRegistry.java

index 29ce632..4f4a489 100644 (file)
@@ -21,6 +21,7 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator;
 import org.tizen.dynamicanalyzer.communicator.DeviceInfo;
 import org.tizen.dynamicanalyzer.communicator.DeviceManager;
 import org.tizen.dynamicanalyzer.handlers.CommandAction;
+import org.tizen.dynamicanalyzer.handlers.UIActionHolder;
 import org.tizen.dynamicanalyzer.project.PackageInfo;
 import org.tizen.dynamicanalyzer.setting.SettingDataManager;
 import org.tizen.dynamicanalyzer.setting.TargetData;
@@ -350,6 +351,8 @@ public final class CliInternals {
                }
                Logger.debug("Set current template: " + args.getTemplate());
 
+               // Create all needed data managers before
+               UIActionHolder.getUIAction().setUIElementsBySetting();
                CommandAction.startTrace(false);
                Logger.debug("Tracing started");
 
index 67330fb..ccf285c 100644 (file)
@@ -11,6 +11,8 @@ import org.tizen.dynamicanalyzer.project.Project;
 import org.tizen.dynamicanalyzer.setting.SettingDataManager;
 import org.tizen.dynamicanalyzer.setting.TargetData;
 import org.tizen.dynamicanalyzer.swap.logparser.DataManagerRegistry;
+import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackInserter;
+import org.tizen.dynamicanalyzer.util.Logger;
 
 public class CLIAction implements UIAction {
 
@@ -97,6 +99,12 @@ public class CLIAction implements UIAction {
        @Override
        public void setUIElementsBySetting() {
                setPageBySetting();
+               // In case of GUI CallStackInserter is created in CallstackView class.
+               // TODO Generalize this step for GUI and CLI
+               CallStackInserter inserter = CallStackInserter.getInstance();
+               if (inserter == null) {
+                       Logger.warning("Could not create CallStackInserter");
+               }
        }
 
        @Override
index b167455..b35d472 100644 (file)
@@ -91,9 +91,13 @@ public class PageInfoRegistry {
 
                PageInfo timelinePageInfo = new PageInfo(TimelinePage.class,
                                SettingConstants.PAGE_NAME_TIME_LINE, true);
-               timelinePageInfo.addDataManager(TimelineChartManager.class);
+               // FIXME TimelineChartManager is not supported for CLI mode as it
+               // involves GUI interactions. So it's disabled for CLI until fixed.
+               if (Global.isGUIMode())
+                       timelinePageInfo.addDataManager(TimelineChartManager.class);
                timelinePageInfo.addDataManager(ReplayDataManager.class);
                timelinePageInfo.addDataManager(CallTraceDataManager.class);
+               // InteractiveDataManager is not supported in CLI mode
                if (Global.isGUIMode()) {
                        timelinePageInfo.addDataManager(InteractiveDataManager.class);
                        // Screenshots are not tested in CLI mode yet
@@ -111,7 +115,9 @@ public class PageInfoRegistry {
 
                PageInfo interactivePageInfo = new PageInfo(InteractivePage.class,
                                SettingConstants.PAGE_NAME_INTERACTIVE);
-               interactivePageInfo.addDataManager(InteractiveDataManager.class);
+               // InteractiveDataManager is not supported in CLI mode
+               if (Global.isGUIMode())
+                       interactivePageInfo.addDataManager(InteractiveDataManager.class);
 
                PageInfo hierarchyPageInfo = new PageInfo(HierarchyPage.class,
                                SettingConstants.PAGE_NAME_HIERARCHY);
@@ -253,7 +259,7 @@ public class PageInfoRegistry {
                // add default pages
                selectedPageSet.addAll(defaultPages);
                // Add interactive page when needed
-               if (!InteractiveDataManager.getInstance().getVariableInfoList().isEmpty()) {
+               if (Global.isGUIMode() && !InteractiveDataManager.getInstance().getVariableInfoList().isEmpty()) {
                        selectedPageSet.add(SettingConstants.PAGE_NAME_INTERACTIVE);
                }
                return selectedPageSet;