From: Hyunjong,park Date: Mon, 26 May 2014 00:20:23 +0000 (+0900) Subject: network : get event from summary page, and print the contents to download the file... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6272072b33ae0e680a30ec5831f1551de596dadf;p=sdk%2Ftools%2Fdynamic-analyzer.git network : get event from summary page, and print the contents to download the file on the device, and filtering by process , and fix multi select on chart for range feature Change-Id: Icb6f0c983af0634f0199014a79458f990ef600c1 --- diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DAChartBoardItemCell.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DAChartBoardItemCell.java index cfba807..a5906b6 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DAChartBoardItemCell.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DAChartBoardItemCell.java @@ -140,11 +140,12 @@ public class DAChartBoardItemCell extends Composite { 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 diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/DBConstants.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/DBConstants.java index 7ee8383..cae404e 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/DBConstants.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/DBConstants.java @@ -38,6 +38,7 @@ public class DBConstants { 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$ diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java index e7fc4ef..f2263be 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java @@ -1,495 +1,495 @@ -/* - * Dynamic Analyzer - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: - * Jooyoul Lee - * Juyoung Kim - * - * 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 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 logCenters = AnalyzerManager.getLogCenters(); - // List 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> dbInfo = SqlManager.getInstance() - .getCallStackDataFromTable(); - if (null == dbInfo) { - DA_LOG.debug("failed - loadCallStackData"); - isSuccess = false; - } else { - for (int i = 0; i < dbInfo.size(); i++) { - List 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 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> 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 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> dbInfo = SqlManager.getInstance().loadTargetInfo(); - if (null == dbInfo) { - DA_LOG.debug("failed - loadTargetInfo"); - isSuccess = false; - } else { - List info = dbInfo.get(0); - TargetInfo targetInfo = new TargetInfo(); - targetInfo.loadSaveFormat(info); - GlobalInformation.getCurrentDeviceInfo().setTargetInfo(targetInfo); - } - - List pids = SqlManager.getInstance().getPids(); - int pidCount = pids.size(); - - HashMap 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 pInfos = pip.getProcessSnapshots(); - for (int i = 0; i < dbInfo.size(); i++) { - List 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> objInfo = SqlManager.getInstance() - .loadLibObj(subOption); - if (null == objInfo) { - DA_LOG.debug("failed - load Lib Object"); - isSuccess = false; - continue; - } else { - for (List 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 apiList = ApiNameManager.getApiList(); - for (List info : dbInfo) { - apiList.add(info.get(0)); - } - } - return isSuccess; - } - - private boolean loadImageSet() { - List> input = SqlManager.getInstance().getloadImageSet(3); - if (null == input) { - return false; - } - - int size = input.size(); - - for (int i = 0; i < size; i++) { - List 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> 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 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> 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 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> dbInfo = SqlManager.getInstance() - .setloadProfilingData(); - if (null == dbInfo) { - DA_LOG.debug("failed - loadProfilingData"); - isSuccess = false; - } else { - for (int i = 0; i < dbInfo.size(); i++) { - List 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 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> dbInfo = SqlManager.getInstance() - .setloadProfilingChildData(); - if (null == dbInfo) { - DA_LOG.debug("failed - loadProfilingChildData"); - isSuccess = false; - } else { - for (int i = 0; i < dbInfo.size(); i++) { - List 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 childData = new ArrayList(); - 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(); - } - }); - } -} +/* + * Dynamic Analyzer + * + * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * Jooyoul Lee + * Juyoung Kim + * + * 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 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 logCenters = AnalyzerManager.getLogCenters(); + // List 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> dbInfo = SqlManager.getInstance() + .getCallStackDataFromTable(); + if (null == dbInfo) { + DA_LOG.debug("failed - loadCallStackData"); + isSuccess = false; + } else { + for (int i = 0; i < dbInfo.size(); i++) { + List 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 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> 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 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> dbInfo = SqlManager.getInstance().loadTargetInfo(); + if (null == dbInfo) { + DA_LOG.debug("failed - loadTargetInfo"); + isSuccess = false; + } else { + List info = dbInfo.get(0); + TargetInfo targetInfo = new TargetInfo(); + targetInfo.loadSaveFormat(info); + GlobalInformation.getCurrentDeviceInfo().setTargetInfo(targetInfo); + } + + List pids = SqlManager.getInstance().getPids(); + int pidCount = pids.size(); + + HashMap 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 pInfos = pip.getProcessSnapshots(); + for (int i = 0; i < dbInfo.size(); i++) { + List 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> objInfo = SqlManager.getInstance() + .loadLibObj(subOption); + if (null == objInfo) { + DA_LOG.debug("failed - load Lib Object"); + isSuccess = false; + continue; + } else { + for (List 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 apiList = ApiNameManager.getApiList(); + for (List info : dbInfo) { + apiList.add(info.get(0)); + } + } + return isSuccess; + } + + private boolean loadImageSet() { + List> input = SqlManager.getInstance().getloadImageSet(3); + if (null == input) { + return false; + } + + int size = input.size(); + + for (int i = 0; i < size; i++) { + List 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> 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 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> 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 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> dbInfo = SqlManager.getInstance() + .setloadProfilingData(); + if (null == dbInfo) { + DA_LOG.debug("failed - loadProfilingData"); + isSuccess = false; + } else { + for (int i = 0; i < dbInfo.size(); i++) { + List 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 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> dbInfo = SqlManager.getInstance() + .setloadProfilingChildData(); + if (null == dbInfo) { + DA_LOG.debug("failed - loadProfilingChildData"); + isSuccess = false; + } else { + for (int i = 0; i < dbInfo.size(); i++) { + List 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 childData = new ArrayList(); + 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(); + } + }); + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java index 103ac6f..0e03c1b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java @@ -102,7 +102,8 @@ public class LogInserter implements Runnable { 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) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.java index 4317fe1..2e1f711 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.java @@ -194,6 +194,8 @@ public class AnalyzerLabels extends NLS { 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); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.properties b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.properties index bb42b7d..d1d3556 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.properties +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.properties @@ -160,3 +160,5 @@ TABLE_COLUMN_RETURN=Return 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 diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/NetworkPageLabels.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/NetworkPageLabels.java index 02c8369..7a09954 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/NetworkPageLabels.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/NetworkPageLabels.java @@ -83,32 +83,6 @@ public class NetworkPageLabels extends NLS { 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); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/NetworkPageLabels.properties b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/NetworkPageLabels.properties index 55fc8c4..bc53a42 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/NetworkPageLabels.properties +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/NetworkPageLabels.properties @@ -50,25 +50,3 @@ NETWORK_CHART_CLIENT_NAME=Client 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 diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java index 164956c..a953e59 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java @@ -355,7 +355,7 @@ public class SWAPCallStackManager extends BaseCallstackManager { 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$ } } @@ -479,7 +479,8 @@ public class SWAPCallStackManager extends BaseCallstackManager { 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; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LogDataFactory.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LogDataFactory.java index dc2efc9..619d5b1 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LogDataFactory.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LogDataFactory.java @@ -63,7 +63,6 @@ import org.tizen.dynamicanalyzer.swap.model.format.LogFormat; 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; @@ -109,8 +108,8 @@ public class LogDataFactory { 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); @@ -120,7 +119,7 @@ public class LogDataFactory { 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); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/format/LogFormat.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/format/LogFormat.java index a46c83f..d4d04e9 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/format/LogFormat.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/format/LogFormat.java @@ -107,7 +107,7 @@ public class LogFormat { 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()); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartManager.java index 9a1903c..6d3d639 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartManager.java @@ -101,6 +101,9 @@ public class FileChartManager extends PageDataManager { public int getChildChartIndex(int parentChartIndex, int seq) { List fileChartDataLow = getFileDataMaker().getFileChartLow(); + if(fileChartDataLow.size() <=parentChartIndex){ + return 0; + } List childData = fileChartDataLow.get(parentChartIndex) .getChild(); FileChartData childChartData = null; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDataMaker.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDataMaker.java index d96c676..2df3e20 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDataMaker.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDataMaker.java @@ -73,7 +73,7 @@ import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem; public class FileDataMaker { private static final DALogger DA_LOG = DALogger.getInstance(); - + private DAChartBoard board; private List rows = new ArrayList(); private List fileEventQueue = new ArrayList(); @@ -132,9 +132,8 @@ public class FileDataMaker { 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; } @@ -165,10 +164,17 @@ public class FileDataMaker { // 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; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChart.java index fe3198c..47aaf96 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChart.java @@ -36,6 +36,7 @@ import org.tizen.dynamicanalyzer.constant.CommonConstants; 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; @@ -49,7 +50,6 @@ public class NetworkChart { protected DAChartBoardItem item; protected DAChart chart; private List children = new ArrayList(); - private DAChartSeries statueSeries; private DAChartSeries apiSeries; private DAChartSeries accessSeries; @@ -58,13 +58,20 @@ public class NetworkChart { 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() { @@ -138,7 +145,7 @@ public class NetworkChart { } 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) { @@ -147,11 +154,21 @@ public class NetworkChart { 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 statusList) { Collections.sort(statusList, new StatusSeriesListSortComparator()); } @@ -161,7 +178,7 @@ public class NetworkChart { 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( @@ -172,8 +189,8 @@ public class NetworkChart { 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( @@ -221,7 +238,6 @@ public class NetworkChart { NetworkSeriesType data = null; double startTime = -1; double endTime = -1; - for (int i = 0; i < statusList.size(); i++) { if (getDestinationAddress().equals( statusList.get(i).getDestinationAddress()) @@ -231,9 +247,8 @@ public class NetworkChart { 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) { @@ -299,8 +314,8 @@ public class NetworkChart { 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; @@ -325,6 +340,10 @@ public class NetworkChart { chart.redraw(); } + private double getConvertTime(double logTime) { + return logTime / TimelineConstants.MEGA_DOUBLE; + } + private boolean isAccessEvnet(int apiType) { { if (apiType == NetworkSeriesType.ACCESS_TYPE_WAIT @@ -337,4 +356,28 @@ public class NetworkChart { } } + + 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 diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartBoard.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartBoard.java index 5dd1a51..b2754a4 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartBoard.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartBoard.java @@ -27,6 +27,7 @@ package org.tizen.dynamicanalyzer.ui.network; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import org.eclipse.swt.widgets.Composite; @@ -50,6 +51,7 @@ import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType; 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; @@ -68,6 +70,11 @@ public class NetworkChartBoard extends DAChartBoard { private int statusSeriesListCount = -1; private boolean isFirstMakeChart = true; + private int parentChartIndex = -1; + private LinkedHashMap lastChildChartIndexOfEachParent = new LinkedHashMap(); + + private int preSelectionPId = -1; + public NetworkChartBoard(Composite parent, String title) { super(parent, title); initIntervalMarkers(); @@ -104,6 +111,36 @@ public class NetworkChartBoard extends DAChartBoard { 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() { @@ -112,6 +149,9 @@ public class NetworkChartBoard extends DAChartBoard { statusSeriesListCount = -1; isFirstMakeChart = true; initIntervalMarkers(); + parentChartIndex = -1; + lastChildChartIndexOfEachParent = new LinkedHashMap(); + preSelectionPId = -1; } public void initIntervalMarkers() { @@ -266,6 +306,8 @@ public class NetworkChartBoard extends DAChartBoard { NetworkChart parent = getParentChartData(destinationAddress, fd); if (null == parent) { + parentChartIndex++; + lastChildChartIndexOfEachParent.put(parentChartIndex, 1); StringBuffer chartName = new StringBuffer( destinationAddress); if (chartName.length() > 10) { @@ -283,7 +325,7 @@ public class NetworkChartBoard extends DAChartBoard { 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 @@ -297,13 +339,17 @@ public class NetworkChartBoard extends DAChartBoard { 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( @@ -311,11 +357,15 @@ public class NetworkChartBoard extends DAChartBoard { 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() @@ -349,6 +399,14 @@ public class NetworkChartBoard extends DAChartBoard { List 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); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartView.java index e95b7fc..d65c0cf 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartView.java @@ -169,9 +169,16 @@ public class NetworkChartView extends DAViewComposite { 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; @@ -183,17 +190,27 @@ public class NetworkChartView extends DAViewComposite { 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 diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkDetailView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkDetailView.java index f3ec776..43cdc7d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkDetailView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkDetailView.java @@ -42,12 +42,14 @@ import org.eclipse.swt.widgets.Text; 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; @@ -252,14 +254,15 @@ public class NetworkDetailView extends DAViewComposite { 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); @@ -269,7 +272,7 @@ public class NetworkDetailView extends DAViewComposite { } - public String setPacketMessage(String packetMessage) { + public String getPacketMessage(String packetMessage) { StringBuffer out = new StringBuffer(); StringBuffer strHex = new StringBuffer(); StringBuffer strAscii = new StringBuffer(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkTable.java index 6f352a0..5e748db 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkTable.java @@ -66,7 +66,7 @@ public class NetworkTable extends DAApiListTableComposite { 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(); @@ -83,6 +83,7 @@ public class NetworkTable extends DAApiListTableComposite { } DASelectionData selData = new DASelectionData( NetworkTableView.ID, startTime, endTime, items, table); + AnalyzerManager.getCurrentPage().updateView(selData); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkAPIDBManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkAPIDBManager.java index 9b75802..304e972 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkAPIDBManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkAPIDBManager.java @@ -1,6 +1,7 @@ package org.tizen.dynamicanalyzer.ui.network.data; import java.sql.PreparedStatement; +import java.sql.SQLException; import java.util.ArrayList; import java.util.List; @@ -9,45 +10,80 @@ 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.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 @@ -126,8 +162,49 @@ public class NetworkAPIDBManager extends DBTable { @Override public boolean prepare(PreparedStatement prep, List 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; } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkDataMaker.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkDataMaker.java index a607de8..1b178b8 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkDataMaker.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkDataMaker.java @@ -40,26 +40,23 @@ import org.tizen.dynamicanalyzer.swap.model.data.NetworkData; 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 addressByFdHashMap = new HashMap(); private HashMap parentFDByFdHashMap = new HashMap(); - private FailedChecker failedChecker = null; - List noDestinationApiSeriesList = new ArrayList(); List destinationApiSeriesList = new ArrayList(); public NetworkDataMaker(FailedChecker failedChecker, LeakDetector leakDetector, WarningChecker warningChecker) { - this.failedChecker = failedChecker; } public void clear() { @@ -83,13 +80,6 @@ public class NetworkDataMaker { } makeEventData(input); - - long errno = input.getErrno(); - - if (errno != 0) { - FailedData ffd = new FailedData(input); - this.failedChecker.getFailedList().add(ffd); - } } if (destinationApiSeriesList.size() > 0) { @@ -120,7 +110,6 @@ public class NetworkDataMaker { 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(); @@ -156,7 +145,7 @@ public class NetworkDataMaker { } 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; @@ -175,23 +164,25 @@ public class NetworkDataMaker { } 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, @@ -340,7 +331,7 @@ public class NetworkDataMaker { NetworkDataManager.getInstance().getCheckStatusSeries() .put(apiFD.trim(), apiAddress.trim()); setStartSeries(apiAddress, apiFD, time, -1, - NetworkSeriesType.STATUS_TYPE_OPEN, apiId); + NetworkSeriesType.STATUS_TYPE_OPEN, apiId, pId); } } } @@ -363,10 +354,10 @@ public class NetworkDataMaker { } 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); } @@ -398,4 +389,52 @@ public class NetworkDataMaker { } 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; + // } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkDataManager.java index cee30e5..fd479dc 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkDataManager.java @@ -51,6 +51,14 @@ import org.tizen.dynamicanalyzer.util.WorkbenchUtil; 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; @@ -60,9 +68,12 @@ public class NetworkDataManager extends PageDataManager { private List selectedTableAPIList = null; private LinkedHashMap checkStatusSeries = new LinkedHashMap(); private List seriesList = new ArrayList(); + private LinkedHashMap parentChartIndexOfSeq = new LinkedHashMap(); + private LinkedHashMap childChartIndexOfSeq = new LinkedHashMap(); - private int statusSeriesSize = 0; + private int chartCount = 0; private int accessSeriesSize = 0; + private boolean isStopTrace = false; public NetworkDataManager() { @@ -115,7 +126,9 @@ public class NetworkDataManager extends PageDataManager { selectedTableAPIList = null; seriesList = new ArrayList(); checkStatusSeries = new LinkedHashMap(); - statusSeriesSize = 0; + parentChartIndexOfSeq = new LinkedHashMap(); + childChartIndexOfSeq = new LinkedHashMap(); + chartCount = 0; accessSeriesSize = 0; isStopTrace = false; } @@ -130,7 +143,7 @@ public class NetworkDataManager extends PageDataManager { public void setStartSeriesData(NetworkSeriesType seriesType) { if (seriesType.getAPIType() == NetworkSeriesType.STATUS_TYPE_OPEN) { - statusSeriesSize++; + chartCount++; } else { accessSeriesSize++; } @@ -156,7 +169,7 @@ public class NetworkDataManager extends PageDataManager { public void openProcess() { // set series list from DB if (seriesList.size() == 0) { - seriesList = seriesDBManager.select(0, 999999999); + seriesList = seriesDBManager.select(0, MAX_CHART_TIME); } } @@ -189,8 +202,9 @@ public class NetworkDataManager extends PageDataManager { } 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() { @@ -209,4 +223,37 @@ public class NetworkDataManager extends PageDataManager { } } + 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); + } + + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkSeriesDBManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkSeriesDBManager.java index 9cd9e1b..94e32e0 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkSeriesDBManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkSeriesDBManager.java @@ -1,29 +1,53 @@ 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; @@ -45,6 +69,7 @@ public class NetworkSeriesDBManager extends DBTable { DBConstants.INTEGER)); addColumn(new DBColumn(API_ID, DBConstants.NOT_NULL, DBConstants.INTEGER)); + addColumn(new DBColumn(PID, DBConstants.NOT_NULL, DBConstants.INTEGER)); rid = 0; } @@ -57,10 +82,16 @@ public class NetworkSeriesDBManager extends DBTable { public List 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> result = SqlConnectionManager.executeQuery(query); if (null == result || result.size() == 0 || result.get(0).size() == 0) { @@ -75,8 +106,35 @@ public class NetworkSeriesDBManager extends DBTable { @Override public boolean prepare(PreparedStatement prep, List 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; } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/type/NetworkAPIType.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/type/NetworkAPIType.java index f4c8cb0..19ab607 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/type/NetworkAPIType.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/type/NetworkAPIType.java @@ -32,6 +32,7 @@ import java.util.List; 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; @@ -63,24 +64,29 @@ public class NetworkAPIType extends NetworkData { } public NetworkAPIType(List 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() { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/type/NetworkSeriesType.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/type/NetworkSeriesType.java index 20d44f4..a3767af 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/type/NetworkSeriesType.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/type/NetworkSeriesType.java @@ -31,13 +31,15 @@ import java.util.ArrayList; 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; @@ -47,9 +49,10 @@ public class NetworkSeriesType { 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); @@ -57,16 +60,21 @@ public class NetworkSeriesType { setEndTime(endTime); setAPIType(statusType); setApiID(apiId); + setpId(pId); } public NetworkSeriesType(List 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() { @@ -125,6 +133,14 @@ public class NetworkSeriesType { this.apiID = apiID; } + public int getpId() { + return pId; + } + + public void setpId(int pId) { + this.pId = pId; + } + public List getDBInsertData() { List data = new ArrayList(); data.add(getRid()); @@ -134,7 +150,7 @@ public class NetworkSeriesType { data.add(getEndTime()); data.add(getAPIType()); data.add(getApiID()); + data.add(getpId()); return data; } - } \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java index 360cc6d..f8c65f2 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java @@ -438,7 +438,7 @@ public class ProfileDataMaker { } 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(); addrs.add(selfAddr); }