import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
import org.tizen.dynamicanalyzer.ui.summary.failed.FailedChecker;
import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector;
+import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector2;
import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
import org.tizen.dynamicanalyzer.ui.summary.warning.WarningChecker;
import org.tizen.dynamicanalyzer.ui.toolbar.ConfigureManager;
private static HashMap<Integer, HashMap<Long, String>> funcNameMapByPid = null;
private static LeakDetector leakDetector = new LeakDetector();
+ private static LeakDetector2 leakDetector2 = new LeakDetector2(); // add 201405
private static FailedChecker failedChecker = new FailedChecker();
private static FailedChecker calledChecker = new FailedChecker();
private static WarningChecker warningChecker = new WarningChecker();
imageListSize = 0;
leakDetector.clear();
+ leakDetector2.clear(); // add 201405
failedChecker.clear();
warningChecker.clear();
calledChecker.clear();
public static LeakDetector getLeakDetector() {
return leakDetector;
}
+
+ public static LeakDetector2 getLeakDetector2() { // add 201405
+ return leakDetector2;
+ }
public static FailedChecker getFailedChecker() {
return failedChecker;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.graphics.Point;
import org.tizen.dynamicanalyzer.common.DASelectionData;
+import org.tizen.dynamicanalyzer.swap.channel.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.data.FileData;
import org.tizen.dynamicanalyzer.swap.model.data.GLES20LogData;
import org.tizen.dynamicanalyzer.swap.model.data.LogData;
}
DATableDataFormat tableData = (DATableDataFormat) item.getData();
data = tableData.getLogData();
- if (data instanceof FileData) {
- // String fdType =
- // data.get(LogCenterConstants.RESOURCE_FDTYPE_INDEX);
- // int type = Integer.parseInt(fdType);
- // if (type == LogCenterConstants.FD_TYPE_FILE) {
+// if (data instanceof FileData) {
+// // String fdType =
+// // data.get(LogCenterConstants.RESOURCE_FDTYPE_INDEX);
+// // int type = Integer.parseInt(fdType);
+// // if (type == LogCenterConstants.FD_TYPE_FILE) {
+// pageId = FilePage.pageID;
+// // }
+// // else {
+// // pageId = NetworkPage.ID;
+// // }
+// } else if (data instanceof ThreadData) {
+// pageId = ThreadPage.pageID;
+//// } else if (data instanceof UIEventData) {
+//// pageId = UIPage.pageID;
+// } else if (data instanceof NetworkData) {
+// pageId = NetworkPage.pageID;
+// } else if (data instanceof GLES20LogData) {
+// pageId = GLPage.pageID;
+// } else {
+// return;
+// }
+
+ switch (data.getId()) {
+ case DataChannelConstants.MSG_PROBE_FILE:
pageId = FilePage.pageID;
- // }
- // else {
- // pageId = NetworkPage.ID;
- // }
- } else if (data instanceof ThreadData) {
+ break;
+ case DataChannelConstants.MSG_PROBE_THREAD:
pageId = ThreadPage.pageID;
-// } else if (data instanceof UIEventData) {
-// pageId = UIPage.pageID;
- } else if (data instanceof NetworkData) {
+ break;
+ case DataChannelConstants.MSG_PROBE_NETWORK:
pageId = NetworkPage.pageID;
- } else if (data instanceof GLES20LogData) {
+ break;
+ case DataChannelConstants.MSG_PROBE_GLES20:
pageId = GLPage.pageID;
- } else {
+ break;
+ default:
return;
}
public static final int HTTP_API_RESPONSE = 21;
public static final int HTTP_API_OTHER = 22;
public static final int HTTP_API_CLOSE = 23;
+
+ /* Log Memory */
+ public static final int MEMORY_API_ALLOC = 0;
+ public static final int MEMORY_API_FREE = 1;
+ public static final int MEMORY_API_MANAGE = 2;
/* Log snapshot */
public static final int SCREENSHOT_IMAGE_PATH_INDEX = 12;
if (id != DataChannelConstants.MSG_DATA_SAMPLE) {
ProfileData pData = (ProfileData) log;
- System.out.println("@@@@ " + pData.getProbeType() + pData.getProbeSubType() + " @@@@@");
+// System.out.println("@@@@ " + pData.getProbeType() + pData.getProbeSubType() + " @@@@@");
// function_exit log doesn't have probe type yet
// if (pData.getProbeType()
// == AnalyzerConstants.FUNCTION_TYPE_APPINST) {
pData.setApiName(apiName);
}
}
- System.out.println("@@@@ " + pData.getApiName() + " @@@@@");
+// System.out.println("@@@@ " + pData.getApiName() + " @@@@@");
if (processInfoPkg.isDropLog()) {
apiName = pData.getApiName();
if (apiName.contains(OSP_MAIN)) {
import org.tizen.dynamicanalyzer.ui.common.PopupStartMenuItemClickListener;
import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseEventListener;
import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseTrackAdapter;
+import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager;
import org.tizen.dynamicanalyzer.ui.summary.failed.FailedChecker;
import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData;
import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector;
&& (event.getApiType() == LogCenterConstants.FD_API_TYPE_OPEN)) {
if (!warningChecker.isChecked(data.getFilePath(),
WarningCase.DUPLICATE_OPEN.getType())) {
- WarningData wData = new WarningData(
- WarningCase.DUPLICATE_OPEN.getType(),
- data.getContents(), data.getFilePath());
- warningChecker.getWarningData().add(wData);
+// WarningData wData = new WarningData(
+// WarningCase.DUPLICATE_OPEN.getType(),
+// data.getContents(), data.getFilePath());
+// warningChecker.getWarningData().add(wData);
+ // add 201405
+ SummaryDataManager.getInstance().getWarningDataMaker().makeData(
+ data.getContents(), data.getFilePath(), WarningCase.DUPLICATE_OPEN.getType());
}
}
}
&& (data.getFilePath().equals(AnalyzerLabels.EMPTY_STRING) == false)) { // open-close
if (!warningChecker.isChecked(data.getFilePath(),
WarningCase.WITHOUT_USING.getType())) {
- WarningData wData = new WarningData(
- WarningCase.WITHOUT_USING.getType(),
- data.getContents(), data.getFilePath());
- warningChecker.getWarningData().add(wData);
+// WarningData wData = new WarningData(
+// WarningCase.WITHOUT_USING.getType(),
+// data.getContents(), data.getFilePath());
+// warningChecker.getWarningData().add(wData);
+ // add 201405
+ SummaryDataManager.getInstance().getWarningDataMaker().makeData(
+ data.getContents(), data.getFilePath(), WarningCase.WITHOUT_USING.getType());
}
}
}
import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLES20ErrorDefine;
import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLFrameType;
import org.tizen.dynamicanalyzer.ui.opengl.data.type.GLSharingContextType;
+import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager;
import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
private void checkFailedAPI(GLES20LogData logData) {
if (logData.getErrno() != GLES20ErrorDefine.EGL_SUCCESS
&& logData.getErrno() != GLES20ErrorDefine.GL_SUCCESS) {
- FailedData ffd = new FailedData(logData);
- AnalyzerManager.getFailedChecker().getFailedList().add(ffd);
+// FailedData ffd = new FailedData(logData);
+// AnalyzerManager.getFailedChecker().getFailedList().add(ffd);
+ // add 201405
+ SummaryDataManager.getInstance().getFailedApiDataMaker().makeData(logData);
}
}
import org.tizen.dynamicanalyzer.swap.logparser.DataManagerRegistry;
import org.tizen.dynamicanalyzer.ui.page.ScreenshotTabComposite;
import org.tizen.dynamicanalyzer.ui.summary.failed.FailedApiListView;
+import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager;
import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakView;
import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfilingView;
public final static int FUNCTION_PROFILING_VIEW_INDEX = 3;
public final static int WARNING_VIEW_INDEX = 4;
public final static int WARNING_VIEW_DETAIL_INDEX = 5;
+
+ private SummaryDataManager summaryDataManager;
SashForm upperForm;
SashForm bottomForm;
public SummaryPage(Composite parent, int style) {
super(parent, style);
+
+ summaryDataManager = SummaryDataManager.getInstance();
+
setTitle(AnalyzerLabels.COOLBAR_AREA_SUMMARY);
this.setData(DAPageComposite.KEY_TOOLTIP,
ShortCutManager.COOLBAR_AREA_SUMMARY_TOOLTIP);
DataManagerRegistry.registerPageDataManager(FunctionUsageProfiler
.getInstance());
+ DataManagerRegistry.registerPageDataManager(summaryDataManager);
}
@Override
upperForm.setWeights(new int[] { 37, 100 - 37 - wrate, wrate });
baseForm.setWeights(new int[] { hrate, 100 - hrate });
}
+
+ @Override
+ public void clear() {
+ super.clear();
+ if (summaryDataManager != null)
+ summaryDataManager.clear();
+ }
}
import org.tizen.dynamicanalyzer.error.ErrorCodeManager;
import org.tizen.dynamicanalyzer.listeners.SummaryMouseDoubleClickListener;
import org.tizen.dynamicanalyzer.model.TableInput;
+import org.tizen.dynamicanalyzer.swap.model.data.ProbeCommonData;
import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
import org.tizen.dynamicanalyzer.ui.range.RangePage;
+import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager;
import org.tizen.dynamicanalyzer.ui.summary.SummaryPage;
import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
private static final DALogger DA_LOG = DALogger.getInstance();
private boolean isRange = false;
+
+ // add 201405
+ private final FailedApiDataMaker failedApiDataMaker =
+ SummaryDataManager.getInstance().getFailedApiDataMaker();
public FailedApiTable(Composite parent, int style, int tableStyle) {
super(parent, style, tableStyle);
this.isRange = isRange;
}
+// protected List<TableInput> makeTableInput() {
+// List<FailedData> failedList = null;
+// if (isRange) {
+// failedList = RangeDataManager.getInstance().getFailedChecker()
+// .getFailedList();
+// } else {
+// failedList = AnalyzerManager.getFailedChecker().getFailedList();
+// }
+//
+// List<TableInput> input = new ArrayList<TableInput>();
+// int size = failedList.size();
+// for (int i = 0; i < size; i++) {
+// FailedData failedData = failedList.get(i);
+// int selectedPid = ToolbarArea.getInstance().getSelectedPid();
+// if (selectedPid != 0) {
+// if (selectedPid != failedData.getPid()) {
+// continue;
+// }
+// }
+//
+// // create text
+// List<String> text = new ArrayList<String>();
+// List<Object> data = new ArrayList<Object>();
+//
+// text.add(Integer.toString(failedData.getSeq())); // 0
+// data.add(new Integer(failedData.getSeq()));
+// String time = Formatter.toTimeFormat(failedData.getTime());
+// text.add(time); // 1
+// data.add(new Long(failedData.getTime()));
+//
+// text.add(failedData.getName()); // 2
+// data.add(failedData.getName());
+//
+// text.add(failedData.getArgs()); // 3
+// data.add(failedData.getArgs());
+//
+// text.add(failedData.getReturn()); // 4
+// data.add(failedData.getReturn());
+//
+// try {
+// String errCode = ErrorCodeManager.getInatance()
+// .getErrorCode(failedData.getErrorCode()).name();
+// if (null == errCode) {
+// // FIXME : for debug
+// errCode = "undefined error number"; //$NON-NLS-1$
+// }
+// text.add(errCode); // 5
+// data.add(new Long(failedData.getErrorCode()));
+// } catch (NullPointerException e) {
+// DA_LOG.debug("debug");
+// continue;
+// }
+// String errMsg = ErrorCodeManager.getInatance().getErrorDescription(
+// failedData.getErrorCode());
+// if (null == errMsg) {
+// // FIXME : for debug
+// errMsg = "undefined error number"; //$NON-NLS-1$
+// }
+// text.add(errMsg); // 6
+// data.add(new Long(failedData.getErrorCode()));
+//
+// text.add(Integer.toString(failedData.getPid())); // 7
+// data.add(new Integer(failedData.getPid()));
+//
+// data.add(new Long(failedData.getCallerPc())); // 8
+// data.add(failedData.getLibName()); // 9
+//
+// // create images
+//
+// // create DATableDataFormat
+// DATableDataFormat tableData = new DATableDataFormat(
+// failedData.getSeq());
+// tableData.setObject(failedData);
+// tableData.setLogData(failedData.getData());
+// tableData.getData().addAll(data);
+// tableData.setType(AnalyzerConstants.TYPE_TABLE_FAILED);
+//
+// TableInput tableInput = new TableInput();
+// tableInput.setText(text);
+// tableInput.setData(tableData);
+// input.add(tableInput);
+//
+// if (RangeDataManager.getInstance().isBeingAnalyzed()) {
+// long failedTime = failedData.getTime();
+// long startTime = RangeDataManager.getInstance()
+// .getAnalysisStartTime();
+// long endTime = RangeDataManager.getInstance()
+// .getAnalysisEndTime();
+// if (failedTime >= startTime && failedTime <= endTime) {
+// tableInput.setInRange(true);
+// }
+// }
+// }
+// return input;
+// }
+
+ // add 201405
protected List<TableInput> makeTableInput() {
- List<FailedData> failedList = null;
- if (isRange) {
- failedList = RangeDataManager.getInstance().getFailedChecker()
- .getFailedList();
- } else {
- failedList = AnalyzerManager.getFailedChecker().getFailedList();
- }
-
+// List<FailedData> failedList = null;
+// if (isRange) {
+// failedList = RangeDataManager.getInstance().getFailedChecker()
+// .getFailedList();
+// } else {
+// failedList = AnalyzerManager.getFailedChecker().getFailedList();
+// }
+
List<TableInput> input = new ArrayList<TableInput>();
- int size = failedList.size();
+ List<List<Object>> failedData = failedApiDataMaker.getFailedApiDataFromDB();
+ int size = failedData.size();
for (int i = 0; i < size; i++) {
- FailedData failedData = failedList.get(i);
+ List<Object> idata = failedData.get(i);
int selectedPid = ToolbarArea.getInstance().getSelectedPid();
+ int pid = (Integer)idata.get(FailedApiDataDBTable.COLUMN_INDEX_PID);
if (selectedPid != 0) {
- if (selectedPid != failedData.getPid()) {
+ if (selectedPid != pid) {
continue;
}
}
-
+
// create text
List<String> text = new ArrayList<String>();
List<Object> data = new ArrayList<Object>();
+
+ // 0 : sequence number
+ int seq = (Integer)idata.get(FailedApiDataDBTable.COLUMN_INDEX_SEQ);
+ text.add(Integer.toString(seq));
+ data.add(Integer.valueOf(seq));
+ // 1 : start time
+ long time = (Long)idata.get(FailedApiDataDBTable.COLUMN_INDEX_START_TIME);
+ text.add(Formatter.toTimeFormat(time));
+ data.add(Long.valueOf(time));
+ // 2 : api name
+ String apiName = (String)idata.get(FailedApiDataDBTable.COLUMN_INDEX_API_NAME);
+ text.add(apiName);
+ data.add(apiName);
+ // 3 : argurments
+ String args = (String)idata.get(FailedApiDataDBTable.COLUMN_INDEX_ARGUMENT);
+ text.add(args);
+ data.add(args);
+ // 4 : return value
+ String retValue = (String)idata.get(FailedApiDataDBTable.COLUMN_INDEX_RETURN);
+ text.add(retValue);
+ data.add(retValue);
- text.add(Integer.toString(failedData.getSeq())); // 0
- data.add(new Integer(failedData.getSeq()));
- String time = Formatter.toTimeFormat(failedData.getTime());
- text.add(time); // 1
- data.add(new Long(failedData.getTime()));
-
- text.add(failedData.getName()); // 2
- data.add(failedData.getName());
-
- text.add(failedData.getArgs()); // 3
- data.add(failedData.getArgs());
-
- text.add(failedData.getReturn()); // 4
- data.add(failedData.getReturn());
-
+ long errNum = (Long)idata.get(FailedApiDataDBTable.COLUMN_INDEX_ERROR_CODE);
try {
String errCode = ErrorCodeManager.getInatance()
- .getErrorCode(failedData.getErrorCode()).name();
+ .getErrorCode(errNum).name();
if (null == errCode) {
// FIXME : for debug
errCode = "undefined error number"; //$NON-NLS-1$
}
- text.add(errCode); // 5
- data.add(new Long(failedData.getErrorCode()));
+ // 5 : error code
+ text.add(errCode);
+ data.add(Long.valueOf(errNum));
} catch (NullPointerException e) {
DA_LOG.debug("debug");
continue;
}
- String errMsg = ErrorCodeManager.getInatance().getErrorDescription(
- failedData.getErrorCode());
+ String errMsg = ErrorCodeManager.getInatance().getErrorDescription(errNum);
if (null == errMsg) {
// FIXME : for debug
errMsg = "undefined error number"; //$NON-NLS-1$
}
- text.add(errMsg); // 6
- data.add(new Long(failedData.getErrorCode()));
-
- text.add(Integer.toString(failedData.getPid())); // 7
- data.add(new Integer(failedData.getPid()));
-
- data.add(new Long(failedData.getCallerPc())); // 8
- data.add(failedData.getLibName()); // 9
-
+ // 6 : error message
+ text.add(errMsg);
+ data.add(Long.valueOf(errNum));
+ // 7 : pid
+ text.add(Integer.toString(pid));
+ data.add(Integer.valueOf(pid));
+ // 8 : caller pc address
+ long callerPcAddr = (Long)idata.get(FailedApiDataDBTable.COLUMN_INDEX_CALLER_PC_ADDRESS);
+ data.add(Long.valueOf(callerPcAddr));
+ // 9 : library name
+ String libName = (String)idata.get(FailedApiDataDBTable.COLUMN_INDEX_LIBRARY_NAME);
+ data.add(libName);
+
// create images
-
+
// create DATableDataFormat
- DATableDataFormat tableData = new DATableDataFormat(
- failedData.getSeq());
- tableData.setObject(failedData);
- tableData.setLogData(failedData.getData());
+ DATableDataFormat tableData = new DATableDataFormat(seq);
+// tableData.setObject(failedData);
+ // make ProbeCommonData for table data
+ ProbeCommonData probeData = new ProbeCommonData();
+ probeData.setSeq(seq);
+ probeData.setApiName(apiName);
+ probeData.setPid(pid);
+ probeData.setTime(time);
+ probeData.setArgs(args);
+ probeData.setReturn(retValue);
+ probeData.setErrNo(errNum);
+ probeData.setCallerAddress(callerPcAddr);
+ probeData.setLibName(libName);
+ probeData.setId((Integer)idata.get(FailedApiDataDBTable.COLUMN_INDEX_MESSAGE_ID));
+ tableData.setLogData(probeData);
+// tableData.setLogData(failedData.getData());
tableData.getData().addAll(data);
tableData.setType(AnalyzerConstants.TYPE_TABLE_FAILED);
-
+
TableInput tableInput = new TableInput();
tableInput.setText(text);
tableInput.setData(tableData);
input.add(tableInput);
-
+
if (RangeDataManager.getInstance().isBeingAnalyzed()) {
- long failedTime = failedData.getTime();
+ long failedTime = time;
long startTime = RangeDataManager.getInstance()
.getAnalysisStartTime();
long endTime = RangeDataManager.getInstance()
import org.tizen.dynamicanalyzer.common.DASelectionData;
import org.tizen.dynamicanalyzer.listeners.SummaryMouseDoubleClickListener;
import org.tizen.dynamicanalyzer.model.TreeInput;
+import org.tizen.dynamicanalyzer.swap.channel.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.swap.model.data.LogDataFactory;
+import org.tizen.dynamicanalyzer.swap.model.data.ProbeCommonData;
import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
import org.tizen.dynamicanalyzer.ui.range.RangePage;
+import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager;
import org.tizen.dynamicanalyzer.ui.summary.SummaryPage;
+import org.tizen.dynamicanalyzer.ui.summary.warning.WarningDataDBTable;
import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat;
import org.tizen.dynamicanalyzer.ui.widgets.table.DATreeComposite;
+import org.tizen.dynamicanalyzer.util.DALogger;
import org.tizen.dynamicanalyzer.utils.Formatter;
public class LeakTable extends DATreeComposite {
-
+ private static final DALogger DA_LOG = DALogger.getInstance();
+
private boolean isRange = false;
+
+ // add 201405
+ private final LeakDataMaker leakDataMaker =
+ SummaryDataManager.getInstance().getLeakDataMaker();
public LeakTable(Composite parent, int compStyle, int tableStyle) {
super(parent, compStyle, tableStyle);
}
// !! recursive!!
- public void makeChildTree(List<LeakData> children, TreeInput parent,
- String parentName) {
- if (!children.isEmpty()) {
- int size = children.size();
- for (int i = 0; i < size; i++) {
- LeakData data = children.get(i);
- TreeInput input = makeInput(data);
- parent.getChildren().add(input);
- input.setParent(parentName);
- }
- }
- }
+// public void makeChildTree(List<LeakData> children, TreeInput parent,
+// String parentName) {
+// if (!children.isEmpty()) {
+// int size = children.size();
+// for (int i = 0; i < size; i++) {
+// LeakData data = children.get(i);
+// TreeInput input = makeInput(data);
+// parent.getChildren().add(input);
+// input.setParent(parentName);
+// }
+// }
+// }
+// @Override
+// public List<TreeInput> makeTreeInput() {
+// List<TreeInput> output = new ArrayList<TreeInput>();
+// HashMap<Long, LeakData> leaks = null;
+// if (isRange) {
+// leaks = RangeDataManager.getInstance().getLeakDetector()
+// .getLeakHash();
+// } else {
+// leaks = AnalyzerManager.getLeakDetector().getLeakHash();
+// }
+// ArrayList<LeakData> leakList = new ArrayList<LeakData>();
+// leakList.addAll(leaks.values());
+// int selectedPid = ToolbarArea.getInstance().getSelectedPid();
+// int size = leakList.size();
+// for (int i = 0; i < size; i++) {
+// LeakData leakData = leakList.get(i);
+// if (selectedPid != 0) {
+// if (selectedPid != leakData.getPid()) {
+// continue;
+// }
+// }
+// TreeInput leakInput = makeInput(leakData);
+// makeChildTree(leakData.getChildren(), leakInput,
+// Integer.toString(leakData.getParentKey()));
+// }
+// return output;
+// }
+
+ // add 201405
@Override
public List<TreeInput> makeTreeInput() {
List<TreeInput> output = new ArrayList<TreeInput>();
- HashMap<Long, LeakData> leaks = null;
+ HashMap<Integer, CurrentLeakData> leaks = null;
+ // TODO : make hashkey (Integer --> combination of pid and address)
if (isRange) {
- leaks = RangeDataManager.getInstance().getLeakDetector()
- .getLeakHash();
+ // TODO : currently this feature (DB refactoring) does not applied to the range page.
+// leaks = RangeDataManager.getInstance().getLeakDetector2()
+// .getLeakHash();
} else {
- leaks = AnalyzerManager.getLeakDetector().getLeakHash();
+ leaks = AnalyzerManager.getLeakDetector2().getLeakHash();
}
- ArrayList<LeakData> leakList = new ArrayList<LeakData>();
- leakList.addAll(leaks.values());
+
+ ArrayList<CurrentLeakData> leakList = new ArrayList<CurrentLeakData>();
+ leakList.addAll(leaks.values());
+ // TODO : it is necessary to consider when choosing a multi-processes.
int selectedPid = ToolbarArea.getInstance().getSelectedPid();
int size = leakList.size();
+ // TODO : make a list of the sequence numbers for the leak data and send it to the makeTreeInputForLeaks()
for (int i = 0; i < size; i++) {
- LeakData leakData = leakList.get(i);
+ CurrentLeakData leakData = leakList.get(i);
if (selectedPid != 0) {
if (selectedPid != leakData.getPid()) {
continue;
}
}
- TreeInput leakInput = makeInput(leakData);
- makeChildTree(leakData.getChildren(), leakInput,
- Integer.toString(leakData.getParentKey()));
- output.add(leakInput);
+
+ TreeInput leakInput = makeTreeInputForLeaks(leakData, i);
+ if (leakInput != null)
+ output.add(leakInput);
}
return output;
}
- private TreeInput makeInput(LeakData leakData) {
- DATableDataFormat tableData = new DATableDataFormat(
- leakData.getLeakSeq());
+// private TreeInput makeInput(LeakData leakData) {
+// DATableDataFormat tableData = new DATableDataFormat(
+// leakData.getLeakSeq());
+//
+// List<String> text = new ArrayList<String>();
+// List<Object> data = new ArrayList<Object>();
+// text.add(leakData.getName()); // 0 column empty value for tree
+// data.add(leakData.getName());
+// text.add(Integer.toString(leakData.getPid())); // 1
+// data.add(Integer.valueOf(leakData.getPid()));
+// text.add(Integer.toString(leakData.getSeq())); // 2
+// data.add(Integer.valueOf(leakData.getSeq()));
+//
+// text.add(leakData.getType());
+// data.add(leakData.getType()); // 3
+//
+// long time = leakData.getTime();
+// data.add(Long.valueOf(time));
+// try {
+// text.add(Formatter.toTimeFormat(time));
+// } catch (NumberFormatException e) {
+// e.printStackTrace();
+// text.add(Long.toString(time));
+// } // 4
+//
+// tableData.setObject(leakData.getName());
+// text.add(leakData.getParam()); // 5
+// data.add(leakData.getParam());
+// text.add(leakData.getRet()); // 6
+// data.add(leakData.getRet());
+//
+// String libName = leakData.getLibName();
+// if (libName == null || libName.isEmpty()) {
+// // TODO
+// libName = "unknown";
+// }
+// text.add(libName); // 7
+// data.add(libName);
+//
+// data.add(Long.valueOf(leakData.getAddr())); // 8 // for ToolTip
+// // listener
+// data.add(Long.valueOf(leakData.getCallerPc())); // 9
+//
+// tableData.getData().addAll(data);
+// tableData.setType(AnalyzerConstants.TYPE_TABLE_LEAK);
+//
+// TreeInput output = new TreeInput();
+// output.setText(text);
+// output.setData(tableData);
+// output.setParent(Integer.toString(leakData.getParentKey()));
+//
+// if (RangeDataManager.getInstance().isBeingAnalyzed()) {
+// long leakTime = time;
+// long startTime = RangeDataManager.getInstance()
+// .getAnalysisStartTime();
+// long endTime = RangeDataManager.getInstance().getAnalysisEndTime();
+// if (leakTime >= startTime && leakTime <= endTime) {
+// output.setInRange(true);
+// }
+// }
+//
+// return output;
+// }
+
+ // add 201405
+ private TreeInput makeTreeInputForLeaks(CurrentLeakData leakInfo, int index) {
+ // TODO : need understand for the DATableDataFormat class
+ DATableDataFormat tableData = new DATableDataFormat(index);
List<String> text = new ArrayList<String>();
List<Object> data = new ArrayList<Object>();
- text.add(leakData.getName()); // 0 column empty value for tree
- data.add(leakData.getName());
- text.add(Integer.toString(leakData.getPid())); // 1
- data.add(new Integer(leakData.getPid()));
- text.add(Integer.toString(leakData.getSeq())); // 2
- data.add(new Integer(leakData.getSeq()));
-
- text.add(leakData.getType());
- data.add(leakData.getType()); // 3
-
- long time = leakData.getTime();
- data.add(new Long(time));
+ TreeInput output = null;
+
+ int seq = leakInfo.getSequenceNumber();
+ // TODO : rename getLeakDataFromDB() --> getAllocationDataFromDB()
+ List<List<Object>> leakData = leakDataMaker.getLeakDataFromDB(seq);
+ if (leakData == null) { DA_LOG.error("very strange case !!"); return null;}
+ if (leakData.size() != 1) { // size of leakData must be 1
+ DA_LOG.error("size of leakDataMaker.getLeakDataFromDB() is not '1'");
+ return output;
+ }
+ List<Object> idata = leakData.get(0);
+ // 0 column empty value for tree
+ String apiName = (String)idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_API_NAME);
+ text.add(apiName);
+ data.add(apiName);
+ // 1
+ int pid = (Integer)idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_PID);
+ text.add(Integer.toString(pid));
+ data.add(pid);
+ // 2
+ text.add(Integer.toString(seq));
+ data.add(seq);
+ // 3
+ int id = (Integer)idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_MESSAGE_ID);
+ String type = LogDataFactory.getLogFormatById(id).getName();
+ text.add(type);
+ data.add(type);
+ // 4
+ long time = (Long)idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_ALLOCATED_TIME);
+ data.add(Long.valueOf(time));
try {
text.add(Formatter.toTimeFormat(time));
} catch (NumberFormatException e) {
e.printStackTrace();
text.add(Long.toString(time));
- } // 4
-
- tableData.setObject(leakData.getName());
- text.add(leakData.getParam()); // 5
- data.add(leakData.getParam());
- text.add(leakData.getRet()); // 6
- data.add(leakData.getRet());
-
- String libName = leakData.getLibName();
+ }
+
+ tableData.setObject(apiName);
+ // 5
+ String args = (String)idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_ARGUMENT);
+ text.add(args);
+ data.add(args);
+ // 6
+ String retValue = (String)idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_RETURN);
+ text.add(retValue);
+ data.add(retValue);
+ // 7
+ String libName = (String)idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_LIBRARY_NAME);
if (libName == null || libName.isEmpty()) {
- // TODO
+ // TODO : replace another one ??
libName = "unknown";
}
- text.add(libName); // 7
+ text.add(libName);
data.add(libName);
-
- data.add(new Long(leakData.getAddr())); // 8 // for ToolTip
- // listener
- data.add(new Long(leakData.getCallerPc())); // 9
-
+ // 8 - for ToolTip Listener
+ data.add((Long)idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_ALLOCATED_ADDRESS));
+ // 9
+ long callerPcAddr = (Long)idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_CALLER_PC_ADDRESS);
+ data.add(callerPcAddr);
+
tableData.getData().addAll(data);
tableData.setType(AnalyzerConstants.TYPE_TABLE_LEAK);
-
- TreeInput output = new TreeInput();
+
+ ProbeCommonData probeData = new ProbeCommonData();
+ probeData.setSeq(seq);
+ probeData.setApiName(apiName);
+ probeData.setId(id);
+ probeData.setPid(pid);
+ probeData.setTime(time);
+ probeData.setArgs(args);
+ probeData.setReturn(retValue);
+ probeData.setCallerAddress(callerPcAddr);
+ probeData.setLibName(libName);
+ tableData.setLogData(probeData);
+
+ output = new TreeInput();
output.setText(text);
output.setData(tableData);
- output.setParent(Integer.toString(leakData.getParentKey()));
-
+// output.setParent(Integer.toString(leakData.getParentKey()));
+
if (RangeDataManager.getInstance().isBeingAnalyzed()) {
long leakTime = time;
long startTime = RangeDataManager.getInstance()
output.setInRange(true);
}
}
-
+
return output;
}
}
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.FontResources;
import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
+import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager;
import org.tizen.dynamicanalyzer.ui.summary.SummaryPage;
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat;
import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite;
}
}
};
-
+
@Override
public void updateView(DAViewData vdata) {
if (vdata instanceof DASelectionData) {
.getData();
int seq = tableData.getLogData().getSeq();
- WarningChecker warningChecker = null;
- if (isRange) {
- warningChecker = RangeDataManager.getInstance()
- .getWarningChecker();
- } else {
- warningChecker = AnalyzerManager.getWarningChecker();
- }
- WarningData warning = warningChecker
- .getWarningDataByLogSeq(seq);
- if (null == warning) {
+// WarningChecker warningChecker = null;
+// if (isRange) {
+// warningChecker = RangeDataManager.getInstance()
+// .getWarningChecker();
+// } else {
+// warningChecker = AnalyzerManager.getWarningChecker();
+// }
+// WarningData warning = warningChecker
+// .getWarningDataByLogSeq(seq);
+// if (null == warning) {
+// warningMessage = CommonConstants.EMPTY;
+// } else {
+// warningMessage = WarningChecker
+// .messageMaker(warning, false);
+// }
+ String msg = SummaryDataManager.getInstance().getWarningDataMaker().getWarningMessage(seq);
+ if (msg == null) {
warningMessage = CommonConstants.EMPTY;
} else {
- warningMessage = WarningChecker
- .messageMaker(warning, false);
+ warningMessage = msg;
}
canvas.redraw();
}
import org.tizen.dynamicanalyzer.common.DASelectionData;
import org.tizen.dynamicanalyzer.listeners.SummaryMouseDoubleClickListener;
import org.tizen.dynamicanalyzer.model.TableInput;
+import org.tizen.dynamicanalyzer.swap.model.data.LogDataFactory;
+import org.tizen.dynamicanalyzer.swap.model.data.ProbeCommonData;
import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
import org.tizen.dynamicanalyzer.ui.range.RangePage;
+import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager;
import org.tizen.dynamicanalyzer.ui.summary.SummaryPage;
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat;
public class WarningTable extends DATableComposite {
private boolean isRange = false;
+
+ // add 201405
+ private final WarningDataMaker warningDataMaker =
+ SummaryDataManager.getInstance().getWarningDataMaker();
public WarningTable(Composite parent, int compStyle, int tableStyle) {
super(parent, compStyle, tableStyle);
this.isRange = isRange;
}
+// protected List<TableInput> makeTableInput() {
+// List<WarningData> warningList = null;
+// if (isRange) {
+// warningList = RangeDataManager.getInstance().getWarningChecker()
+// .getWarningData();
+// } else {
+// warningList = AnalyzerManager.getWarningChecker().getWarningData();
+// }
+// List<TableInput> input = new ArrayList<TableInput>();
+// int size = warningList.size();
+// for (int i = 0; i < size; i++) {
+// // create text
+// List<String> text = new ArrayList<String>();
+// List<String> data = new ArrayList<String>();
+// WarningData warningData = warningList.get(i);
+//
+// text.add(Integer.toString(warningData.getSeq()));
+// data.add(Integer.toString(warningData.getSeq()));
+//
+// text.add(warningData.getCategory());
+// data.add(warningData.getCategory());
+//
+// text.add(Integer.toString(warningData.getPid()));
+// data.add(Integer.toString(warningData.getPid()));
+// String message = WarningChecker.messageMaker(warningData, true);
+// text.add(message);
+// data.add(message);
+// // create images
+//
+// // create DATableDataFormat
+// DATableDataFormat tableData = new DATableDataFormat(warningData
+// .getLogData().getSeq());
+// tableData.getData().addAll(text);
+// tableData.setLogData(warningData.getLogData());
+// tableData.setType(AnalyzerConstants.TYPE_TABLE_WARNING);
+// TableInput tableInput = new TableInput();
+// tableInput.setText(text);
+// tableInput.setData(tableData);
+// input.add(tableInput);
+// }
+// return input;
+// }
+
+ // add 201405
protected List<TableInput> makeTableInput() {
- List<WarningData> warningList = null;
- if (isRange) {
- warningList = RangeDataManager.getInstance().getWarningChecker()
- .getWarningData();
- } else {
- warningList = AnalyzerManager.getWarningChecker().getWarningData();
- }
+// List<WarningData> warningList = null;
+// if (isRange) {
+// warningList = RangeDataManager.getInstance().getWarningChecker()
+// .getWarningData();
+// } else {
+// warningList = AnalyzerManager.getWarningChecker().getWarningData();
+// }
+
List<TableInput> input = new ArrayList<TableInput>();
- int size = warningList.size();
+ List<List<Object>> warningData = warningDataMaker.getWarningDataFromDB();
+ int size = warningData.size();
for (int i = 0; i < size; i++) {
+ List<Object> idata = warningData.get(i);
+
// create text
List<String> text = new ArrayList<String>();
List<String> data = new ArrayList<String>();
- WarningData warningData = warningList.get(i);
-
- text.add(Integer.toString(warningData.getSeq()));
- data.add(Integer.toString(warningData.getSeq()));
-
- text.add(warningData.getCategory());
- data.add(warningData.getCategory());
- text.add(Integer.toString(warningData.getPid()));
- data.add(Integer.toString(warningData.getPid()));
- String message = WarningChecker.messageMaker(warningData, true);
+ // 0
+ int rid = (Integer)idata.get(WarningDataDBTable.COLUMN_INDEX_RID);
+ text.add(Integer.toString(rid));
+ data.add(Integer.toString(rid));
+ // 1
+ int msgID = (Integer)idata.get(WarningDataDBTable.COLUMN_INDEX_MESSAGE_ID);
+ String category = LogDataFactory.getLogFormatById(msgID).getName();
+ text.add(category);
+ data.add(category);
+ // 2
+ int pid = (Integer)idata.get(WarningDataDBTable.COLUMN_INDEX_PID);
+ text.add(Integer.toString(pid));
+ data.add(Integer.toString(pid));
+ // 3
+ int warningCase = (Integer)idata.get(WarningDataDBTable.COLUMN_INDEX_WARNING_CASE);
+ String key = (String)idata.get(WarningDataDBTable.COLUMN_INDEX_WARNING_KEY);
+ String message = warningDataMaker.messageMaker(key, warningCase, true);
text.add(message);
data.add(message);
// create images
// create DATableDataFormat
- DATableDataFormat tableData = new DATableDataFormat(warningData
- .getLogData().getSeq());
+ int seq = (Integer)idata.get(WarningDataDBTable.COLUMN_INDEX_SEQ);
+ DATableDataFormat tableData = new DATableDataFormat(seq);
+
+ ProbeCommonData probeData = new ProbeCommonData();
+ probeData.setSeq(seq);
+ probeData.setId(msgID);
+ probeData.setPid(pid);
+ probeData.setTime((Long)idata.get(WarningDataDBTable.COLUMN_INDEX_START_TIME));
+ probeData.setReserved1(warningCase); // warningCase
+ probeData.setCallerAddress((Long)idata.get(WarningDataDBTable.COLUMN_INDEX_CALLER_PC_ADDRESS));
+ probeData.setLibName((String)idata.get(WarningDataDBTable.COLUMN_INDEX_LIBRARY_NAME));
tableData.getData().addAll(text);
- tableData.setLogData(warningData.getLogData());
+ tableData.setLogData(probeData);
tableData.setType(AnalyzerConstants.TYPE_TABLE_WARNING);
TableInput tableInput = new TableInput();
tableInput.setText(text);
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.nl.ThreadPageLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager;
import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData;
import org.tizen.dynamicanalyzer.widgets.chart.DAChart;
import org.tizen.dynamicanalyzer.widgets.chart.DAChartSeriesItem;
ThreadPageDataEvent event, long errno) {
DAChartSeriesItem apiItem = null;
if (0 != errno) {
- FailedData ffd = new FailedData(event.getContents());
- AnalyzerManager.getFailedChecker().getFailedList().add(ffd);
+// FailedData ffd = new FailedData(event.getContents());
+// AnalyzerManager.getFailedChecker().getFailedList().add(ffd);
+ // add 201405
+ SummaryDataManager.getInstance().getFailedApiDataMaker().
+ makeData(event.getContents());
apiItem = new DAChartSeriesItem(event.getTime(),
DAChartSeriesItem.SERIES_STATE_BAR,
ColorResources.RED, event.getTooltipContent()
import org.tizen.dynamicanalyzer.ui.common.PopupStartMenuItemClickListener;
import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseEventListener;
import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseTrackAdapter;
+import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager;
import org.tizen.dynamicanalyzer.ui.summary.warning.WarningCase;
import org.tizen.dynamicanalyzer.ui.summary.warning.WarningData;
import org.tizen.dynamicanalyzer.ui.thread.ThreadPageData;
pushCallEvent(event);
if (true == isJoinableThread(tid)) {
// warningData
- WarningData wData = new WarningData(
- WarningCase.JOINABLE_LEAK.getType(), input,
- ThreadPageLabels.THREAD_CHART_NAME_TID + tid);
- AnalyzerManager.getWarningChecker().getWarningData().add(wData);
+// WarningData wData = new WarningData(
+// WarningCase.JOINABLE_LEAK.getType(), input,
+// ThreadPageLabels.THREAD_CHART_NAME_TID + tid);
+// AnalyzerManager.getWarningChecker().getWarningData().add(wData);
+ // add 201405
+ SummaryDataManager.getInstance().getWarningDataMaker().makeData(
+ input, ThreadPageLabels.THREAD_CHART_NAME_TID + tid,
+ WarningCase.JOINABLE_LEAK.getType());
}
break;
case LogCenterConstants.THREAD_API_TYPE_INTERNAL_START:
pushCallEvent(event);
if (true == isJoinableThread(tid)) {
// warningData
- WarningData wData = new WarningData(
- WarningCase.JOINABLE_LEAK.getType(),
- event.getContents(),
- ThreadPageLabels.THREAD_CHART_NAME_TID + tid);
- AnalyzerManager.getWarningChecker().getWarningData().add(wData);
+// WarningData wData = new WarningData(
+// WarningCase.JOINABLE_LEAK.getType(),
+// event.getContents(),
+// ThreadPageLabels.THREAD_CHART_NAME_TID + tid);
+// AnalyzerManager.getWarningChecker().getWarningData().add(wData);
+ // 201405
+ SummaryDataManager.getInstance().getWarningDataMaker().makeData(
+ event.getContents(), ThreadPageLabels.THREAD_CHART_NAME_TID + tid,
+ WarningCase.JOINABLE_LEAK.getType());
}
break;
case LogCenterConstants.THREAD_API_TYPE_INTERNAL_START: