import org.tizen.dynamicanalyzer.swap.logparser.Logs;
import org.tizen.dynamicanalyzer.swap.logparser.PageDataManager;
import org.tizen.dynamicanalyzer.swap.model.data.LogData;
+import org.tizen.dynamicanalyzer.swap.model.data.ProcessProfileData;
import org.tizen.dynamicanalyzer.swap.model.data.SystemData;
public class ScreenshotDataManager extends PageDataManager {
private static ScreenshotDataManager instance = null;
private List<Long> lastCpuRate = null;
- private int lastProcessMemory = 0;
+ private long lastProcessMemory = 0;
private long lastStartTime = 0;
private ScreenshotDataManager() {
return lastCpuRate;
}
- public int getLastProcessMemory() {
+ public long getLastProcessMemory() {
return lastProcessMemory;
}
@Override
protected void makeData(LogPackage pack) {
Logs logs = pack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM);
+ lastCpuRate.clear();
if (null != logs && null != logs.getRawLogs() && !logs.getRawLogs().isEmpty()) {
List<LogData> inputs = logs.getRawLogs();
int lastIndex = inputs.size() - 1;
SystemData input = (SystemData) inputs.get(lastIndex);
String[] cpuRates = input.getCpuLoad().split(CommonConstants.COMMA);
- for (int i = 0; i < cpuRates.length - 1; i++) {
+ for (int i = 0; i < cpuRates.length; i++) {
String cpu = cpuRates[i].trim();
lastCpuRate.add(new Long((long)Float.parseFloat(cpu)));
}
- /*
- * TODO interface of SystemData is changed(by jungwook). removed getResidentMemory().
- * residentMemory is possible one more per multi process.
- */
-// lastProcessMemory = input.getResidentMemory();
+ ProcessProfileData[] processInfoList = input.getProcessProfileDataList();
+ if (processInfoList != null) {
+ lastProcessMemory = 0;
+ for (int i = 0; i < processInfoList.length; i++) {
+ lastProcessMemory += processInfoList[i].getResidentMemory();
+ }
+ }
lastStartTime = input.getTime();
}
}
if (row.isEmpty()) {
return;
}
-
@SuppressWarnings("unchecked")
List<Object> cpuLoadList = (List<Object>) row.get(SystemDataDBTable.COLUMN.CPU_LOAD
.ordinal());
+ cpuUsage.clear();
for (int ii = 0; ii < cpuLoadList.size(); ii++) {
double cpu = (Double)cpuLoadList.get(ii);
long value = (long)cpu;
long totalMem = AnalyzerManager.getProject().getDeviceStatusInfo().getSystemMemorySize();
maxMem = totalMem;
-
- /*
- * TODO interface of SystemData is changed(by jungwook). removed
- * getResidentMemory(). residentMemory is possible one more per multi
- * process.
- */
- // processMem = ((SystemData) input).getResidentMemory();
+
+ processMem = TimelineChartManager.getInstance().getProcessMemoriesFromDB(startTime);
}
@Override
setStartTime(selectTime);
updateView(false);
} else {
- if (selStartTime > lastStartTime) {
- selStartTime = lastStartTime;
- }
+// if (selStartTime > lastStartTime) {
+// selStartTime = lastStartTime;
+// }
setSelectTime(selStartTime);
setStartTime(selectTime);
updateView(true);
List<Long> cpuRates = dataManager.getLastCpuRate();
int size = cpuRates.size();
cpuUsage.clear();
- for (int i = 0; i < size - 1; i++) {
+ for (int i = 0; i < size; i++) {
cpuUsage.add(cpuRates.get(i));
}
package org.tizen.dynamicanalyzer.ui.timeline.common;
import java.io.File;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import org.tizen.dynamicanalyzer.communicator.DACommunicator;
import org.tizen.dynamicanalyzer.constant.CommonConstants;
import org.tizen.dynamicanalyzer.database.DBTable;
+import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.project.BinaryInfo;
import org.tizen.dynamicanalyzer.project.LibraryObject;
}
return processedResult;
}
+
+ public long getProcessMemoriesFromDB(long time) {
+ long processMemories = 0;
+ String query = "SELECT " + TargetProcessDBTable.MEMORY_RESIDENT +
+ " FROM " + targetProcessDBTable.getTableName() +
+ " WHERE TIME = (SELECT MAX(TIME) FROM " + targetProcessDBTable.getTableName() +
+ " WHERE TIME <= " + time + ")";
+ ResultSet rs = SqlConnectionManager.executeQueryRS(query);
+ if (rs != null) {
+ try {
+ while (rs.next()) {
+ processMemories += rs.getLong(1);
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ return processMemories;
+ }
@Override
public void makeChartSeries(long startTime, long endTime) {