chartCell.addMouseListener(new MouseListener() {
@Override
public void mouseUp(MouseEvent e) {
+ parent.callbackSelect(true);
}
@Override
public void mouseDown(MouseEvent e) {
- parent.callbackSelect(true);
+// parent.callbackSelect(true);
}
@Override
public static final String COMMON_COLUMN_PID = "PID";//$NON-NLS-1$
public static final String COMMON_COLUMN_TID = "TID";//$NON-NLS-1$
public static final String COMMON_COLUMN_ARG = "ARG";//$NON-NLS-1$
+ public static final String COMMON_COLUMN_RET = "RET";//$NON-NLS-1$
public static final String COMMON_COLUMN_ERROR = "ERROR";//$NON-NLS-1$
public static final String COMMON_COLUMN_CALLER_PC_ADDRESS = "CALLER_PC_ADDRESS";//$NON-NLS-1$
public static final String COMMON_COLUMN_CALLER_LIB_NAME = "LIB_NAME";//$NON-NLS-1$
-/*\r
- * Dynamic Analyzer\r
- *\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact: \r
- * Jooyoul Lee <jy.exe.lee@samsung.com>\r
- * Juyoung Kim <j0.kim@samsung.com>\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * \r
- * Contributors:\r
- * - S-Core Co., Ltd\r
- * \r
- */\r
-\r
-package org.tizen.dynamicanalyzer.handlers;\r
-\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-\r
-import org.eclipse.core.commands.AbstractHandler;\r
-import org.eclipse.core.commands.ExecutionEvent;\r
-import org.eclipse.core.commands.ExecutionException;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.widgets.Display;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.tizen.dynamicanalyzer.common.AnalyzerManager;\r
-import org.tizen.dynamicanalyzer.common.GlobalInformation;\r
-import org.tizen.dynamicanalyzer.communicator.DACommunicator;\r
-import org.tizen.dynamicanalyzer.constant.CommonConstants;\r
-import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;\r
-import org.tizen.dynamicanalyzer.model.ImageInfo;\r
-import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;\r
-import org.tizen.dynamicanalyzer.project.Project;\r
-import org.tizen.dynamicanalyzer.resources.ImageResources;\r
-import org.tizen.dynamicanalyzer.sql.SqlManager;\r
-import org.tizen.dynamicanalyzer.swap.callstack.BaseCallstackManager;\r
-import org.tizen.dynamicanalyzer.swap.channel.control.TargetInfo;\r
-import org.tizen.dynamicanalyzer.swap.channel.data.ApiNameManager;\r
-import org.tizen.dynamicanalyzer.swap.channel.data.DataChannelConstants;\r
-import org.tizen.dynamicanalyzer.swap.channel.data.LibraryObject;\r
-import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfo;\r
-import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfoPackage;\r
-import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackData;\r
-import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackUnit;\r
-import org.tizen.dynamicanalyzer.ui.network.data.NetworkDataManager;\r
-import org.tizen.dynamicanalyzer.ui.opengl.data.GLDataManager;\r
-import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;\r
-import org.tizen.dynamicanalyzer.ui.range.RangePage;\r
-import org.tizen.dynamicanalyzer.ui.summary.failed.FailedChecker;\r
-import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData;\r
-import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakData;\r
-import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector;\r
-import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;\r
-import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfileDataMaker;\r
-import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfilingChildData;\r
-import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfilingData;\r
-import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;\r
-import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;\r
-import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceProgressManager;\r
-import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager;\r
-import org.tizen.dynamicanalyzer.util.DALogger;\r
-import org.tizen.dynamicanalyzer.util.WorkbenchUtil;\r
-import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;\r
-import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo;\r
-import org.tizen.dynamicanalyzer.widgets.da.base.DADialog;\r
-import org.tizen.dynamicanalyzer.widgets.da.view.DAPageComposite;\r
-\r
-public class OpenTraceHandler extends AbstractHandler {\r
- private static final DALogger DA_LOG = DALogger.getInstance();\r
-\r
- public static final String ID = OpenTraceHandler.class.getName();\r
- Project project = null;\r
-\r
- @Override\r
- public Object execute(ExecutionEvent event) throws ExecutionException {\r
-\r
- project = AnalyzerManager.getProject();\r
-\r
- List<String> pInfo = SqlManager.getInstance().getDetailsInfo(\r
- project.getSavePath());\r
-\r
- if (null == pInfo || pInfo.isEmpty()) {\r
- DA_LOG.debug("The trace file is invalid."); //$NON-NLS-1$\r
- createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_VERSION_INVALID_REMOVE);\r
- AnalyzerUtil.executeCommand(ClearHandler.ID);\r
- return null;\r
- }\r
- project.loadSaveFormat(pInfo);\r
-\r
-// OpenTraceProgressManager.getInstance().openTracePrgressStart(\r
-// AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING);\r
-\r
- if (!DACommunicator.isDeviceConnected()) {\r
- Display.getDefault().syncExec(new Runnable() {\r
- @Override\r
- public void run() {\r
- DACustomCombo deviceCombo = ToolbarArea.getInstance()\r
- .getDeviceCombo();\r
- DACustomCombo appCombo = ToolbarArea.getInstance()\r
- .getAppCombo();\r
- deviceCombo.setText(AnalyzerManager.getProject()\r
- .getDevice());\r
- appCombo.setText(AnalyzerManager.getProject().getAppName());\r
- deviceCombo.setEnabled(true);\r
- appCombo.setEnabled(true);\r
- }\r
- });\r
- }\r
-\r
- int percent = OpenTraceProgressManager.getInstance().getPercent();\r
- if (loadInfos() && loadCallStackData() && loadCallStackApis()\r
- && loadProfilingData() && loadProfilingChildData() &&\r
- // loadLeakData() &&\r
- // loadFailedData() &&\r
- loadImageSet()) {\r
-\r
- OpenTraceProgressManager.getInstance().setProgressPercent(\r
- AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING, percent += 60);\r
-\r
- } else {\r
- OpenTraceProgressManager.getInstance().closeOpenTraceDialog(\r
- AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING_FAILED);\r
- createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID_REMOVE);\r
- AnalyzerUtil.executeCommand(ClearHandler.ID);\r
- return null;\r
- }\r
-\r
- ToolbarArea.getInstance().setTime(project.getLastTime());\r
- ToolbarArea.getInstance().setDeviceComboText(project.getDevice());\r
- ToolbarArea.getInstance().setAppComboText(project.getAppName());\r
- ToolbarArea.getInstance().checkStartButtonAndAppListEnablement();\r
- ToolbarArea.getInstance().setRepalyButtonEnable(true);\r
- if (AnalyzerManager.getProject().getProcessInfoPackHash().isEmpty()) {\r
- ToolbarArea.getInstance().setSourceViewEnable(false);\r
- ToolbarArea.getInstance().setSourceViewTooltip(\r
- AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING);\r
- } else {\r
- ToolbarArea.getInstance().setSourceViewEnable(true);\r
- ToolbarArea.getInstance().setSourceViewTooltip(\r
- AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE);\r
- }\r
- OpenTraceProgressManager.getInstance().setProgressPercent(\r
- AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING, percent += 3);\r
- /* add each part action.. close... open...etc... */\r
-\r
- /* resource log view action start */\r
- // List<LogCenter> logCenters = AnalyzerManager.getLogCenters();\r
- // List<Integer> ids = LogDataFactory.getLogList();\r
- // size = ids.size();\r
- // for (int i = 0; i < size; i++) {\r
- // LogCenter center = logCenters.get(i);\r
- // int dataSize = SqlManager.getInstance().selectCount(center);\r
- // center.setDataSize(dataSize);\r
- // }\r
-\r
- if (RangeDataManager.getInstance().isBeingAnalyzed()) {\r
- DAPageComposite page = AnalyzerManager.getCurrentPage();\r
- if (page instanceof RangePage) {\r
- AnalyzerUtil.changePage(TimelinePage.pageID);\r
- }\r
- }\r
-\r
- OpenTraceProgressManager.getInstance().runThreads();\r
- OpenTraceProgressManager.getInstance().openTraceComplete();\r
- SqlManager.getInstance().closeConnection();\r
-\r
- NetworkDataManager.getInstance().openProcess();\r
- GLDataManager.getInstance().openProcess();\r
- return null;\r
- }\r
-\r
- private void invalidProgress() {\r
- OpenTraceProgressManager.getInstance().closeOpenTraceDialog(\r
- AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID);\r
- createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID_REMOVE);\r
- AnalyzerUtil.executeCommand(ClearHandler.ID);\r
- }\r
-\r
- private boolean loadCallStackData() {\r
- boolean isSuccess = true;\r
- List<List<String>> dbInfo = SqlManager.getInstance()\r
- .getCallStackDataFromTable();\r
- if (null == dbInfo) {\r
- DA_LOG.debug("failed - loadCallStackData");\r
- isSuccess = false;\r
- } else {\r
- for (int i = 0; i < dbInfo.size(); i++) {\r
- List<String> pInfo = dbInfo.get(i);\r
- int seq = Integer.parseInt(pInfo.get(0));\r
- String addrs = pInfo.get(1);\r
- if (null == addrs) {\r
- continue;\r
- }\r
- String[] splitAddrs = addrs.split(CommonConstants.SLASH);\r
- CallStackData csd = new CallStackData(seq);\r
- List<Long> addrList = csd.getAddrs();\r
- int size = splitAddrs.length;\r
- for (int j = 0; j < size; j++) {\r
- long addr = Long.parseLong(splitAddrs[j]);\r
- addrList.add(addr);\r
- }\r
- AnalyzerManager.getCallstackManager()\r
- .getCallStackDataBySeqMap().put(seq, csd);\r
- }\r
- }\r
- return isSuccess;\r
- }\r
-\r
- private boolean loadCallStackApis() {\r
- boolean isSuccess = true;\r
- List<List<String>> dbInfo = SqlManager.getInstance()\r
- .setloadCallStackApis();\r
- if (null == dbInfo) {\r
- DA_LOG.debug("failed - loadCallStackApis");\r
- isSuccess = false;\r
- } else {\r
- BaseCallstackManager callstackManager = AnalyzerManager\r
- .getCallstackManager();\r
- for (int i = 0; i < dbInfo.size(); i++) {\r
- List<String> pInfo = dbInfo.get(i);\r
- long addr = Long.parseLong(pInfo.get(0));\r
- String api = pInfo.get(1);\r
- int pid = Integer.parseInt(pInfo.get(2));\r
- long time = Long.parseLong(pInfo.get(3));\r
- CallStackUnit csa = new CallStackUnit(addr, api, pid, time);\r
- callstackManager.getCallStackApiAddrByPidMap(pid)\r
- .put(addr, csa);\r
-\r
- }\r
- }\r
- return isSuccess;\r
- }\r
-\r
- private boolean loadInfos() {\r
- boolean isSuccess = true;\r
- List<List<String>> dbInfo = SqlManager.getInstance().loadTargetInfo();\r
- if (null == dbInfo) {\r
- DA_LOG.debug("failed - loadTargetInfo");\r
- isSuccess = false;\r
- } else {\r
- List<String> info = dbInfo.get(0);\r
- TargetInfo targetInfo = new TargetInfo();\r
- targetInfo.loadSaveFormat(info);\r
- GlobalInformation.getCurrentDeviceInfo().setTargetInfo(targetInfo);\r
- }\r
-\r
- List<String> pids = SqlManager.getInstance().getPids();\r
- int pidCount = pids.size();\r
-\r
- HashMap<Integer, ProcessInfoPackage> processPkgMap = AnalyzerManager\r
- .getProject().getProcessInfoPackHash();\r
- for (int h = 0; h < pidCount; h++) {\r
- ProcessInfoPackage pip = new ProcessInfoPackage();\r
- String option = " where pid = " + pids.get(h);\r
- dbInfo = SqlManager.getInstance().loadProcessInfo(option);\r
- if (null == dbInfo) {\r
- DA_LOG.debug("failed - load Process Info");\r
- isSuccess = false;\r
- continue;\r
- } else {\r
- List<ProcessInfo> pInfos = pip.getProcessSnapshots();\r
- for (int i = 0; i < dbInfo.size(); i++) {\r
- List<String> info = dbInfo.get(i);\r
- ProcessInfo process = new ProcessInfo();\r
- process.loadSaveFormat(info.get(1));\r
- pInfos.add(process);\r
- if (i == 0) {\r
- pip.setPid(process.getPid());\r
- pip.setPpid(process.getPpid());\r
- pip.setTargetBinaryPath(process\r
- .getMainTargetBinaryPath());\r
- }\r
- String subOption = "where pid = " + process.getPid()\r
- + " and time = \'"\r
- + process.getStartTime().toString() + "\'";\r
- List<List<String>> objInfo = SqlManager.getInstance()\r
- .loadLibObj(subOption);\r
- if (null == objInfo) {\r
- DA_LOG.debug("failed - load Lib Object");\r
- isSuccess = false;\r
- continue;\r
- } else {\r
- for (List<String> libInfo : objInfo) {\r
- LibraryObject libObj = new LibraryObject();\r
- libObj.setPid(Integer.parseInt(libInfo.get(0)));\r
- // 1 : time\r
- libObj.setLowestAddress(Long.parseLong(libInfo\r
- .get(2)));\r
- libObj.setHighestAddress(Long.parseLong(libInfo\r
- .get(3)));\r
- libObj.setLibPath(libInfo.get(4));\r
- process.getLibObjs().add(libObj);\r
- process.getLibObjHash().put(libObj.getLibPath(),\r
- libObj);\r
- }\r
- }\r
- }\r
- }\r
- processPkgMap.put(pip.getPid(), pip);\r
- }\r
- dbInfo = SqlManager.getInstance().loadApiNames();\r
- if (null == dbInfo) {\r
- DA_LOG.debug("failed - load Api names");\r
- isSuccess = false;\r
- } else {\r
- List<String> apiList = ApiNameManager.getApiList();\r
- for (List<String> info : dbInfo) {\r
- apiList.add(info.get(0));\r
- }\r
- }\r
- return isSuccess;\r
- }\r
-\r
- private boolean loadImageSet() {\r
- List<List<String>> input = SqlManager.getInstance().getloadImageSet(3);\r
- if (null == input) {\r
- return false;\r
- }\r
-\r
- int size = input.size();\r
-\r
- for (int i = 0; i < size; i++) {\r
- List<String> imgLog = input.get(i);\r
- String seq = imgLog.get(0);\r
- String time = imgLog.get(1);\r
- ImageInfo imgInfo = new ImageInfo();\r
- imgInfo.setSeq(seq);\r
- imgInfo.setTime(time);\r
-\r
- String[] path = imgLog.get(2).split(CommonConstants.SLASH);\r
- imgInfo.setFileName(new String(path[path.length - 1]));\r
-\r
- AnalyzerManager.getImageSet().put(seq, imgInfo);\r
- }\r
- return true;\r
- }\r
-\r
- private boolean loadLeakData() {\r
- boolean isSuccess = true;\r
- List<List<String>> dbInfo = SqlManager.getInstance().setloadLeakData();\r
- if (null == dbInfo) {\r
- DA_LOG.debug("leak data loading failed..");\r
- isSuccess = false;\r
- } else {\r
- LeakDetector leakDectector = AnalyzerManager.getLeakDetector();\r
- for (int i = 0; i < dbInfo.size(); i++) {\r
- List<String> info = dbInfo.get(i);\r
- LeakData leakData = new LeakData(info);\r
- if (-1 != leakData.getParentKey()) {\r
- LeakData parent = leakDectector.getLeakHash().get(\r
- leakData.getParentKey());\r
- if (null == parent) {\r
- continue;\r
- } else {\r
- parent.getChildren().add(leakData);\r
- }\r
- } else {\r
- leakDectector.getLeakHash().put((long) leakData.getKey(),\r
- leakData);\r
- }\r
- }\r
- }\r
- return isSuccess;\r
- }\r
-\r
- private boolean loadFailedData() {\r
- boolean isSuccess = true;\r
- List<List<String>> dbInfo = SqlManager.getInstance()\r
- .setloadFailedData();\r
- if (null == dbInfo) {\r
- DA_LOG.debug("failed - loadFailedData");\r
- isSuccess = false;\r
- } else {\r
- FailedChecker failedChecker = AnalyzerManager.getFailedChecker();\r
- for (int i = 0; i < dbInfo.size(); i++) {\r
- List<String> pInfo = dbInfo.get(i);\r
- // possibility of extensions - network, efl, db, etc...\r
- int id = Integer.parseInt(pInfo\r
- .get(LogCenterConstants.ID_INDEX));\r
- if (id == DataChannelConstants.MSG_PROBE_FILE) {\r
- // if file failed api data is skip - file chart make it!\r
- int type = Integer.parseInt(pInfo\r
- .get(LogCenterConstants.RESOURCE_FDTYPE_INDEX));\r
- if (type == LogCenterConstants.FD_TYPE_FILE) {\r
- continue;\r
- }\r
- }\r
- FailedData failedData = new FailedData(pInfo);\r
- failedChecker.getFailedList().add(failedData);\r
- }\r
- }\r
- return isSuccess;\r
- }\r
-\r
- private boolean loadProfilingData() {\r
- boolean isSuccess = true;\r
- List<List<String>> dbInfo = SqlManager.getInstance()\r
- .setloadProfilingData();\r
- if (null == dbInfo) {\r
- DA_LOG.debug("failed - loadProfilingData");\r
- isSuccess = false;\r
- } else {\r
- for (int i = 0; i < dbInfo.size(); i++) {\r
- List<String> pInfo = dbInfo.get(i);\r
- int pid = Integer.parseInt(pInfo.get(ProfilingData.PID_INDEX));\r
- // possibility of extensions - network, efl, db, etc...\r
- ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()\r
- .getProfileDataMakerByPid(pid);\r
- ProfilingData fupData = new ProfilingData(pInfo, profiler);\r
- String seq = pInfo.get(ProfilingData.SEQUENCE_INDEX);\r
- profiler.getProfilingDataMap().put(Integer.parseInt(seq),\r
- fupData);\r
- String symbol = pInfo.get(ProfilingData.KEY_INDEX);\r
- profiler.getSymbolSeqHash().put(symbol, seq);\r
- UIDataManager.getInstance().getfunctionProfilingDataChecker()\r
- .addProfilingData(fupData);\r
- // restore total sample count\r
- profiler.setTotalSampleCount(profiler.getTotalSampleCount()\r
- + fupData.getExCount());\r
- }\r
-\r
- List<Integer> pids = FunctionUsageProfiler.getInstance()\r
- .getPidsOfProfileDataMakerMap();\r
- for (int i = 0; i < pids.size(); i++) {\r
- ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()\r
- .getProfileDataMakerByPid(pids.get(i));\r
- ProfilingData ab = profiler\r
- .getProfilingDataByKey(FunctionUsageProfiler.APPLICATION_KEY);\r
- profiler.setAppBin(ab);\r
- ProfilingData dl = profiler\r
- .getProfilingDataByKey(FunctionUsageProfiler.DEPENDENT_LIB_KEY);\r
- profiler.setDependentLib(dl);\r
- }\r
- }\r
- return isSuccess;\r
- }\r
-\r
- private boolean loadProfilingChildData() {\r
- boolean isSuccess = true;\r
- List<List<String>> dbInfo = SqlManager.getInstance()\r
- .setloadProfilingChildData();\r
- if (null == dbInfo) {\r
- DA_LOG.debug("failed - loadProfilingChildData");\r
- isSuccess = false;\r
- } else {\r
- for (int i = 0; i < dbInfo.size(); i++) {\r
- List<String> data = dbInfo.get(i);\r
- if (data.size() < 2) { // why?\r
- continue;\r
- }\r
- int pid = Integer.parseInt(data.get(1)); // 1 == PID_INDEX\r
- String seqs = data.get(2); // 2 == CHILDLIST_INDEX\r
- String[] splitSeqs = seqs.split(CommonConstants.SLASH);\r
- List<Integer> childData = new ArrayList<Integer>();\r
- for (int ii = 0; ii < splitSeqs.length; ii++) {\r
- childData.add(Integer.parseInt(splitSeqs[ii]));\r
- }\r
- int key = Integer.parseInt(data.get(0));\r
- ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()\r
- .getProfileDataMakerByPid(pid);\r
- ProfilingData parent = profiler.getProfilingDataMap().get(key);\r
- ProfilingChildData child = parent.getChildData();\r
- child.getChildren().addAll(childData);\r
- profiler.getChildListMap().put(data.get(0), child);\r
- }\r
- }\r
- return isSuccess;\r
- }\r
-\r
- private void createWarningDialog(String message) {\r
- final Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();\r
- final DADialog dialog = new DADialog(shell, SWT.NONE);\r
- dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);\r
- dialog.setMessage(message);\r
- Display.getDefault().syncExec(new Runnable() {\r
- @Override\r
- public void run() {\r
- dialog.open();\r
- }\r
- });\r
- }\r
-}\r
+/*
+ * Dynamic Analyzer
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Jooyoul Lee <jy.exe.lee@samsung.com>
+ * Juyoung Kim <j0.kim@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.dynamicanalyzer.handlers;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.common.AnalyzerManager;
+import org.tizen.dynamicanalyzer.common.GlobalInformation;
+import org.tizen.dynamicanalyzer.communicator.DACommunicator;
+import org.tizen.dynamicanalyzer.constant.CommonConstants;
+import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
+import org.tizen.dynamicanalyzer.model.ImageInfo;
+import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
+import org.tizen.dynamicanalyzer.project.Project;
+import org.tizen.dynamicanalyzer.resources.ImageResources;
+import org.tizen.dynamicanalyzer.sql.SqlManager;
+import org.tizen.dynamicanalyzer.swap.callstack.BaseCallstackManager;
+import org.tizen.dynamicanalyzer.swap.channel.control.TargetInfo;
+import org.tizen.dynamicanalyzer.swap.channel.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.swap.channel.data.DataChannelConstants;
+import org.tizen.dynamicanalyzer.swap.channel.data.LibraryObject;
+import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfo;
+import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfoPackage;
+import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackData;
+import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackUnit;
+import org.tizen.dynamicanalyzer.ui.network.data.NetworkDataManager;
+import org.tizen.dynamicanalyzer.ui.opengl.data.GLDataManager;
+import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
+import org.tizen.dynamicanalyzer.ui.range.RangePage;
+import org.tizen.dynamicanalyzer.ui.summary.failed.FailedChecker;
+import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData;
+import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakData;
+import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector;
+import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
+import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfileDataMaker;
+import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfilingChildData;
+import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfilingData;
+import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;
+import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
+import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceProgressManager;
+import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager;
+import org.tizen.dynamicanalyzer.util.DALogger;
+import org.tizen.dynamicanalyzer.util.WorkbenchUtil;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo;
+import org.tizen.dynamicanalyzer.widgets.da.base.DADialog;
+import org.tizen.dynamicanalyzer.widgets.da.view.DAPageComposite;
+
+public class OpenTraceHandler extends AbstractHandler {
+ private static final DALogger DA_LOG = DALogger.getInstance();
+
+ public static final String ID = OpenTraceHandler.class.getName();
+ Project project = null;
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+
+ project = AnalyzerManager.getProject();
+
+ List<String> pInfo = SqlManager.getInstance().getDetailsInfo(
+ project.getSavePath());
+
+ if (null == pInfo || pInfo.isEmpty()) {
+ DA_LOG.debug("The trace file is invalid."); //$NON-NLS-1$
+ createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_VERSION_INVALID_REMOVE);
+ AnalyzerUtil.executeCommand(ClearHandler.ID);
+ return null;
+ }
+ project.loadSaveFormat(pInfo);
+
+ OpenTraceProgressManager.getInstance().openTracePrgressStart(
+ AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING);
+
+ if (!DACommunicator.isDeviceConnected()) {
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ DACustomCombo deviceCombo = ToolbarArea.getInstance()
+ .getDeviceCombo();
+ DACustomCombo appCombo = ToolbarArea.getInstance()
+ .getAppCombo();
+ deviceCombo.setText(AnalyzerManager.getProject()
+ .getDevice());
+ appCombo.setText(AnalyzerManager.getProject().getAppName());
+ deviceCombo.setEnabled(true);
+ appCombo.setEnabled(true);
+ }
+ });
+ }
+
+ int percent = OpenTraceProgressManager.getInstance().getPercent();
+ if (loadInfos() && loadCallStackData() && loadCallStackApis()
+ && loadProfilingData() && loadProfilingChildData() &&
+ // loadLeakData() &&
+ // loadFailedData() &&
+ loadImageSet()) {
+
+ OpenTraceProgressManager.getInstance().setProgressPercent(
+ AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING, percent += 60);
+
+ } else {
+ OpenTraceProgressManager.getInstance().closeOpenTraceDialog(
+ AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING_FAILED);
+ createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID_REMOVE);
+ AnalyzerUtil.executeCommand(ClearHandler.ID);
+ return null;
+ }
+
+ ToolbarArea.getInstance().setTime(project.getLastTime());
+ ToolbarArea.getInstance().setDeviceComboText(project.getDevice());
+ ToolbarArea.getInstance().setAppComboText(project.getAppName());
+ ToolbarArea.getInstance().checkStartButtonAndAppListEnablement();
+ ToolbarArea.getInstance().setRepalyButtonEnable(true);
+ if (AnalyzerManager.getProject().getProcessInfoPackHash().isEmpty()) {
+ ToolbarArea.getInstance().setSourceViewEnable(false);
+ ToolbarArea.getInstance().setSourceViewTooltip(
+ AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING);
+ } else {
+ ToolbarArea.getInstance().setSourceViewEnable(true);
+ ToolbarArea.getInstance().setSourceViewTooltip(
+ AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE);
+ }
+ OpenTraceProgressManager.getInstance().setProgressPercent(
+ AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING, percent += 3);
+ /* add each part action.. close... open...etc... */
+
+ /* resource log view action start */
+ // List<LogCenter> logCenters = AnalyzerManager.getLogCenters();
+ // List<Integer> ids = LogDataFactory.getLogList();
+ // size = ids.size();
+ // for (int i = 0; i < size; i++) {
+ // LogCenter center = logCenters.get(i);
+ // int dataSize = SqlManager.getInstance().selectCount(center);
+ // center.setDataSize(dataSize);
+ // }
+
+ if (RangeDataManager.getInstance().isBeingAnalyzed()) {
+ DAPageComposite page = AnalyzerManager.getCurrentPage();
+ if (page instanceof RangePage) {
+ AnalyzerUtil.changePage(TimelinePage.pageID);
+ }
+ }
+
+ OpenTraceProgressManager.getInstance().runThreads();
+ OpenTraceProgressManager.getInstance().openTraceComplete();
+ SqlManager.getInstance().closeConnection();
+
+ NetworkDataManager.getInstance().openProcess();
+ GLDataManager.getInstance().openProcess();
+ return null;
+ }
+
+ private void invalidProgress() {
+ OpenTraceProgressManager.getInstance().closeOpenTraceDialog(
+ AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID);
+ createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID_REMOVE);
+ AnalyzerUtil.executeCommand(ClearHandler.ID);
+ }
+
+ private boolean loadCallStackData() {
+ boolean isSuccess = true;
+ List<List<String>> dbInfo = SqlManager.getInstance()
+ .getCallStackDataFromTable();
+ if (null == dbInfo) {
+ DA_LOG.debug("failed - loadCallStackData");
+ isSuccess = false;
+ } else {
+ for (int i = 0; i < dbInfo.size(); i++) {
+ List<String> pInfo = dbInfo.get(i);
+ int seq = Integer.parseInt(pInfo.get(0));
+ String addrs = pInfo.get(1);
+ if (null == addrs) {
+ continue;
+ }
+ String[] splitAddrs = addrs.split(CommonConstants.SLASH);
+ CallStackData csd = new CallStackData(seq);
+ List<Long> addrList = csd.getAddrs();
+ int size = splitAddrs.length;
+ for (int j = 0; j < size; j++) {
+ long addr = Long.parseLong(splitAddrs[j]);
+ addrList.add(addr);
+ }
+ AnalyzerManager.getCallstackManager()
+ .getCallStackDataBySeqMap().put(seq, csd);
+ }
+ }
+ return isSuccess;
+ }
+
+ private boolean loadCallStackApis() {
+ boolean isSuccess = true;
+ List<List<String>> dbInfo = SqlManager.getInstance()
+ .setloadCallStackApis();
+ if (null == dbInfo) {
+ DA_LOG.debug("failed - loadCallStackApis");
+ isSuccess = false;
+ } else {
+ BaseCallstackManager callstackManager = AnalyzerManager
+ .getCallstackManager();
+ for (int i = 0; i < dbInfo.size(); i++) {
+ List<String> pInfo = dbInfo.get(i);
+ long addr = Long.parseLong(pInfo.get(0));
+ String api = pInfo.get(1);
+ int pid = Integer.parseInt(pInfo.get(2));
+ long time = Long.parseLong(pInfo.get(3));
+ CallStackUnit csa = new CallStackUnit(addr, api, pid, time);
+ callstackManager.getCallStackApiAddrByPidMap(pid)
+ .put(addr, csa);
+
+ }
+ }
+ return isSuccess;
+ }
+
+ private boolean loadInfos() {
+ boolean isSuccess = true;
+ List<List<String>> dbInfo = SqlManager.getInstance().loadTargetInfo();
+ if (null == dbInfo) {
+ DA_LOG.debug("failed - loadTargetInfo");
+ isSuccess = false;
+ } else {
+ List<String> info = dbInfo.get(0);
+ TargetInfo targetInfo = new TargetInfo();
+ targetInfo.loadSaveFormat(info);
+ GlobalInformation.getCurrentDeviceInfo().setTargetInfo(targetInfo);
+ }
+
+ List<String> pids = SqlManager.getInstance().getPids();
+ int pidCount = pids.size();
+
+ HashMap<Integer, ProcessInfoPackage> processPkgMap = AnalyzerManager
+ .getProject().getProcessInfoPackHash();
+ for (int h = 0; h < pidCount; h++) {
+ ProcessInfoPackage pip = new ProcessInfoPackage();
+ String option = " where pid = " + pids.get(h);
+ dbInfo = SqlManager.getInstance().loadProcessInfo(option);
+ if (null == dbInfo) {
+ DA_LOG.debug("failed - load Process Info");
+ isSuccess = false;
+ continue;
+ } else {
+ List<ProcessInfo> pInfos = pip.getProcessSnapshots();
+ for (int i = 0; i < dbInfo.size(); i++) {
+ List<String> info = dbInfo.get(i);
+ ProcessInfo process = new ProcessInfo();
+ process.loadSaveFormat(info.get(1));
+ pInfos.add(process);
+ if (i == 0) {
+ pip.setPid(process.getPid());
+ pip.setPpid(process.getPpid());
+ pip.setTargetBinaryPath(process
+ .getMainTargetBinaryPath());
+ }
+ String subOption = "where pid = " + process.getPid()
+ + " and time = \'"
+ + process.getStartTime().toString() + "\'";
+ List<List<String>> objInfo = SqlManager.getInstance()
+ .loadLibObj(subOption);
+ if (null == objInfo) {
+ DA_LOG.debug("failed - load Lib Object");
+ isSuccess = false;
+ continue;
+ } else {
+ for (List<String> libInfo : objInfo) {
+ LibraryObject libObj = new LibraryObject();
+ libObj.setPid(Integer.parseInt(libInfo.get(0)));
+ // 1 : time
+ libObj.setLowestAddress(Long.parseLong(libInfo
+ .get(2)));
+ libObj.setHighestAddress(Long.parseLong(libInfo
+ .get(3)));
+ libObj.setLibPath(libInfo.get(4));
+ process.getLibObjs().add(libObj);
+ process.getLibObjHash().put(libObj.getLibPath(),
+ libObj);
+ }
+ }
+ }
+ }
+ processPkgMap.put(pip.getPid(), pip);
+ }
+ dbInfo = SqlManager.getInstance().loadApiNames();
+ if (null == dbInfo) {
+ DA_LOG.debug("failed - load Api names");
+ isSuccess = false;
+ } else {
+ List<String> apiList = ApiNameManager.getApiList();
+ for (List<String> info : dbInfo) {
+ apiList.add(info.get(0));
+ }
+ }
+ return isSuccess;
+ }
+
+ private boolean loadImageSet() {
+ List<List<String>> input = SqlManager.getInstance().getloadImageSet(3);
+ if (null == input) {
+ return false;
+ }
+
+ int size = input.size();
+
+ for (int i = 0; i < size; i++) {
+ List<String> imgLog = input.get(i);
+ String seq = imgLog.get(0);
+ String time = imgLog.get(1);
+ ImageInfo imgInfo = new ImageInfo();
+ imgInfo.setSeq(seq);
+ imgInfo.setTime(time);
+
+ String[] path = imgLog.get(2).split(CommonConstants.SLASH);
+ imgInfo.setFileName(new String(path[path.length - 1]));
+
+ AnalyzerManager.getImageSet().put(seq, imgInfo);
+ }
+ return true;
+ }
+
+ private boolean loadLeakData() {
+ boolean isSuccess = true;
+ List<List<String>> dbInfo = SqlManager.getInstance().setloadLeakData();
+ if (null == dbInfo) {
+ DA_LOG.debug("leak data loading failed..");
+ isSuccess = false;
+ } else {
+ LeakDetector leakDectector = AnalyzerManager.getLeakDetector();
+ for (int i = 0; i < dbInfo.size(); i++) {
+ List<String> info = dbInfo.get(i);
+ LeakData leakData = new LeakData(info);
+ if (-1 != leakData.getParentKey()) {
+ LeakData parent = leakDectector.getLeakHash().get(
+ leakData.getParentKey());
+ if (null == parent) {
+ continue;
+ } else {
+ parent.getChildren().add(leakData);
+ }
+ } else {
+ leakDectector.getLeakHash().put((long) leakData.getKey(),
+ leakData);
+ }
+ }
+ }
+ return isSuccess;
+ }
+
+ private boolean loadFailedData() {
+ boolean isSuccess = true;
+ List<List<String>> dbInfo = SqlManager.getInstance()
+ .setloadFailedData();
+ if (null == dbInfo) {
+ DA_LOG.debug("failed - loadFailedData");
+ isSuccess = false;
+ } else {
+ FailedChecker failedChecker = AnalyzerManager.getFailedChecker();
+ for (int i = 0; i < dbInfo.size(); i++) {
+ List<String> pInfo = dbInfo.get(i);
+ // possibility of extensions - network, efl, db, etc...
+ int id = Integer.parseInt(pInfo
+ .get(LogCenterConstants.ID_INDEX));
+ if (id == DataChannelConstants.MSG_PROBE_FILE) {
+ // if file failed api data is skip - file chart make it!
+ int type = Integer.parseInt(pInfo
+ .get(LogCenterConstants.RESOURCE_FDTYPE_INDEX));
+ if (type == LogCenterConstants.FD_TYPE_FILE) {
+ continue;
+ }
+ }
+ FailedData failedData = new FailedData(pInfo);
+ failedChecker.getFailedList().add(failedData);
+ }
+ }
+ return isSuccess;
+ }
+
+ private boolean loadProfilingData() {
+ boolean isSuccess = true;
+ List<List<String>> dbInfo = SqlManager.getInstance()
+ .setloadProfilingData();
+ if (null == dbInfo) {
+ DA_LOG.debug("failed - loadProfilingData");
+ isSuccess = false;
+ } else {
+ for (int i = 0; i < dbInfo.size(); i++) {
+ List<String> pInfo = dbInfo.get(i);
+ int pid = Integer.parseInt(pInfo.get(ProfilingData.PID_INDEX));
+ // possibility of extensions - network, efl, db, etc...
+ ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()
+ .getProfileDataMakerByPid(pid);
+ ProfilingData fupData = new ProfilingData(pInfo, profiler);
+ String seq = pInfo.get(ProfilingData.SEQUENCE_INDEX);
+ profiler.getProfilingDataMap().put(Integer.parseInt(seq),
+ fupData);
+ String symbol = pInfo.get(ProfilingData.KEY_INDEX);
+ profiler.getSymbolSeqHash().put(symbol, seq);
+ UIDataManager.getInstance().getfunctionProfilingDataChecker()
+ .addProfilingData(fupData);
+ // restore total sample count
+ profiler.setTotalSampleCount(profiler.getTotalSampleCount()
+ + fupData.getExCount());
+ }
+
+ List<Integer> pids = FunctionUsageProfiler.getInstance()
+ .getPidsOfProfileDataMakerMap();
+ for (int i = 0; i < pids.size(); i++) {
+ ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()
+ .getProfileDataMakerByPid(pids.get(i));
+ ProfilingData ab = profiler
+ .getProfilingDataByKey(FunctionUsageProfiler.APPLICATION_KEY);
+ profiler.setAppBin(ab);
+ ProfilingData dl = profiler
+ .getProfilingDataByKey(FunctionUsageProfiler.DEPENDENT_LIB_KEY);
+ profiler.setDependentLib(dl);
+ }
+ }
+ return isSuccess;
+ }
+
+ private boolean loadProfilingChildData() {
+ boolean isSuccess = true;
+ List<List<String>> dbInfo = SqlManager.getInstance()
+ .setloadProfilingChildData();
+ if (null == dbInfo) {
+ DA_LOG.debug("failed - loadProfilingChildData");
+ isSuccess = false;
+ } else {
+ for (int i = 0; i < dbInfo.size(); i++) {
+ List<String> data = dbInfo.get(i);
+ if (data.size() < 2) { // why?
+ continue;
+ }
+ int pid = Integer.parseInt(data.get(1)); // 1 == PID_INDEX
+ String seqs = data.get(2); // 2 == CHILDLIST_INDEX
+ String[] splitSeqs = seqs.split(CommonConstants.SLASH);
+ List<Integer> childData = new ArrayList<Integer>();
+ for (int ii = 0; ii < splitSeqs.length; ii++) {
+ childData.add(Integer.parseInt(splitSeqs[ii]));
+ }
+ int key = Integer.parseInt(data.get(0));
+ ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()
+ .getProfileDataMakerByPid(pid);
+ ProfilingData parent = profiler.getProfilingDataMap().get(key);
+ ProfilingChildData child = parent.getChildData();
+ child.getChildren().addAll(childData);
+ profiler.getChildListMap().put(data.get(0), child);
+ }
+ }
+ return isSuccess;
+ }
+
+ private void createWarningDialog(String message) {
+ final Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();
+ final DADialog dialog = new DADialog(shell, SWT.NONE);
+ dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
+ dialog.setMessage(message);
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ dialog.open();
+ }
+ });
+ }
+}
int logId = logIds.get(i);
Logs logs = logPack.getLogs(logId);
if (null != logs
- && (logId == DataChannelConstants.MSG_DATA_RECORD || logId == DataChannelConstants.MSG_PROBE_GLES20)) {
+ && (logId == DataChannelConstants.MSG_DATA_RECORD
+ || logId == DataChannelConstants.MSG_PROBE_GLES20 || logId == DataChannelConstants.MSG_PROBE_NETWORK)) {
continue;
}
if (null != logs) {
public static String HEAP_MEMORY_WARNING_PRE;
public static String HEAP_MEMORY_WARNING_POST;
+ public static String TIME_MS;
+
static {
NLS.initializeMessages(BUNDLE_NAME, AnalyzerLabels.class);
}
HEAP_MEMORY_WARNING_PRE=The trace has been stoped automatically for out of heap memory.\nIf you want to more, please edit the\n
HEAP_MEMORY_WARNING_POST=/dynamic-analyzer.ini.
+
+TIME_MS = ms
public static String NETWORK_CHART_SESSION_NAME;
public static String NETWORK_CHART_TRANSACTION_NAME;
- public static String NETWORK_DB_RID;
- public static String NETWORK_DB_DESTINATION_ADDRESS;
- public static String NETWORK_DB_FD_VALUE;
- public static String NETWORK_DB_API_ID;
-
- public static String NETWORK_API_DB_TABLENAME;
- public static String NETWORK_API_DB_API_TIME;
-
- public static String NETWORK_API_DB_ERRNO;
- public static String NETWORK_API_DB_ARGUMENT;
- public static String NETWORK_API_DB_RETURN;
- public static String NETWORK_API_DB_BYTE_SIZE;
- public static String NETWORK_API_DB_PAYLOAD;
- public static String NETWORK_API_DB_API_TYPE;
- public static String NETWORK_API_DB_CALLER_PC_ADDRESS;
- public static String NETWORK_API_DB_LIB_NAME;
-
- public static String NETWORK_SERIES_DB_TABLENAME;
- public static String NETWORK_SERIES_DB_START_TIME;
- public static String NETWORK_SERIES_DB_END_TIME;
- public static String NETWORK_SERIES_DB_STATUS_TYPE;
-
-
-
- public static String TIME_MS;
-
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, NetworkPageLabels.class);
NETWORK_CHART_SESSION_NAME=Session
NETWORK_CHART_TRANSACTION_NAME=Transaction
-TIME_MS = ms
-
-NETWORK_DB_RID = "RID"
-NETWORK_DB_DESTINATION_ADDRESS = DESTINATION_ADDRESS
-NETWORK_DB_FD_VALUE = FD_VALUE
-NETWORK_DB_API_ID = API_ID
-
-NETWORK_API_DB_TABLENAME = NETWORK_API
-NETWORK_API_DB_API_TIME = API_TIME
-NETWORK_API_DB_ERRNO = ERRNO
-NETWORK_API_DB_ARGUMENT = ARGUMENT
-NETWORK_API_DB_RETURN = RETURN
-NETWORK_API_DB_BYTE_SIZE = BYTE_SIZE
-NETWORK_API_DB_PAYLOAD = PAYLOAD
-NETWORK_API_DB_API_TYPE = API_TYPE
-NETWORK_API_DB_CALLER_PC_ADDRESS = CALLER_PC_ADDRESS
-NETWORK_API_DB_LIB_NAME = LIB_NAME
-
-NETWORK_SERIES_DB_TABLENAME = NETWORK_SERIES
-NETWORK_SERIES_DB_START_TIME = START_TIME
-NETWORK_SERIES_DB_END_TIME = END_TIME
-NETWORK_SERIES_DB_STATUS_TYPE = STATUS_TYPE
\ No newline at end of file
probeCallstack.set(size - 1, new CallStackItem(
callerCallstackUnit));
} else {
- // DA_LOG.debug("probe caller is not the same as top of user callstack"); //$NON-NLS-1$
+ DA_LOG.debug("probe caller is not the same as top of user callstack"); //$NON-NLS-1$
}
}
String path = processInfo.getMainTargetBinaryPath();
String key = AnalyzerUtil.getTargetPathKey(path);
- BinaryInfo binInfo = GlobalInformation.getCurrentApplication().getBinaryInfo(key);
+ BinaryInfo binInfo = GlobalInformation.getCurrentApplication()
+ .getBinaryInfo(key);
if (null == binInfo) {
return false;
}
import org.tizen.dynamicanalyzer.swap.model.format.MemoryLogFormat;
import org.tizen.dynamicanalyzer.swap.model.format.NetworkLogFormat;
import org.tizen.dynamicanalyzer.swap.model.format.ProfilingLogFormat;
-import org.tizen.dynamicanalyzer.swap.model.format.ReplayLogFormat;
import org.tizen.dynamicanalyzer.swap.model.format.SceneLogFormat;
import org.tizen.dynamicanalyzer.swap.model.format.ScreenShotLogFormat;
import org.tizen.dynamicanalyzer.swap.model.format.SyncLogFormat;
logList.add(MSG_PROBE_UICONTROL);
logList.add(MSG_PROBE_UIEVENT);
logList.add(MSG_PROBE_FILE);
- logList.add(MSG_PROBE_NETWORK);
- logList.add(MSG_PROBE_GLES20);
+// logList.add(MSG_PROBE_NETWORK);
+// logList.add(MSG_PROBE_GLES20);
logList.add(MSG_PROBE_LIFECYCLE);
logList.add(MSG_PROBE_SCREENSHOT);
logList.add(MSG_PROBE_SCENE);
logList.add(MSG_DATA_SAMPLE);
logList.add(MSG_DATA_SYSTEM);
logList.add(LogCenterConstants.LOG_USER_FUNCTION);
- logList.add(MSG_DATA_RECORD);
+// logList.add(MSG_DATA_RECORD);
logList.add(MSG_FUNCTION_ENTRY);
logList.add(MSG_FUNCTION_EXIT);
logList.add(MSG_CONTEXT_SWITCH_ENTRY);
logFormats.add(ControlLogFormat.getInstance());
logFormats.add(CustomChartLogFormat.getInstance());
logFormats.add(FileLogFormat.getInstance());
- logFormats.add(NetworkLogFormat.getInstance());
+ // logFormats.add(NetworkLogFormat.getInstance());
logFormats.add(LifeCycleLogFormat.getInstance());
logFormats.add(MemoryLogFormat.getInstance());
logFormats.add(ProfilingLogFormat.getInstance());
public int getChildChartIndex(int parentChartIndex, int seq) {
List<FileChartData> fileChartDataLow = getFileDataMaker().getFileChartLow();
+ if(fileChartDataLow.size() <=parentChartIndex){
+ return 0;
+ }
List<FileChartData> childData = fileChartDataLow.get(parentChartIndex)
.getChild();
FileChartData childChartData = null;
public class FileDataMaker {
private static final DALogger DA_LOG = DALogger.getInstance();
-
+
private DAChartBoard board;
private List<FileChartData> rows = new ArrayList<FileChartData>();
private List<FileChartDataEvent> fileEventQueue = new ArrayList<FileChartDataEvent>();
for (int i = 0; i < size; i++) {
FileData input = (FileData) inputs.get(i);
- if (ConfigurationDialogDataManager.getInstance()
- .getfeatureValue(
- ConfigureLabels.INCLUDE_INSIDE_CALL_FILE) == 0) {
+ if (ConfigurationDialogDataManager.getInstance().getfeatureValue(
+ ConfigureLabels.INCLUDE_INSIDE_CALL_FILE) == 0) {
if (input.isInternal()) {
continue;
}
// error check
if (errno != 0) {
- FailedData ffd = new FailedData(input);
- event.setFailedData(ffd);
- this.failedChecker.getFailedList().add(ffd);
- event.setFailedAPI();
+ switch (input.getFdApiType()) {
+ case LogCenterConstants.SOCKET_API_ACCEPT_END:
+ case LogCenterConstants.SOCKET_API_SEND_END:
+ case LogCenterConstants.SOCKET_API_RECV_END:
+ case LogCenterConstants.SOCKET_API_EVENT_END: {
+ FailedData ffd = new FailedData(input);
+ event.setFailedData(ffd);
+ this.failedChecker.getFailedList().add(ffd);
+ event.setFailedAPI();
+ }
+ }
} else if (name.equals("fdopen")) { //$NON-NLS-1$
DA_LOG.debug("fdopen");
continue;
import org.tizen.dynamicanalyzer.nl.NetworkPageLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.swap.channel.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.ui.network.data.NetworkDataManager;
import org.tizen.dynamicanalyzer.ui.network.data.StatusSeriesListSortComparator;
import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType;
import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSeriesType;
protected DAChartBoardItem item;
protected DAChart chart;
private List<NetworkChart> children = new ArrayList<NetworkChart>();
-
private DAChartSeries statueSeries;
private DAChartSeries apiSeries;
private DAChartSeries accessSeries;
private String destinationAddress = CommonConstants.EMPTY;
private String fdValue = CommonConstants.EMPTY;
+ private int parentChartIndex = -1;
+ private int childChartIndex = -1;
+ private int pId = -1;
+
public NetworkChart(String chartName, String destinationAddress,
- String fdValue, DAChartBoardItem item, DAChart chart) {
+ String fdValue, DAChartBoardItem item, DAChart chart,
+ int parentChartIndex, int childChartIndex) {
setChartName(chartName);
setDestinationAddress(destinationAddress);
setFdValue(fdValue);
setItem(item);
setChart(chart);
+ setParentChartIndex(parentChartIndex);
+ setChildChartIndex(childChartIndex);
}
public String getChartName() {
}
NetworkAPIType data = apiList.get(i);
DAChartSeriesItem seriesItem = null;
- double time = data.getTime() / TimelineConstants.MEGA_DOUBLE;
+ double time = getConvertTime(data.getTime());
Color color = ColorResources.NETWORK_API_USED;
String apiName = ApiNameManager.getApiName(data.getApiNameID());
if (data.getErrno() != 0) {
seriesItem = new DAChartSeriesItem(time,
DAChartSeriesItem.SERIES_STATE_BAR, color, apiName);
apiSeries.addSeriesItem(seriesItem);
+ if (!isParentChartRow() && data.getErrno() != 0) {
+ setChartIndexOfSeq(data.getSeq());
+ }
}
}
chart.redraw();
}
+ private void setChartIndexOfSeq(int seq) {
+ NetworkDataManager.getInstance().setParentIndexOfSeq(seq,
+ getParentChartIndex());
+ NetworkDataManager.getInstance().setChildIndexOfSeq(seq,
+ getChildChartIndex());
+ }
+
private void sortStatusSeriesByStartTime(List<NetworkSeriesType> statusList) {
Collections.sort(statusList, new StatusSeriesListSortComparator());
}
double startTime = -1;
double endTime = -1;
- double openTimeOfNotClosed = 999999999;
+ double openTimeOfNotClosed = NetworkDataManager.MAX_CHART_TIME;
for (int i = 0; i < statusList.size(); i++) {
if (getDestinationAddress().equals(
continue;
}
- startTime = data.getStartTime() / TimelineConstants.MEGA_DOUBLE;
- endTime = data.getEndTime() / TimelineConstants.MEGA_DOUBLE;
+ startTime = getConvertTime(data.getStartTime());
+ endTime = getConvertTime(data.getEndTime());
if (endTime > 0 && openTimeOfNotClosed > startTime) { // closed
DAChartSeriesItem seriesItem = new DAChartSeriesItem(
NetworkSeriesType data = null;
double startTime = -1;
double endTime = -1;
-
for (int i = 0; i < statusList.size(); i++) {
if (getDestinationAddress().equals(
statusList.get(i).getDestinationAddress())
if (isAccessEvnet(data.getAPIType())) {
continue;
}
- startTime = data.getStartTime() / TimelineConstants.MEGA_DOUBLE;
- endTime = data.getEndTime() / TimelineConstants.MEGA_DOUBLE;
-
+ startTime = getConvertTime(data.getStartTime());
+ endTime = getConvertTime(data.getEndTime());
}
}
if (null == data) {
if (!isAccessEvnet(data.getAPIType())) {
continue;
}
- startTime = data.getStartTime() / TimelineConstants.MEGA_DOUBLE;
- endTime = data.getEndTime() / TimelineConstants.MEGA_DOUBLE;
+ startTime = getConvertTime(data.getStartTime());
+ endTime = getConvertTime(data.getEndTime());
int status = data.getAPIType();
Color waitiColor = null;
chart.redraw();
}
+ private double getConvertTime(double logTime) {
+ return logTime / TimelineConstants.MEGA_DOUBLE;
+ }
+
private boolean isAccessEvnet(int apiType) {
{
if (apiType == NetworkSeriesType.ACCESS_TYPE_WAIT
}
}
+
+ public int getParentChartIndex() {
+ return parentChartIndex;
+ }
+
+ public void setParentChartIndex(int parentChartIndex) {
+ this.parentChartIndex = parentChartIndex;
+ }
+
+ public int getChildChartIndex() {
+ return childChartIndex;
+ }
+
+ public void setChildChartIndex(int childChartIndex) {
+ this.childChartIndex = childChartIndex;
+ }
+
+ public int getpId() {
+ return pId;
+ }
+
+ public void setpId(int pId) {
+ this.pId = pId;
+ }
}
\ No newline at end of file
package org.tizen.dynamicanalyzer.ui.network;
import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
import org.eclipse.swt.widgets.Composite;
import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSelectionType;
import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSeriesType;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
+import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
import org.tizen.dynamicanalyzer.widgets.chart.DAChart;
import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot;
import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot.AutoRangeType;
private int statusSeriesListCount = -1;
private boolean isFirstMakeChart = true;
+ private int parentChartIndex = -1;
+ private LinkedHashMap<Integer, Integer> lastChildChartIndexOfEachParent = new LinkedHashMap<Integer, Integer>();
+
+ private int preSelectionPId = -1;
+
public NetworkChartBoard(Composite parent, String title) {
super(parent, title);
initIntervalMarkers();
clearSeries();
updateSeries();
updateApiSeries();
+ chartFilteringByPId();
+ }
+
+ private void chartFilteringByPId() {
+ if (null == getItemList()) {
+ return;
+ }
+ int selectedPid = ToolbarArea.getInstance().getSelectedPid();
+ boolean isCheck = false;
+
+ if (preSelectionPId != -1 && preSelectionPId != selectedPid) {
+ isCheck = true;
+ }
+
+ if (isCheck) {
+ int parentIndex = 0;
+ for (NetworkChart chart : chartItemList) {
+ if (chart.isParentChartRow()) {
+ if (selectedPid == 0) {
+ showItem(parentIndex);
+ } else if (selectedPid == chart.getpId()) {
+ showItem(parentIndex);
+ } else {
+ hideItem(parentIndex);
+ }
+ parentIndex++;
+ }
+ }
+ }
+ preSelectionPId = selectedPid;
}
public void clear() {
statusSeriesListCount = -1;
isFirstMakeChart = true;
initIntervalMarkers();
+ parentChartIndex = -1;
+ lastChildChartIndexOfEachParent = new LinkedHashMap<Integer, Integer>();
+ preSelectionPId = -1;
}
public void initIntervalMarkers() {
NetworkChart parent = getParentChartData(destinationAddress, fd);
if (null == parent) {
+ parentChartIndex++;
+ lastChildChartIndexOfEachParent.put(parentChartIndex, 1);
StringBuffer chartName = new StringBuffer(
destinationAddress);
if (chartName.length() > 10) {
addSeries(parentDAChart);
NetworkChart parentChartData = new NetworkChart(
chartName.toString(), destinationAddress, fd,
- parentItem, parentDAChart);
+ parentItem, parentDAChart, parentChartIndex, 0);
chartItemList.add(parentChartData);
String childChartName = NetworkPageLabels.NETWORK_CHILD_CHART_NAME
addSeries(childDAChart);
NetworkChart childChartData = new NetworkChart(
childChartName, destinationAddress, fd, childItem,
- childDAChart);
+ childDAChart, parentChartIndex, 0);
parentChartData.pushChild(childChartData);
chartItemList.add(childChartData);
} else {
+ int childChartIndex = lastChildChartIndexOfEachParent
+ .get(parent.getParentChartIndex());
+
String childChartName = NetworkPageLabels.NETWORK_CHILD_CHART_NAME
+ fd;
DAChartBoardItem parentItem = parent.getItem();
+
DAChartBoardItem childItem = new DAChartBoardItem(
parentItem, childChartName);
childItem.setData(new NetworkSelectionType(
DAChart childDAChart = childItem.getChart();
initNetworkChart(childDAChart, false);
addSeries(childDAChart);
+
NetworkChart childChartData = new NetworkChart(
childChartName, destinationAddress, fd, childItem,
- childDAChart);
+ childDAChart, parent.getParentChartIndex(),
+ childChartIndex);
parent.pushChild(childChartData);
chartItemList.add(childChartData);
+ lastChildChartIndexOfEachParent.put(
+ parent.getParentChartIndex(), ++childChartIndex);
}
}
statusSeriesListCount = NetworkDataManager.getInstance()
List<NetworkSeriesType> seriesList = filetirngSeriresList();
for (NetworkChart chart : chartItemList) {
chart.updateStatusSeries(seriesList);
+ for (int i = 0; i < seriesList.size(); i++) {
+ if (chart.getDestinationAddress().equals(
+ seriesList.get(i).getDestinationAddress())
+ && chart.getFdValue().equals(
+ seriesList.get(i).getFdValue())) {
+ chart.setpId(seriesList.get(i).getpId());
+ }
+ }
}
for (NetworkChart chart : chartItemList) {
chart.updateAccessSeries(seriesList);
networkChartBoard.updateChart();
if (data instanceof DASelectionData) {
DASelectionData selData = (DASelectionData) data;
- long dataTime = -1;
- if (selData.isLogData()) {
+ String id = data.getViewID();
+ long dataTime = -1;
+ if (id.equals(NetworkPage.listViewID)) {
+ dataTime = selData.getStartTime();
+ moveChartPosition(dataTime, -1);
+ } else if (id.equals(NetworkPage.chartViewID)
+ || id.equals(NetworkPage.detailViewID)) {
+ return;
+ } else {
Object obData = selData.getData();
if (null != obData && (obData instanceof LogData)) { // summary
LogData ldata = (LogData) obData;
lastSelectedItemForSummary.getData(),
null));
}
+ moveChartPosition(dataTime, ldata.getSeq());
}
- } else {
- dataTime = selData.getStartTime();
}
- double selectionTime = dataTime / TimelineConstants.MEGA_DOUBLE;
-
- DAChartPlotIntervalMarker intervalMarker = (DAChartPlotIntervalMarker) networkChartBoard
- .getMarkers().get(UICommonConstants.SELECTION_MARKER_INDEX);
- intervalMarker.setInterval(selectionTime, selectionTime);
+ }
+ }
+ private void moveChartPosition(long dataTime, int seq) {
+ double selectionTime = dataTime / TimelineConstants.MEGA_DOUBLE;
+ networkChartBoard.setVisibleMiddleTime(selectionTime);
+ DAChartPlotIntervalMarker intervalMarker = (DAChartPlotIntervalMarker) networkChartBoard
+ .getMarkers().get(UICommonConstants.SELECTION_MARKER_INDEX);
+ intervalMarker.setInterval(selectionTime, selectionTime);
+ if (seq > 0) {
+ int parentChartIndex = NetworkDataManager.getInstance()
+ .getParentIndexOfSeq(seq);
+ int childChartIndex = NetworkDataManager.getInstance()
+ .getChildIndexOfSeq(seq);
+
+ networkChartBoard.selectItem(parentChartIndex, childChartIndex);
}
+
}
@Override
import org.tizen.dynamicanalyzer.common.DASelectionData;
import org.tizen.dynamicanalyzer.constant.CommonConstants;
import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
+import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
import org.tizen.dynamicanalyzer.nl.NetworkPageLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.FontResources;
import org.tizen.dynamicanalyzer.ui.network.data.NetworkDataManager;
import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType;
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat;
+import org.tizen.dynamicanalyzer.utils.DownloadContentfileManager;
import org.tizen.dynamicanalyzer.utils.Formatter;
import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite;
import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData;
if (!sendAckTime.equals(CommonConstants.EMPTY)) {
strDetailView.append(leftFormAttachment
+ NetworkPageLabels.NETWORK_DETAILS_SEND_ACK_TIME
- + sendAckTime + NetworkPageLabels.TIME_MS
+ + sendAckTime + AnalyzerLabels.TIME_MS
+ heightFormAttachment);
}
if (!payload.equals(CommonConstants.EMPTY)) {
detailText.getVerticalBar().setVisible(true);
detailText.getHorizontalBar().setVisible(true);
- strDetailView.append(setPacketMessage(payload));
+ strDetailView.append(getPacketMessage(DownloadContentfileManager
+ .getFileContents(payload)));
} else {
detailText.getVerticalBar().setVisible(true);
detailText.getHorizontalBar().setVisible(true);
}
- public String setPacketMessage(String packetMessage) {
+ public String getPacketMessage(String packetMessage) {
StringBuffer out = new StringBuffer();
StringBuffer strHex = new StringBuffer();
StringBuffer strAscii = new StringBuffer();
long startTime = 0;
long endTime = 0;
- DATableDataFormat dataFormat;
+ DATableDataFormat dataFormat = null;
long itemTime;
for (int i = 0; i < items.length; i++) {
dataFormat = (DATableDataFormat) items[i].getData();
}
DASelectionData selData = new DASelectionData(
NetworkTableView.ID, startTime, endTime, items, table);
+
AnalyzerManager.getCurrentPage().updateView(selData);
}
package org.tizen.dynamicanalyzer.ui.network.data;
import java.sql.PreparedStatement;
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.tizen.dynamicanalyzer.database.DBConstants;
import org.tizen.dynamicanalyzer.database.DBTable;
import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
-import org.tizen.dynamicanalyzer.nl.NetworkPageLabels;
import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
public class NetworkAPIDBManager extends DBTable {
- private static final String TABLENAME = NetworkPageLabels.NETWORK_API_DB_TABLENAME;
+ private static final String TABLENAME = "NETWORK_API"; //$NON-NLS-1$
public static final String SEQ = DBConstants.COMMON_COLUMN_SEQ;
- public static final String DESTINATION_ADDRESS = NetworkPageLabels.NETWORK_DB_DESTINATION_ADDRESS;
- public static final String FD_VALUE = NetworkPageLabels.NETWORK_DB_FD_VALUE;
- public static final String API_TIME = NetworkPageLabels.NETWORK_API_DB_API_TIME;
- public static final String API_NAME_ID = NetworkPageLabels.NETWORK_DB_API_ID;
- public static final String ERRNO = NetworkPageLabels.NETWORK_API_DB_ERRNO;
+ public static final String DESTINATION_ADDRESS = "DESTINATION_ADDRESS"; //$NON-NLS-1$
+ public static final String FD_VALUE = "FD_VALUE"; //$NON-NLS-1$
+ public static final String API_TIME = DBConstants.COMMON_COLUMN_TIME;
+ public static final String API_NAME_ID = DBConstants.COMMON_COLUMN_ID;
+ public static final String ERRNO = DBConstants.COMMON_COLUMN_ERROR;
public static final String PID = DBConstants.COMMON_COLUMN_PID;
public static final String TID = DBConstants.COMMON_COLUMN_TID;
- public static final String ARGUMENT = NetworkPageLabels.NETWORK_API_DB_ARGUMENT;
- public static final String RETURN = NetworkPageLabels.NETWORK_API_DB_RETURN;
- public static final String BYTE_SIZE = NetworkPageLabels.NETWORK_API_DB_BYTE_SIZE;
- public static final String PAYLOAD = NetworkPageLabels.NETWORK_API_DB_PAYLOAD;
- public static final String API_TYPE = NetworkPageLabels.NETWORK_API_DB_API_TYPE;
- public static final String CALLER_PC_ADDRESS = NetworkPageLabels.NETWORK_API_DB_CALLER_PC_ADDRESS;
- public static final String LIB_NAME = NetworkPageLabels.NETWORK_API_DB_LIB_NAME;
-
- private static final String SELECT_API_SERIES_QUERY = "select " + SEQ //$NON-NLS-1$
- + CommonConstants.COMMA + CommonConstants.SPACE
- + DESTINATION_ADDRESS + CommonConstants.COMMA
- + CommonConstants.SPACE + FD_VALUE + CommonConstants.COMMA
- + CommonConstants.SPACE + API_TIME + CommonConstants.COMMA
- + CommonConstants.SPACE + API_NAME_ID + CommonConstants.COMMA
- + CommonConstants.SPACE + ERRNO
+ public static final String ARGUMENT = DBConstants.COMMON_COLUMN_ARG;
+ public static final String RETURN = DBConstants.COMMON_COLUMN_RET;
+ public static final String BYTE_SIZE = "BYTE_SIZE"; //$NON-NLS-1$
+ public static final String PAYLOAD = "PAYLOAD"; //$NON-NLS-1$
+ public static final String API_TYPE = "API_TYPE"; //$NON-NLS-1$
+ public static final String CALLER_PC_ADDRESS = DBConstants.COMMON_COLUMN_CALLER_PC_ADDRESS;
+ public static final String LIB_NAME = DBConstants.COMMON_COLUMN_CALLER_LIB_NAME;
+
+ public static final int DB_SEQ_INDEX = 0;
+ public static final int DB_DESTINATION_ADDRESS_INDEX = 1;
+ public static final int DB_FD_VALUE_INDEX = 2;
+ public static final int DB_API_TIME_INDEX = 3;
+ public static final int DB_API_NAME_ID_INDEX = 4;
+ public static final int DB_ERRNO_INDEX = 5;
+ public static final int DB_PID_INDEX = 6;
+ public static final int DB_TID_INDEX = 7;
+ public static final int DB_ARGUMENT_INDEX = 8;
+ public static final int DB_RETURN_INDEX = 9;
+ public static final int DB_BYTE_SIZE_INDEX = 10;
+ public static final int DB_PAYLOAD_INDEX = 11;
+ public static final int DB_API_TYPE_INDEX = 12;
+ public static final int DB_CALLER_PC_ADDRESS_INDEX = 13;
+ public static final int DB_LIB_NAME_INDEX = 14;
+
+ private static final String SELECT_API_SERIES_QUERY = "select " //$NON-NLS-1$
+ + SEQ + CommonConstants.COMMA
+ + DESTINATION_ADDRESS
+ + CommonConstants.COMMA + FD_VALUE
+ + CommonConstants.COMMA
+ + API_TIME + CommonConstants.COMMA
+ + API_NAME_ID
+ + CommonConstants.COMMA + ERRNO
+ " from " //$NON-NLS-1$
- + TABLENAME + " where %s <= " + API_TIME + " and " + API_TIME
+ + TABLENAME + " where %s <= " + API_TIME + " and "
+ + API_TIME
+ " <= %s";//$NON-NLS-1$
- private static final String SELECT_API_TABLE_CHILD_QUERY = "select * from "//$NON-NLS-1$
+ private static final String SELECT_API_TABLE_CHILD_QUERY = "select " + SEQ//$NON-NLS-1$
+ + CommonConstants.COMMA + DESTINATION_ADDRESS
+ + CommonConstants.COMMA + FD_VALUE + CommonConstants.COMMA
+ + API_TIME + CommonConstants.COMMA + API_NAME_ID
+ + CommonConstants.COMMA + ERRNO + CommonConstants.COMMA + PID
+ + CommonConstants.COMMA + TID + CommonConstants.COMMA + ARGUMENT
+ + CommonConstants.COMMA + RETURN + CommonConstants.COMMA
+ + BYTE_SIZE + CommonConstants.COMMA + PAYLOAD
+ + CommonConstants.COMMA + API_TYPE + CommonConstants.COMMA
+ + CALLER_PC_ADDRESS + CommonConstants.COMMA + LIB_NAME + " from "//$NON-NLS-1$
+ TABLENAME + " where " + DESTINATION_ADDRESS + " = '%s' and "//$NON-NLS-1$
+ FD_VALUE + " = '%s'";//$NON-NLS-1$
- private static final String SELECT_API_TABLE_PARENT_QUERY = "select * from "//$NON-NLS-1$
+ private static final String SELECT_API_TABLE_PARENT_QUERY = "select " + SEQ//$NON-NLS-1$
+ + CommonConstants.COMMA + DESTINATION_ADDRESS
+ + CommonConstants.COMMA + FD_VALUE + CommonConstants.COMMA
+ + API_TIME + CommonConstants.COMMA + API_NAME_ID
+ + CommonConstants.COMMA + ERRNO + CommonConstants.COMMA + PID
+ + CommonConstants.COMMA + TID + CommonConstants.COMMA + ARGUMENT
+ + CommonConstants.COMMA + RETURN + CommonConstants.COMMA
+ + BYTE_SIZE + CommonConstants.COMMA + PAYLOAD
+ + CommonConstants.COMMA + API_TYPE + CommonConstants.COMMA
+ + CALLER_PC_ADDRESS + CommonConstants.COMMA + LIB_NAME + " from "//$NON-NLS-1$
+ TABLENAME + " where " + DESTINATION_ADDRESS + " = '%s'";//$NON-NLS-1$ //$NON-NLS-2$
@Override
@Override
public boolean prepare(PreparedStatement prep, List<Object> rowData) {
- // TODO Auto-generated method stub
- return false;
+ boolean isPrepared = true;
+ int columnsize = getColumnSize();
+ if (columnsize != rowData.size()) {
+ isPrepared = false;
+ } else {
+ try {
+ prep.setInt(DB_SEQ_INDEX + 1,
+ (Integer) (rowData.get(DB_SEQ_INDEX)));
+ prep.setString(DB_DESTINATION_ADDRESS_INDEX + 1,
+ (String) (rowData.get(DB_DESTINATION_ADDRESS_INDEX)));
+ prep.setString(DB_FD_VALUE_INDEX + 1,
+ (String) (rowData.get(DB_FD_VALUE_INDEX)));
+ prep.setLong(DB_API_TIME_INDEX + 1,
+ (Long) (rowData.get(DB_API_TIME_INDEX)));
+ prep.setInt(DB_API_NAME_ID_INDEX + 1,
+ (Integer) (rowData.get(DB_API_NAME_ID_INDEX)));
+ prep.setLong(DB_ERRNO_INDEX + 1,
+ (Long) (rowData.get(DB_ERRNO_INDEX)));
+ prep.setInt(DB_PID_INDEX + 1,
+ (Integer) (rowData.get(DB_PID_INDEX)));
+ prep.setInt(DB_TID_INDEX + 1,
+ (Integer) (rowData.get(DB_TID_INDEX)));
+ prep.setString(DB_ARGUMENT_INDEX + 1,
+ (String) (rowData.get(DB_ARGUMENT_INDEX)));
+ prep.setString(DB_RETURN_INDEX + 1,
+ (String) (rowData.get(DB_RETURN_INDEX)));
+ prep.setInt(DB_BYTE_SIZE_INDEX + 1,
+ (Integer) (rowData.get(DB_BYTE_SIZE_INDEX)));
+ prep.setString(DB_PAYLOAD_INDEX + 1,
+ (String) (rowData.get(DB_PAYLOAD_INDEX)));
+ prep.setInt(DB_API_TYPE_INDEX + 1,
+ (Integer) (rowData.get(DB_API_TYPE_INDEX)));
+ prep.setLong(DB_CALLER_PC_ADDRESS_INDEX + 1,
+ (Long) (rowData.get(DB_CALLER_PC_ADDRESS_INDEX)));
+ prep.setString(DB_LIB_NAME_INDEX + 1,
+ (String) (rowData.get(DB_LIB_NAME_INDEX)));
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+ isPrepared = false;
+ }
+ }
+ return isPrepared;
}
}
import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType;
import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSeriesType;
import org.tizen.dynamicanalyzer.ui.summary.failed.FailedChecker;
-import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData;
import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector;
import org.tizen.dynamicanalyzer.ui.summary.warning.WarningChecker;
import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialogDataManager;
import org.tizen.dynamicanalyzer.util.DALogger;
import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.utils.DownloadContentfileManager;
public class NetworkDataMaker {
private HashMap<String, String> addressByFdHashMap = new HashMap<String, String>();
private HashMap<String, String> parentFDByFdHashMap = new HashMap<String, String>();
- private FailedChecker failedChecker = null;
-
List<NetworkAPIType> noDestinationApiSeriesList = new ArrayList<NetworkAPIType>();
List<NetworkAPIType> destinationApiSeriesList = new ArrayList<NetworkAPIType>();
public NetworkDataMaker(FailedChecker failedChecker,
LeakDetector leakDetector, WarningChecker warningChecker) {
- this.failedChecker = failedChecker;
}
public void clear() {
}
makeEventData(input);
-
- long errno = input.getErrno();
-
- if (errno != 0) {
- FailedData ffd = new FailedData(input);
- this.failedChecker.getFailedList().add(ffd);
- }
}
if (destinationApiSeriesList.size() > 0) {
String apiFD = Long.toString(input.getFdValue()).trim();
apiFD = getHexString(apiFD);
int apiId = input.getApiId();
-
int apiType = input.getFdApiType();
long time = input.getTime();
long errno = input.getErrno();
}
case LogCenterConstants.SOCKET_API_ACCEPT_START:
setStartSeries(apiAddress, apiFD, time, -1,
- NetworkSeriesType.ACCESS_TYPE_WAIT, apiId);
+ NetworkSeriesType.ACCESS_TYPE_WAIT, apiId, pId);
break;
case LogCenterConstants.SOCKET_API_ACCEPT_END: {
String clientFD = returnValue;
}
case LogCenterConstants.SOCKET_API_RECV_START:
setStartSeries(apiAddress, apiFD, time, -1,
- NetworkSeriesType.ACCESS_TYPE_READ, apiId);
+ NetworkSeriesType.ACCESS_TYPE_READ, apiId, pId);
break;
case LogCenterConstants.SOCKET_API_RECV_END:
setEndSeries(apiAddress, apiFD, time,
NetworkSeriesType.ACCESS_TYPE_READ);
+ payloadInfo = DownloadContentfileManager.getDowonloadFilePath(payloadInfo);
break;
case LogCenterConstants.SOCKET_API_SEND_START:
setStartSeries(apiAddress, apiFD, time, -1,
- NetworkSeriesType.ACCESS_TYPE_WRITE, apiId);
+ NetworkSeriesType.ACCESS_TYPE_WRITE, apiId, pId);
break;
case LogCenterConstants.SOCKET_API_SEND_END:
setEndSeries(apiAddress, apiFD, time,
NetworkSeriesType.ACCESS_TYPE_WRITE);
+ payloadInfo = DownloadContentfileManager.getDowonloadFilePath(payloadInfo);
break;
case LogCenterConstants.SOCKET_API_EVENT_START:
setStartSeries(apiAddress, apiFD, time, -1,
- NetworkSeriesType.ACCESS_TYPE_WAIT, apiId);
+ NetworkSeriesType.ACCESS_TYPE_WAIT, apiId, pId);
break;
case LogCenterConstants.SOCKET_API_EVENT_END:
setEndSeries(apiAddress, apiFD, time,
NetworkDataManager.getInstance().getCheckStatusSeries()
.put(apiFD.trim(), apiAddress.trim());
setStartSeries(apiAddress, apiFD, time, -1,
- NetworkSeriesType.STATUS_TYPE_OPEN, apiId);
+ NetworkSeriesType.STATUS_TYPE_OPEN, apiId, pId);
}
}
}
}
private void setStartSeries(String apiAddress, String apiFD, long time,
- int eventType, int apiType, int apiId) {
+ int eventType, int apiType, int apiId, int pId) {
NetworkSeriesType statusType = new NetworkSeriesType(apiAddress, apiFD,
- time, -1, apiType, apiId);
+ time, -1, apiType, apiId, pId);
NetworkDataManager.getInstance().setStartSeriesData(statusType);
}
}
return retStr;
}
+
+ // private String getDowonloadPayloadFilePath(String payload) {
+ // if (payload.contains(AnalyzerConstants.CHECK_DOWNLOAD_FILE_STRING)) {
+ // String[] strFile = payload
+ // .split(AnalyzerConstants.CHECK_DOWNLOAD_FILE_STRING);
+ // if (strFile.length < 1) {
+ // return payload;
+ // }
+ // String downloadFilePath = strFile[1];
+ //
+ // String[] copyFilePathSplit = downloadFilePath.split(File.separator
+ // + AnalyzerConstants.TMP_FOLDER + File.separator);
+ // if (copyFilePathSplit.length < 1) {
+ // return payload;
+ // }
+ // String downloadFolderPath = File.separator
+ // + AnalyzerConstants.DOWNLOAD_FILE_FOLDER;
+ //
+ // File toDir = new File(AnalyzerManager.getProject().getSavePath()
+ // + downloadFolderPath);
+ // if (!toDir.exists() || !toDir.isDirectory()) {
+ // toDir.mkdirs();
+ // }
+ //
+ // String saveFilePath = downloadFolderPath + File.separator
+ // + copyFilePathSplit[1];
+ //
+ // if (pullPayloadFile(downloadFilePath, AnalyzerManager.getProject()
+ // .getSavePath() + saveFilePath)) {
+ // return saveFilePath;
+ // } else {
+ // return payload;
+ // }
+ // }
+ // return payload;
+ // }
+ //
+ // private boolean pullPayloadFile(String from, String to) {
+ // SyncResult res = CommunicatorUtils.pull(from, to);
+ // if (null != res && res.isOk()) {
+ // DALogger.getInstance().debug(from + "file copying success!!");//$NON-NLS-1$
+ // } else {
+ // DALogger.getInstance().debug("Failed to get " + from); //$NON-NLS-1$
+ // return false;
+ // }
+ // CommunicatorUtils.removeCommand(from);
+ // return true;
+ // }
}
import org.tizen.dynamicanalyzer.widgets.da.base.DADialog;
public class NetworkDataManager extends PageDataManager {
+ public final static int MAX_CHART_TIME = 999999999;
+
+ public final static double NETWORK_SERIES_TYPE_HEAP_MEMORY_KB = 0.3;
+ public final static double CHART_TYPE_HEAP_MEMORY_KB = 4.6 * 5;
+ public final static double MAX_NETWORK_HEAP_MEMORY_KB = 5000; // possible to make approximately 200 chart
+ public final static double ONE_CHART_HEAP_MEMORY_KB = NETWORK_SERIES_TYPE_HEAP_MEMORY_KB;
+ public final static double ONE_ACCESS_SERIES_HEAP_MEMORY_KB = NETWORK_SERIES_TYPE_HEAP_MEMORY_KB;
+
private static NetworkDataManager instance = null;
private NetworkDataMaker networkDataMaker = null;
private List<NetworkAPIType> selectedTableAPIList = null;
private LinkedHashMap<String, String> checkStatusSeries = new LinkedHashMap<String, String>();
private List<NetworkSeriesType> seriesList = new ArrayList<NetworkSeriesType>();
+ private LinkedHashMap<Integer, Integer> parentChartIndexOfSeq = new LinkedHashMap<Integer, Integer>();
+ private LinkedHashMap<Integer, Integer> childChartIndexOfSeq = new LinkedHashMap<Integer, Integer>();
- private int statusSeriesSize = 0;
+ private int chartCount = 0;
private int accessSeriesSize = 0;
+
private boolean isStopTrace = false;
public NetworkDataManager() {
selectedTableAPIList = null;
seriesList = new ArrayList<NetworkSeriesType>();
checkStatusSeries = new LinkedHashMap<String, String>();
- statusSeriesSize = 0;
+ parentChartIndexOfSeq = new LinkedHashMap<Integer, Integer>();
+ childChartIndexOfSeq = new LinkedHashMap<Integer, Integer>();
+ chartCount = 0;
accessSeriesSize = 0;
isStopTrace = false;
}
public void setStartSeriesData(NetworkSeriesType seriesType) {
if (seriesType.getAPIType() == NetworkSeriesType.STATUS_TYPE_OPEN) {
- statusSeriesSize++;
+ chartCount++;
} else {
accessSeriesSize++;
}
public void openProcess() {
// set series list from DB
if (seriesList.size() == 0) {
- seriesList = seriesDBManager.select(0, 999999999);
+ seriesList = seriesDBManager.select(0, MAX_CHART_TIME);
}
}
}
private void checkHeapMemory() {
- if (isStopTrace == false
- && (statusSeriesSize > 1000 || accessSeriesSize > 10000)) {
+ double useHeapMemory = (chartCount * ONE_CHART_HEAP_MEMORY_KB)
+ + (accessSeriesSize * ONE_ACCESS_SERIES_HEAP_MEMORY_KB);
+ if (!isStopTrace && (MAX_NETWORK_HEAP_MEMORY_KB < useHeapMemory)) {
isStopTrace = true;
ToolbarArea.getInstance().stopTrace();
Display.getDefault().asyncExec(new Runnable() {
}
}
+ public int getParentIndexOfSeq(int seq) {
+ Integer chartIndex = this.parentChartIndexOfSeq.get(seq);
+ if (null != chartIndex) {
+ return chartIndex;
+ } else {
+ return 0;
+ }
+ }
+
+ public void setParentIndexOfSeq(int seq, int paretnChartIndex) {
+ Integer chartIndex = this.parentChartIndexOfSeq.get(seq);
+ if (null == chartIndex) {
+ this.parentChartIndexOfSeq.put(seq, paretnChartIndex);
+ }
+
+ }
+
+ public int getChildIndexOfSeq(int seq) {
+ Integer chartIndex = this.childChartIndexOfSeq.get(seq);
+ if (null != chartIndex) {
+ return chartIndex;
+ } else {
+ return 0;
+ }
+ }
+
+ public void setChildIndexOfSeq(int seq, int childChartIndex) {
+ Integer chartIndex = this.childChartIndexOfSeq.get(seq);
+ if (null == chartIndex) {
+ this.childChartIndexOfSeq.put(seq, childChartIndex);
+ }
+
+ }
}
package org.tizen.dynamicanalyzer.ui.network.data;
import java.sql.PreparedStatement;
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
+import org.tizen.dynamicanalyzer.constant.CommonConstants;
import org.tizen.dynamicanalyzer.database.DBColumn;
import org.tizen.dynamicanalyzer.database.DBConstants;
import org.tizen.dynamicanalyzer.database.DBTable;
import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
-import org.tizen.dynamicanalyzer.nl.NetworkPageLabels;
import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSeriesType;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
+import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
public class NetworkSeriesDBManager extends DBTable {
+ private static final String TABLENAME = " NETWORK_SERIES"; //$NON-NLS-1$
+ public static final String RID = "RID";
+ public static final String DESTINATION_ADDRESS = "DESTINATION_ADDRESS"; //$NON-NLS-1$
+ public static final String FD_VALUE = "FD_VALUE"; //$NON-NLS-1$
+ public static final String START_TIME = "START_TIME"; //$NON-NLS-1$
+ public static final String END_TIME = "END_TIME"; //$NON-NLS-1$
+ public static final String STATUS_TYPE = "STATUS_TYPE"; //$NON-NLS-1$
+ public static final String API_ID = DBConstants.COMMON_COLUMN_ID;
+ public static final String PID = DBConstants.COMMON_COLUMN_PID;
- private static final String TABLENAME = NetworkPageLabels.NETWORK_SERIES_DB_TABLENAME;
- public static final String RID = NetworkPageLabels.NETWORK_DB_RID;
- public static final String DESTINATION_ADDRESS = NetworkPageLabels.NETWORK_DB_DESTINATION_ADDRESS;
- public static final String FD_VALUE = NetworkPageLabels.NETWORK_DB_FD_VALUE;
- public static final String START_TIME = NetworkPageLabels.NETWORK_SERIES_DB_START_TIME;
- public static final String END_TIME = NetworkPageLabels.NETWORK_SERIES_DB_END_TIME;
- public static final String STATUS_TYPE = NetworkPageLabels.NETWORK_SERIES_DB_STATUS_TYPE;
- public static final String API_ID = NetworkPageLabels.NETWORK_DB_API_ID;
+ public final static int DB_RID_INDEX = 0;
+ public final static int DB_DESTINATION_ADDRESSINDEX = 1;
+ public final static int DB_FD_VALUE_INDEX = 2;
+ public final static int DB_START_TIME_INDEX = 3;
+ public final static int DB_END_TIME_INDEX = 4;
+ public final static int DB_STATUS_TYPE_INDEX = 5;
+ public final static int DB_API_ID_INDEX = 6;
+ public final static int DB_PID_INDEX = 7;
- private static final String SELECT_QUERY = "select * from " + TABLENAME; //$NON-NLS-1$
+ private static final String SELECT_QUERY = "select " + RID
+ + CommonConstants.COMMA + DESTINATION_ADDRESS
+ + CommonConstants.COMMA + FD_VALUE + CommonConstants.COMMA
+ + START_TIME + CommonConstants.COMMA + END_TIME
+ + CommonConstants.COMMA + STATUS_TYPE + CommonConstants.COMMA
+ + API_ID + CommonConstants.COMMA + PID + " from " + TABLENAME; //$NON-NLS-1$
+
+ private static final String SELECT_PID_QUERY = "select " + RID
+ + CommonConstants.COMMA + DESTINATION_ADDRESS
+ + CommonConstants.COMMA + FD_VALUE + CommonConstants.COMMA
+ + START_TIME + CommonConstants.COMMA + END_TIME
+ + CommonConstants.COMMA + STATUS_TYPE + CommonConstants.COMMA
+ + API_ID + CommonConstants.COMMA + PID
+ + " from " + TABLENAME + " where pid = '%s'"; //$NON-NLS-1$
private static int rid = 0;
DBConstants.INTEGER));
addColumn(new DBColumn(API_ID, DBConstants.NOT_NULL,
DBConstants.INTEGER));
+ addColumn(new DBColumn(PID, DBConstants.NOT_NULL, DBConstants.INTEGER));
rid = 0;
}
public List<NetworkSeriesType> select(double visibleStartTime,
double visibleEndTime) {
+ String selectQuery = SELECT_QUERY;
+ int selectedPid = ToolbarArea.getInstance().getSelectedPid();
+ if (selectedPid != 0) {
+ selectQuery = String.format(SELECT_PID_QUERY, selectedPid);
+ }
+
double selectStartTime = visibleStartTime
* TimelineConstants.MEGA_DOUBLE;
double selectEndTime = visibleEndTime * TimelineConstants.MEGA_DOUBLE;
- String query = String.format(SELECT_QUERY, selectStartTime,
+ String query = String.format(selectQuery, selectStartTime,
selectEndTime);
List<List<Object>> result = SqlConnectionManager.executeQuery(query);
if (null == result || result.size() == 0 || result.get(0).size() == 0) {
@Override
public boolean prepare(PreparedStatement prep, List<Object> rowData) {
- // TODO Auto-generated method stub
- return false;
+ boolean isPrepared = true;
+ int columnsize = getColumnSize();
+ if (columnsize != rowData.size()) {
+ isPrepared = false;
+ } else {
+ try {
+ prep.setInt(DB_RID_INDEX + 1,
+ (Integer) (rowData.get(DB_RID_INDEX)));
+ prep.setString(DB_DESTINATION_ADDRESSINDEX + 1,
+ (String) (rowData.get(DB_DESTINATION_ADDRESSINDEX)));
+ prep.setString(DB_FD_VALUE_INDEX + 1,
+ (String) (rowData.get(DB_FD_VALUE_INDEX)));
+ prep.setLong(DB_START_TIME_INDEX + 1,
+ (Long) (rowData.get(DB_START_TIME_INDEX)));
+ prep.setLong(DB_END_TIME_INDEX + 1,
+ (Long) (rowData.get(DB_END_TIME_INDEX)));
+ prep.setInt(DB_STATUS_TYPE_INDEX + 1,
+ (Integer) (rowData.get(DB_STATUS_TYPE_INDEX)));
+ prep.setInt(DB_API_ID_INDEX + 1,
+ (Integer) (rowData.get(DB_API_ID_INDEX)));
+ prep.setInt(DB_PID_INDEX + 1,
+ (Integer) (rowData.get(DB_PID_INDEX)));
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+ isPrepared = false;
+ }
+ }
+ return isPrepared;
}
}
import org.tizen.dynamicanalyzer.constant.CommonConstants;
import org.tizen.dynamicanalyzer.swap.model.data.NetworkData;
+import org.tizen.dynamicanalyzer.ui.network.data.NetworkAPIDBManager;
public class NetworkAPIType extends NetworkData {
private final int apiSeriesColumnSize = 6;
}
public NetworkAPIType(List<Object> data) {
- setSeq((Integer) data.get(0));
- setDestinationAddress((String) data.get(1));
- setFdStr((String) data.get(2));
- setTime((Long) data.get(3));
- setApiNameID((Integer) data.get(4));
- setErrno((Long) data.get(5));
+ setSeq((Integer) data.get(NetworkAPIDBManager.DB_SEQ_INDEX));
+ setDestinationAddress((String) data
+ .get(NetworkAPIDBManager.DB_DESTINATION_ADDRESS_INDEX));
+ setFdStr((String) data.get(NetworkAPIDBManager.DB_FD_VALUE_INDEX));
+ setTime((Long) data.get(NetworkAPIDBManager.DB_API_TIME_INDEX));
+ setApiNameID((Integer) data
+ .get(NetworkAPIDBManager.DB_API_NAME_ID_INDEX));
+ setErrno((Long) data.get(NetworkAPIDBManager.DB_ERRNO_INDEX));
if (data.size() <= apiSeriesColumnSize) {
return;
}
- setPid((Integer) data.get(6));
- setTid((Integer) data.get(7));
- setArgs((String) data.get(8));
- setReturn((String) data.get(9));
- setPacketMessageSize((Integer) data.get(10));
- setPacketMessage((String) data.get(11));
- setFdApiType((Integer) data.get(12));
- setCallerAddress((Long) data.get(13));
- setLibName((String) data.get(14));
+ setPid((Integer) data.get(NetworkAPIDBManager.DB_PID_INDEX));
+ setTid((Integer) data.get(NetworkAPIDBManager.DB_PID_INDEX));
+ setArgs((String) data.get(NetworkAPIDBManager.DB_ARGUMENT_INDEX));
+ setReturn((String) data.get(NetworkAPIDBManager.DB_RETURN_INDEX));
+ setPacketMessageSize((Integer) data
+ .get(NetworkAPIDBManager.DB_BYTE_SIZE_INDEX));
+ setPacketMessage((String) data
+ .get(NetworkAPIDBManager.DB_PAYLOAD_INDEX));
+ setFdApiType((Integer) data.get(NetworkAPIDBManager.DB_API_TYPE_INDEX));
+ setCallerAddress((Long) data
+ .get(NetworkAPIDBManager.DB_CALLER_PC_ADDRESS_INDEX));
+ setLibName((String) data.get(NetworkAPIDBManager.DB_LIB_NAME_INDEX));
}
public int getSeq() {
import java.util.List;
import org.tizen.dynamicanalyzer.constant.CommonConstants;
+import org.tizen.dynamicanalyzer.ui.network.data.NetworkSeriesDBManager;
public class NetworkSeriesType {
public static final int HEAP_MEMORY = 128;
public static int STATUS_TYPE_OPEN = 0;
- public static int ACCESS_TYPE_WAIT = 1;
- public static int ACCESS_TYPE_READ = 2;
- public static int ACCESS_TYPE_WRITE = 3;
+ public static int STATUS_TYPE_CONNECTED = 1;
+ public static int ACCESS_TYPE_WAIT = 2;
+ public static int ACCESS_TYPE_READ = 3;
+ public static int ACCESS_TYPE_WRITE = 4;
private int rid = 0;
private String destinationAddress = CommonConstants.EMPTY;
private int apiType = -1;
private int apiID = -1;
+ private int pId = -1;
public NetworkSeriesType(String destinationAddress, String fdValue,
- long startTime, long endTime, int statusType, int apiId) {
+ long startTime, long endTime, int statusType, int apiId, int pId) {
setRid(0);
setDestinationAddress(destinationAddress);
setFdValue(fdValue);
setEndTime(endTime);
setAPIType(statusType);
setApiID(apiId);
+ setpId(pId);
}
public NetworkSeriesType(List<Object> data) {
- setRid((Integer) data.get(0));
- setDestinationAddress((String) data.get(1));
- setFdValue((String) data.get(2));
- setStartTime((Long) data.get(3));
- setEndTime((Long) data.get(4));
- setAPIType((Integer) data.get(5));
- setApiID((Integer) data.get(6));
+ setRid((Integer) data.get(NetworkSeriesDBManager.DB_RID_INDEX));
+ setDestinationAddress((String) data
+ .get(NetworkSeriesDBManager.DB_DESTINATION_ADDRESSINDEX));
+ setFdValue((String) data.get(NetworkSeriesDBManager.DB_FD_VALUE_INDEX));
+ setStartTime((Long) data
+ .get(NetworkSeriesDBManager.DB_START_TIME_INDEX));
+ setEndTime((Long) data.get(NetworkSeriesDBManager.DB_END_TIME_INDEX));
+ setAPIType((Integer) data
+ .get(NetworkSeriesDBManager.DB_STATUS_TYPE_INDEX));
+ setApiID((Integer) data.get(NetworkSeriesDBManager.DB_API_ID_INDEX));
+ setpId((Integer) data.get(NetworkSeriesDBManager.DB_API_ID_INDEX));
}
public int getRid() {
this.apiID = apiID;
}
+ public int getpId() {
+ return pId;
+ }
+
+ public void setpId(int pId) {
+ this.pId = pId;
+ }
+
public List<Object> getDBInsertData() {
List<Object> data = new ArrayList<Object>();
data.add(getRid());
data.add(getEndTime());
data.add(getAPIType());
data.add(getApiID());
+ data.add(getpId());
return data;
}
-
}
\ No newline at end of file
}
addrs.add(0, selfAddr);
} else {
- // DA_LOG.debug("makeFunctionUsageProfileData : cannot find seq by time");
+ DA_LOG.debug("makeFunctionUsageProfileData : cannot find seq by time");
addrs = new ArrayList<Long>();
addrs.add(selfAddr);
}