[Title] internal call filtering fixed
authorjooyoul_lee <jy.exe.lee@samsung.com>
Fri, 20 Dec 2013 07:28:58 +0000 (16:28 +0900)
committerjooyoul_lee <jy.exe.lee@samsung.com>
Fri, 20 Dec 2013 07:28:58 +0000 (16:28 +0900)
[Desc.] LeakDetector
[Issue]

org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/StartHandler.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/snapshot/ScreenshotTimerTask.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDetector.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/ConfigurationDialogDataManager.java

index aeb1241..8a83fcd 100644 (file)
@@ -123,7 +123,7 @@ public class AnalyzerConstants {
        /* timer intervals */\r
        public static final int SOCKET_CHECK_INTERVAL = 10;\r
        public static final int DATA_SOCKET_TIMEOUT = 50000;\r
-       public static final int CONTROL_SOCKET_TIMEOUT = 3000;\r
+       public static final int CONTROL_SOCKET_TIMEOUT = 10000;\r
        \r
        public static final int SOCKET_FORWARD_INTERVAL = 1000;\r
        public static final int LOG_CHECK_INTERVAL = 1000;\r
index 7daaa20..f5a61d8 100755 (executable)
@@ -32,11 +32,13 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Timer;
 
 import org.tizen.dynamicanalyzer.communicator.DACommunicator;
 import org.tizen.dynamicanalyzer.handlers.ClearHandler;
 import org.tizen.dynamicanalyzer.handlers.StartHandler;
 import org.tizen.dynamicanalyzer.model.ImageInfo;
+import org.tizen.dynamicanalyzer.nl.ConfigureLabels;
 import org.tizen.dynamicanalyzer.project.Project;
 import org.tizen.dynamicanalyzer.swap.callstack.BaseCallstackManager;
 import org.tizen.dynamicanalyzer.swap.callstack.SWAPCallStackManager;
@@ -44,6 +46,7 @@ import org.tizen.dynamicanalyzer.swap.model.data.LogDataFactory;
 import org.tizen.dynamicanalyzer.theme.DATheme;
 import org.tizen.dynamicanalyzer.theme.DAThemeWhite;
 import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackManager;
+import org.tizen.dynamicanalyzer.ui.info.snapshot.ScreenshotTimerTask;
 import org.tizen.dynamicanalyzer.ui.page.BaseView;
 import org.tizen.dynamicanalyzer.ui.page.DAPageComposite;
 import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
@@ -51,7 +54,9 @@ import org.tizen.dynamicanalyzer.ui.summary.failed.FailedChecker;
 import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector;
 import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
 import org.tizen.dynamicanalyzer.ui.summary.warning.WarningChecker;
+import org.tizen.dynamicanalyzer.ui.toolbar.ConfigureManager;
 import org.tizen.dynamicanalyzer.ui.toolbar.StopProcessManager;
+import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialogDataManager;
 import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
 import org.tizen.dynamicanalyzer.utils.ImageListSortComparator;
 
@@ -76,6 +81,8 @@ public class AnalyzerManager {
        private static CallStackManager callstackManager = new CallStackManager();
        private static SWAPCallStackManager swapCallstackManager = new SWAPCallStackManager();
 
+       private static Timer screenshotTimer = null;
+
        private static boolean appInfoArrived = false;
        private static boolean isHaveSampleThread = false;
        private static boolean exit = false;
@@ -121,13 +128,13 @@ public class AnalyzerManager {
                return theme;
        }
 
-       //theme deplicated
-//     public static void setTheme(DATheme t) {
-//             theme = t;
-//             ColorResources.initColors();
-//
-//             // redraw all widgets!
-//     }
+       // theme deplicated
+       // public static void setTheme(DATheme t) {
+       // theme = t;
+       // ColorResources.initColors();
+       //
+       // // redraw all widgets!
+       // }
 
        public static boolean hasSampleThread() {
                return isHaveSampleThread;
@@ -373,4 +380,38 @@ public class AnalyzerManager {
        public static synchronized void decreaseProcessCount() {
                processCount--;
        }
+
+       public static synchronized void startScreenshotTimer() {
+               stopScreenshotTimer();
+               ConfigureManager configureManager = ConfigurationDialogDataManager
+                               .getInstance().getConfigureManager();
+               String state = configureManager
+                               .getValue(ConfigureLabels.FEATURE_SCREENSHOT);
+               long screenshot = AnalyzerUtil.addrToLong(state);
+               if (screenshot != 0) {
+                       String screenshotAuto = configureManager
+                                       .getValue(ConfigureLabels.SNAPSHOT_PERIODIC_AUTO);
+                       long period = 10000;
+                       long auto = AnalyzerUtil.addrToLong(screenshotAuto);
+                       if (auto == 0) {
+                               String screenshotPeriod = configureManager
+                                               .getValue(ConfigureLabels.SNAPSHOT_PERIODIC);
+                               try {
+                                       period = Long.parseLong(screenshotPeriod) * 1000;
+                               } catch (NumberFormatException e) {
+                                       e.printStackTrace();
+                               }
+                       }
+                       screenshotTimer = new Timer();
+                       screenshotTimer.scheduleAtFixedRate(new ScreenshotTimerTask(),
+                                       1000, period);
+               }
+       }
+
+       public static synchronized void stopScreenshotTimer() {
+               if (null != screenshotTimer) {
+                       screenshotTimer.cancel();
+                       screenshotTimer = null;
+               }
+       }
 }
index 037c2eb..af1d36d 100644 (file)
@@ -30,6 +30,7 @@ import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.swt.widgets.Display;
+import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.nl.SummaryLabels;
 import org.tizen.dynamicanalyzer.ui.info.snapshot.SnapshotView;
 import org.tizen.dynamicanalyzer.ui.summary.SummaryPage;
@@ -58,6 +59,9 @@ public class StartHandler extends AbstractHandler {
                                leakView.setViewTitle(SummaryLabels.LEAK_VIEW_TITLE_LEAK_CANDIDATE);
                        }
                });
+
+               // start screenshot timer
+               AnalyzerManager.startScreenshotTimer();
                return null;
        }
 }
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/snapshot/ScreenshotTimerTask.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/snapshot/ScreenshotTimerTask.java
new file mode 100644 (file)
index 0000000..5c86840
--- /dev/null
@@ -0,0 +1,14 @@
+package org.tizen.dynamicanalyzer.ui.info.snapshot;
+
+import java.util.TimerTask;
+
+import org.tizen.dynamicanalyzer.communicator.DACommunicator;
+
+public class ScreenshotTimerTask extends TimerTask {
+
+       @Override
+       public void run() {
+               DACommunicator.sendScreenShotMessage();
+       }
+
+}
index 3beebd8..6cf20a9 100644 (file)
@@ -30,8 +30,14 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.nl.ConfigureLabels;
+import org.tizen.dynamicanalyzer.swap.channel.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.data.LogData;
 import org.tizen.dynamicanalyzer.swap.model.data.ProbeCommonData;
+import org.tizen.dynamicanalyzer.ui.toolbar.ConfigureManager;
+import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialogDataManager;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
 
 public class LeakDetector {
        public final static int API_TYPE_OPEN = 0;
@@ -83,6 +89,38 @@ public class LeakDetector {
        // return leakCheckHash;
        // }
 
+       private boolean isDropLog(LogData logData) {
+               ConfigureManager configureManager = ConfigurationDialogDataManager
+                               .getInstance().getConfigureManager();
+               int id = logData.getId();
+               String statStr = null;
+               switch (id) {
+               case DataChannelConstants.MSG_PROBE_FILE:
+                       statStr = configureManager
+                                       .getValue(ConfigureLabels.INCLUDE_INSIDE_CALL_FILE);
+                       break;
+               case DataChannelConstants.MSG_PROBE_MEMORY:
+                       statStr = configureManager
+                                       .getValue(ConfigureLabels.INCLUDE_INSIDE_CALL_MEMORY);
+                       break;
+               case DataChannelConstants.MSG_PROBE_THREAD:
+                       statStr = configureManager
+                                       .getValue(ConfigureLabels.INCLUDE_INSIDE_CALL_THREAD);
+                       break;
+               default:
+                       break;
+               }
+
+               long state = AnalyzerUtil.addrToLong(statStr);
+               if (state != AnalyzerConstants.FEATURE_OFF) {
+                       // feature on
+                       return false;
+               }
+               return true;
+               // feature on : false
+               // feature off : true
+       }
+
        public void runLeakDectect(LogData logData) {
                ProbeCommonData log = (ProbeCommonData) logData;
                String apiName = log.getApiName();
@@ -91,16 +129,11 @@ public class LeakDetector {
                        return;
                }
 
-               if (log.isInternal()) {
+               if (isDropLog(logData) && log.isInternal()) {
+                       System.out.println("drop log " + log.getApiName() + " check "
+                                       + log.getInternalCall());
                        return;
                }
-               // step 1 : check "open" or "close"
-               // Check chk; // 0: open , 1: close
-               // if (null == getLeakCheckHash().get(apiName)) {
-               // return;
-               // } else {
-               // chk = getLeakCheckHash().get(apiName);
-               // }
 
                LeakInfo chk = null;
                if (null == LeakCheckList.getLeakCheckList().get(apiName)) {
index 9cf0757..0a558e1 100755 (executable)
@@ -565,6 +565,7 @@ public class ToolbarArea {
                ShortCutManager.getInstance().setEnabled(false);
                AnalyzerManager.getProject().setStopTime(getTime());
                AnalyzerManager.setRunningState(false);
+               AnalyzerManager.stopScreenshotTimer();
                TraceStartStopThread.runStartStopThread();
        }
 
index 8d5e5f4..675d3d3 100644 (file)
@@ -555,4 +555,8 @@ public class ConfigurationDialogDataManager {
                setSettingValueFromConfigureManager();
                featuresTable.updateTable();
        }
+
+       public ConfigureManager getConfigureManager() {
+               return mConfig;
+       }
 }