go on creating the report, and it need to be tested

This commit is contained in:
Tienan Chen 2013-09-23 22:35:06 +08:00
parent 398ae19344
commit 3b4cb24b4d
6 changed files with 213 additions and 39 deletions

View File

@ -1,15 +1,22 @@
package org.bench4q.master.api.model;
import java.util.Date;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.bench4q.master.communication.monitor.LogicalDiskModel;
/**
* @author coderfengyun
*
*/
@XmlRootElement(name = "MonitorLogicalDiskResponseModel")
public class MonitorLogicalDiskResponseModel {
private boolean success;
private String failCause;
private LogicalDiskModel logicalDiskModel;
private Date createDatetime;
@XmlElement(name = "success")
public boolean isSuccess() {
@ -38,4 +45,12 @@ public class MonitorLogicalDiskResponseModel {
this.logicalDiskModel = logicalDiskModel;
}
public Date getCreateDatetime() {
return createDatetime;
}
public void setCreateDatetime(Date createDatetime) {
this.createDatetime = createDatetime;
}
}

View File

@ -1,5 +1,7 @@
package org.bench4q.master.api.model;
import java.util.Date;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@ -10,6 +12,7 @@ public class MonitorMemoryResponseModel {
private boolean success;
private String failCause;
private MemoryModel memoryModel;
private Date createDatetime;
@XmlElement
public boolean isSuccess() {
@ -38,4 +41,12 @@ public class MonitorMemoryResponseModel {
this.memoryModel = memoryModel;
}
public Date getCreateDatetime() {
return createDatetime;
}
public void setCreateDatetime(Date createDatetime) {
this.createDatetime = createDatetime;
}
}

View File

@ -1,5 +1,7 @@
package org.bench4q.master.api.model;
import java.util.Date;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@ -10,6 +12,7 @@ public class MonitorNetWorkReponseModel {
private boolean success;
private String failCause;
private NetworkInterfaceModel model;
private Date createDatetime;
@XmlElement
public boolean isSuccess() {
@ -38,4 +41,11 @@ public class MonitorNetWorkReponseModel {
this.model = model;
}
public Date getCreateDatetime() {
return createDatetime;
}
public void setCreateDatetime(Date createDatetime) {
this.createDatetime = createDatetime;
}
}

View File

@ -1,5 +1,7 @@
package org.bench4q.master.api.model;
import java.util.Date;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@ -10,6 +12,7 @@ public class MonitorProcessorResponseModel {
private boolean success;
private String failCause;
private ProcessorModel processorModel;
private Date createDatetime;
@XmlElement
public boolean isSuccess() {
@ -38,4 +41,12 @@ public class MonitorProcessorResponseModel {
this.processorModel = processorModel;
}
public Date getCreateDatetime() {
return createDatetime;
}
public void setCreateDatetime(Date createDatetime) {
this.createDatetime = createDatetime;
}
}

View File

@ -0,0 +1,54 @@
package org.bench4q.master.api.model;
import java.util.ArrayList;
import java.util.List;
public class MonitorResultContainerModel {
private List<MonitorLogicalDiskResponseModel> logicalDiskResponseModels;
private List<MonitorMemoryResponseModel> memoryResponseModels;
private List<MonitorProcessorResponseModel> processorResponseModels;
private List<MonitorNetWorkReponseModel> netWorkReponseModels;
public List<MonitorLogicalDiskResponseModel> getLogicalDiskResponseModels() {
return logicalDiskResponseModels;
}
public void setLogicalDiskResponseModels(
List<MonitorLogicalDiskResponseModel> logicalDiskResponseModels) {
this.logicalDiskResponseModels = logicalDiskResponseModels;
}
public List<MonitorMemoryResponseModel> getMemoryResponseModels() {
return memoryResponseModels;
}
public void setMemoryResponseModels(
List<MonitorMemoryResponseModel> memoryResponseModels) {
this.memoryResponseModels = memoryResponseModels;
}
public List<MonitorProcessorResponseModel> getProcessorResponseModels() {
return processorResponseModels;
}
public void setProcessorResponseModels(
List<MonitorProcessorResponseModel> processorResponseModels) {
this.processorResponseModels = processorResponseModels;
}
public List<MonitorNetWorkReponseModel> getNetWorkReponseModels() {
return netWorkReponseModels;
}
public void setNetWorkReponseModels(
List<MonitorNetWorkReponseModel> netWorkReponseModels) {
this.netWorkReponseModels = netWorkReponseModels;
}
public MonitorResultContainerModel() {
this.setLogicalDiskResponseModels(new ArrayList<MonitorLogicalDiskResponseModel>());
this.setMemoryResponseModels(new ArrayList<MonitorMemoryResponseModel>());
this.setProcessorResponseModels(new ArrayList<MonitorProcessorResponseModel>());
this.setNetWorkReponseModels(new ArrayList<MonitorNetWorkReponseModel>());
}
}

View File

@ -2,12 +2,16 @@ package org.bench4q.master.service;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.xml.bind.JAXBException;
import org.bench4q.master.api.model.MonitorLogicalDiskResponseModel;
import org.bench4q.master.api.model.MonitorMemoryResponseModel;
import org.bench4q.master.api.model.MonitorNetWorkReponseModel;
import org.bench4q.master.api.model.MonitorProcessorResponseModel;
import org.bench4q.master.api.model.MonitorResultContainerModel;
import org.bench4q.master.communication.monitor.LogicalDiskModel;
import org.bench4q.master.communication.monitor.MemoryModel;
import org.bench4q.master.communication.monitor.NetworkInterfaceModel;
@ -39,6 +43,7 @@ public class ReportService {
public static String Average_Response_Time = "averageResponseTime";
public static String Time = "time";
public static String Pdf_Path = "test.pdf";
public static String Processor = "ProcessorTimePercent";
public TestPlanScriptService getTestPlanScriptService() {
return testPlanScriptService;
@ -124,14 +129,14 @@ public class ReportService {
+ scriptName);
paragraph.setAlignment(Element.ALIGN_CENTER);
document.add(paragraph);
writeImageIntoPdf(outputStream.toByteArray(), scriptName, document);
writeImageIntoPdf(outputStream.toByteArray(), document);
} catch (Exception e) {
e.printStackTrace();
}
}
private void writeImageIntoPdf(byte[] buffer, String scriptName,
Document document) throws Exception {
private void writeImageIntoPdf(byte[] buffer, Document document)
throws Exception {
Image image = Image.getInstance(buffer);
document.add(image);
}
@ -142,7 +147,7 @@ public class ReportService {
PdfWriter.getInstance(document, new FileOutputStream(Pdf_Path));
document.open();
createScriptsResultsImage(testPlanRunID, document);
createMonitorResultImage(testPlanRunID, document);
createMonitorResultImages(testPlanRunID, document);
document.close();
} catch (Exception e) {
e.printStackTrace();
@ -150,75 +155,143 @@ public class ReportService {
}
}
private void createMonitorResultImage(UUID testPlanRunID, Document document) {
private void createMonitorResultImages(UUID testPlanRunID, Document document) {
Map<String, MonitorResultContainerModel> SUTResultMap = new HashMap<String, MonitorResultContainerModel>();
List<MonitorResult> results = this.getMonitorResultService()
.queryMonitorResults(testPlanRunID);
List<LogicalDiskModel> logicalDiskModels = new ArrayList<LogicalDiskModel>();
List<MemoryModel> memoryModels = new ArrayList<MemoryModel>();
List<ProcessorModel> processorModels = new ArrayList<ProcessorModel>();
List<NetworkInterfaceModel> networkInterfaceModels = new ArrayList<NetworkInterfaceModel>();
if (results == null) {
return;
}
for (MonitorResult result : results) {
if (result == null) {
continue;
}
sortResultToList(result, logicalDiskModels, memoryModels,
processorModels, networkInterfaceModels);
buildSUTResultMap(SUTResultMap, result);
}
createProcessorImage(processorModels);
createMemoryImage(memoryModels);
createLogicalDiskImage(logicalDiskModels);
createNetworkImage(networkInterfaceModels);
for (String hostName : SUTResultMap.keySet()) {
createSUTImage(hostName, SUTResultMap.get(hostName), document);
}
// createProcessorImage(processorModels);
// createMemoryImage(memoryModels);
// createLogicalDiskImage(logicalDiskModels);
// createNetworkImage(networkInterfaceModels);
}
private void buildSUTResultMap(
Map<String, MonitorResultContainerModel> sUTResultMap,
MonitorResult result) {
String hostName = result.getHostNameUnderMonitor();
if (!sUTResultMap.containsKey(hostName)) {
sUTResultMap.put(result.getHostNameUnderMonitor(),
new MonitorResultContainerModel());
}
sortResultToList(result, sUTResultMap.get(hostName));
}
private void sortResultToList(final MonitorResult result,
List<LogicalDiskModel> logicalDiskModels,
List<MemoryModel> memoryModels,
List<ProcessorModel> processorModels,
List<NetworkInterfaceModel> networkInterfaceModels) {
MonitorResultContainerModel container) {
try {
if (Class.forName(result.getType()).equals(LogicalDiskModel.class)) {
logicalDiskModels.add(MonitorService
MonitorLogicalDiskResponseModel logicalDiskResponseModel = new MonitorLogicalDiskResponseModel();
logicalDiskResponseModel.setCreateDatetime(result
.getCreateDatetime());
logicalDiskResponseModel.setLogicalDiskModel(MonitorService
.extractLogicalDiskModel(result.getContent()));
container.getLogicalDiskResponseModels().add(
logicalDiskResponseModel);
} else if (Class.forName(result.getType())
.equals(MemoryModel.class)) {
memoryModels.add(MonitorService.extractMemoryModel(result
.getContent()));
MonitorMemoryResponseModel memoryResponseModel = new MonitorMemoryResponseModel();
memoryResponseModel.setCreateDatetime(result
.getCreateDatetime());
memoryResponseModel.setMemoryModel(MonitorService
.extractMemoryModel(result.getContent()));
container.getMemoryResponseModels().add(memoryResponseModel);
} else if (Class.forName(result.getType()).equals(
NetworkInterfaceModel.class)) {
networkInterfaceModels.add(MonitorService
MonitorNetWorkReponseModel netWorkReponseModel = new MonitorNetWorkReponseModel();
netWorkReponseModel.setCreateDatetime(result
.getCreateDatetime());
netWorkReponseModel.setModel(MonitorService
.extractNetworkInterfaceModel(result.getContent()));
container.getNetWorkReponseModels().add(netWorkReponseModel);
} else if (Class.forName(result.getType()).equals(
ProcessorModel.class)) {
processorModels.add(MonitorService.extractProcessorModel(result
.getContent()));
MonitorProcessorResponseModel processorResponseModel = new MonitorProcessorResponseModel();
processorResponseModel.setCreateDatetime(result
.getCreateDatetime());
processorResponseModel.setProcessorModel(MonitorService
.extractProcessorModel(result.getContent()));
container.getProcessorResponseModels().add(
processorResponseModel);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
return;
} catch (JAXBException e) {
} catch (Exception e) {
e.printStackTrace();
return;
}
}
private void createProcessorImage(List<ProcessorModel> processorModels) {
if (processorModels == null || processorModels.size() == 0) {
private void createSUTImage(String hostName,
MonitorResultContainerModel container, Document document) {
createLogicalDiskImage(container.getLogicalDiskResponseModels(),
document);
createMemoryImage(container.getMemoryResponseModels(), document);
createNetworkImage(container.getNetWorkReponseModels(), document);
createProcessorImage(container.getProcessorResponseModels(), document);
}
private void createProcessorImage(List<MonitorProcessorResponseModel> list,
Document document) {
if (list == null || list.size() == 0) {
return;
}
int processorCount = list.get(0).getProcessorModel()
.getProcessorModelList().size();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
TimeSeriesCollection lineDataset = new TimeSeriesCollection();
TimeSeries[] timeSeriesArray = new TimeSeries[processorCount];
for (int i = 0; i < timeSeriesArray.length; i++) {
timeSeriesArray[i] = new TimeSeries("Processor-" + i);
}
for (MonitorProcessorResponseModel model : list) {
for (int i = 0; i < processorCount; i++) {
timeSeriesArray[i].add(new Second(model.getCreateDatetime()),
model.getProcessorModel().getProcessorModelList()
.get(i).getProcessorTimePercent());
}
}
for (int i = 0; i < timeSeriesArray.length; i++) {
lineDataset.addSeries(timeSeriesArray[i]);
}
JFreeChart chart = ChartFactory.createTimeSeriesChart(Processor, Time,
Processor, lineDataset, true, true, true);
chart.setBackgroundPaint(java.awt.Color.white);
try {
ChartUtilities.writeChartAsPNG(outputStream, chart, 400, 300);
Paragraph paragraph = new Paragraph(Processor);
paragraph.setAlignment(Element.ALIGN_CENTER);
document.add(paragraph);
writeImageIntoPdf(outputStream.toByteArray(), document);
} catch (Exception e) {
e.printStackTrace();
}
}
private void createMemoryImage(List<MemoryModel> memoryModels) {
private void createMemoryImage(List<MonitorMemoryResponseModel> list,
Document document) {
}
private void createLogicalDiskImage(List<LogicalDiskModel> logicalDiskModels) {
private void createLogicalDiskImage(
List<MonitorLogicalDiskResponseModel> list, Document document) {
}
private void createNetworkImage(
List<NetworkInterfaceModel> networkInterfaceModels) {
private void createNetworkImage(List<MonitorNetWorkReponseModel> list,
Document document) {
}
}