From 3f545ac5f21c84ac3291d0fd0d002e0d055cdf6c Mon Sep 17 00:00:00 2001 From: jooyoul_lee Date: Tue, 5 Nov 2013 15:13:04 +0900 Subject: [PATCH] [Title] bug fixed [Desc.] Open trace fixed [Issue] --- .../dynamicanalyzer/handlers/OpenTraceHandler.java | 14 ++--- .../tizen/dynamicanalyzer/sql/DBTableManager.java | 6 +- .../org/tizen/dynamicanalyzer/sql/SqlManager.java | 7 ++- .../swap/channel/data/DataChannelConstants.java | 5 ++ .../tizen/dynamicanalyzer/swap/model/DATime.java | 4 +- .../swap/model/data/ProfileData.java | 5 +- .../swap/model/format/ProfilingLogFormat.java | 4 +- .../ui/toolbar/opentrace/OpenTraceInputReader.java | 68 ++++++++++++++++------ 8 files changed, 77 insertions(+), 36 deletions(-) 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 d49e6cf..e5b0474 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java @@ -114,9 +114,8 @@ public class OpenTraceHandler extends AbstractHandler { } int percent = OpenTraceProgressManager.getInstance().getPercent(); - if (loadInfos() - // && loadCallStackData() && loadCallStackApis() - // && loadProfilingData() && loadProfilingChildData() + if (loadInfos() && loadCallStackData() && loadCallStackApis() + && loadProfilingData() && loadProfilingChildData() && loadLeakData() && loadFailedData() && loadImageSet()) { OpenTraceProgressManager.getInstance().setProgressPercent( @@ -263,16 +262,17 @@ public class OpenTraceHandler extends AbstractHandler { for (int i = 0; i < dbInfo.size(); i++) { List info = dbInfo.get(i); ProcessInfo process = new ProcessInfo(); - process.loadSaveFormat(info.get(i)); + process.loadSaveFormat(info.get(1)); pInfos.add(process); if (i == 0) { pip.setPid(process.getPid()); pip.setPpid(process.getPpid()); - pip.setTargetBinaryPath(process.getMainTargetBinaryPath()); + pip.setTargetBinaryPath(process + .getMainTargetBinaryPath()); } String subOption = "where pid = " + process.getPid() - + " and time = " - + process.getStartTime().getSaveFormat(); + + " and time = \'" + + process.getStartTime().getSaveFormat() + "\'"; List> objInfo = SqlManager.getInstance() .loadLibObj(subOption); if (null == objInfo) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/DBTableManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/DBTableManager.java index 336ee96..f86f8b2 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/DBTableManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/DBTableManager.java @@ -279,9 +279,9 @@ public class DBTableManager { // process info { - String[] names = { PROCESS_INFO }; - String[] options = { EMPTY }; - String[] types = { TEXT }; + String[] names = {COMMON_COLUMN_PID, PROCESS_INFO }; + String[] options = { EMPTY, EMPTY }; + String[] types = { TEXT, TEXT }; DBTableInfo processInfoTableInfo = new DBTableInfo( TABLE_NAME_PROCESS_INFO, names, options, types); tableInfos.set(TABLE_INDEX_PROCESS_INFO, processInfoTableInfo); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java index 0be83e7..27d5f2a 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java @@ -433,10 +433,11 @@ public class SqlManager { for (int i = 0; i < processInfoList.size(); i++) { ProcessInfo pInfo = processInfoList.get(i); - List insetRowData = new ArrayList(); - insetRowData.add(pInfo.getSaveFormat()); + List insertRowData = new ArrayList(); + insertRowData.add(Integer.toString(pInfo.getPid())); + insertRowData.add(pInfo.getSaveFormat()); List> insetData = new ArrayList>(); - insetData.add(insetRowData); + insetData.add(insertRowData); insertQuery(insertQuery, insetData); insertLibObj(pInfo); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/channel/data/DataChannelConstants.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/channel/data/DataChannelConstants.java index 67eb70d..5febf7e 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/channel/data/DataChannelConstants.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/channel/data/DataChannelConstants.java @@ -52,4 +52,9 @@ public class DataChannelConstants { public final static int MSG_PROBE_SYNC = 0x0110; public final static int MSG_PROBE_NETWORK = 0x0111; public final static int MSG_PROBE_GLES20 = 0x0112; + + public final static int DB_TYPE_PROFILE = 0x0001; + public final static int DB_TYPE_CONTEXTSWITCH = 0x0002; + public final static int DB_TYPE_PROBE = 0x0004; + public final static int DB_TYPE_SYSTEM = 0x0008; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/DATime.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/DATime.java index f4295dd..8536312 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/DATime.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/DATime.java @@ -52,12 +52,12 @@ public class DATime { } public String getSaveFormat() { - return Integer.toString(sec) + CommonConstants.COMMA + return Integer.toString(sec) + CommonConstants.DASH + Integer.toString(nano); } public void loadSaveFormat(String saveData) { - String[] splitData = saveData.split(CommonConstants.COMMA); + String[] splitData = saveData.split(CommonConstants.DASH); sec = Integer.parseInt(splitData[0]); nano = Integer.parseInt(splitData[1]); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProfileData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProfileData.java index 78bc681..43594bb 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProfileData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProfileData.java @@ -254,9 +254,10 @@ public class ProfileData extends LogData { prep.setInt(index++, pid); prep.setInt(index++, tid); prep.setInt(index++, cpuNum); - prep.setLong(index++, ret); prep.setString(index++, args); + prep.setLong(index++, ret); prep.setString(index++, apiName); + prep.setString(index++, libName); prep.setString(index++, callstack); } @@ -271,8 +272,8 @@ public class ProfileData extends LogData { pid = rs.getInt(index++); tid = rs.getInt(index++); cpuNum = rs.getInt(index++); - ret = rs.getLong(index++); args = rs.getString(index++); + ret = rs.getLong(index++); apiName = rs.getString(index++); libName = rs.getString(index++); callstack = rs.getString(index++); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/format/ProfilingLogFormat.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/format/ProfilingLogFormat.java index f11fb6c..72ff20d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/format/ProfilingLogFormat.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/format/ProfilingLogFormat.java @@ -47,7 +47,7 @@ public class ProfilingLogFormat extends LogFormat { dbColumnNames = HeaderColumns.getDBColumnNames(); dbColumnNames.addAll(Arrays.asList(dcn)); - Integer[] dct = { L, L, I, I, I, I, I, T, L, T, T, T }; + Integer[] dct = { L, L, I, I, I, I, I, T, T, T, T, T }; dbColumnTypes = HeaderColumns.getDBColumntypes(); dbColumnTypes.addAll(Arrays.asList(dct)); @@ -56,7 +56,7 @@ public class ProfilingLogFormat extends LogFormat { tableColumnNames = HeaderColumns.getTableColumnNames(); tableColumnNames.addAll(Arrays.asList(tcn)); - Integer[] types = { L, L, I, I, I, I, I, S, L, S, S, S }; + Integer[] types = { L, L, I, I, I, I, I, S, S, S, S, S }; logColumnTypes = HeaderColumns.getLogColumnTypes(); logColumnTypes.addAll(Arrays.asList(types)); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java index 42e2863..f202dc5 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java @@ -79,13 +79,16 @@ public class OpenTraceInputReader implements Runnable { AnalyzerManager.setLogParsingComplete(false); Project p = AnalyzerManager.getProject(); long last = p.getLogCount(); - createPackage(last, DataChannelConstants.MSG_PROBE_FILE); - last = p.getDeviceLogCount(); - createPackage(last, DataChannelConstants.MSG_DATA_SYSTEM); + createPackage(last, DataChannelConstants.DB_TYPE_SYSTEM); last = p.getProfileLogCount(); - createPackage(last, DataChannelConstants.MSG_DATA_SAMPLE); + createPackage(last, DataChannelConstants.DB_TYPE_PROFILE); + + createPackage(last, DataChannelConstants.DB_TYPE_PROBE); + // TODO : context switch data + // last = p.getProfileLogCount(); + // createPackage(last, DataChannelConstants.MSG_DATA_SAMPLE); System.out.println("input reader complete"); //$NON-NLS-1$ AnalyzerManager.setLogParsingComplete(true); @@ -94,36 +97,67 @@ public class OpenTraceInputReader implements Runnable { private void createPackage(long last, int type) { List input = null; - LogPackage logPackage = new LogPackage(); long from = 0; long to = AnalyzerConstants.DATABASE_READ_SIZE; while (!Thread.interrupted()) { if (to >= last) { to = last; } - if (type == DataChannelConstants.MSG_DATA_SAMPLE - || type == DataChannelConstants.MSG_DATA_SYSTEM) { - input = SqlManager.getInstance().selectArea(type, from, to); - Logs logs = new Logs(type); - logs.setLogs(input); - logPackage.setLogs(type, logs); - } else { + + LogPackage logPackage = new LogPackage(); + switch (type) { + case DataChannelConstants.DB_TYPE_PROFILE: + input = SqlManager.getInstance().selectArea( + DataChannelConstants.MSG_FUNCTION_ENTRY, from, to); + if (null != input && !input.isEmpty()) { + for (int i = 0; i < input.size(); i++) { + int id = input.get(i).getId(); + logPackage.setLogs(id, input.get(i)); + } + } + break; + case DataChannelConstants.DB_TYPE_PROBE: List ids = LogDataFactory.getLogList(); int size = ids.size(); for (int i = 0; i < size; i++) { int id = ids.get(i); - if (id == DataChannelConstants.MSG_DATA_SAMPLE - || id == DataChannelConstants.MSG_DATA_SYSTEM) { + if (id == DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY + || id == DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT + || id == DataChannelConstants.MSG_FUNCTION_ENTRY + || id == DataChannelConstants.MSG_FUNCTION_EXIT + || id == DataChannelConstants.MSG_DATA_SAMPLE + || id == DataChannelConstants.MSG_DATA_SYSTEM + || id == DataChannelConstants.MSG_DATA_RECORD) { continue; } Logs logs = new Logs(id); input = SqlManager.getInstance().selectArea(id, from, to); - logs.setLogs(input); - logPackage.setLogs(id, logs); + if (null != input && !input.isEmpty()) { + logs.setLogs(input); + logPackage.setLogs(id, logs); + } } // for + break; + case DataChannelConstants.DB_TYPE_SYSTEM: + input = SqlManager.getInstance().selectArea( + DataChannelConstants.MSG_DATA_SYSTEM, from, to); + Logs logs = new Logs(DataChannelConstants.MSG_DATA_SYSTEM); + if (null != input && !input.isEmpty()) { + logs.setLogs(input); + logPackage.setLogs(DataChannelConstants.MSG_DATA_SYSTEM, + logs); + } + break; + case DataChannelConstants.DB_TYPE_CONTEXTSWITCH: + // TODO: + break; + default: + break; } - updateLog(logPackage); + if (!logPackage.isEmpty()) { + updateLog(logPackage); + } if (to == last) { break; } -- 2.7.4