This commit is contained in:
coderfengyun 2013-12-23 11:28:48 +08:00
parent 112d8f1949
commit a2e06ca18c
2 changed files with 73 additions and 57 deletions

View File

@ -27,6 +27,7 @@ import org.bench4q.share.models.agent.AgentBriefStatusModel;
import org.bench4q.share.models.agent.BehaviorBriefModel;
import org.bench4q.share.models.agent.BehaviorStatusCodeResultModel;
import org.bench4q.share.models.agent.CleanTestResultModel;
import org.bench4q.share.models.agent.PageBriefModel;
import org.bench4q.share.models.agent.ParameterModel;
import org.bench4q.share.models.agent.RunScenarioModel;
import org.bench4q.share.models.agent.RunScenarioResultModel;
@ -192,6 +193,55 @@ public class TestController {
return parameter;
}
@RequestMapping(value = "/brief/{runId}/{behaviorId}", method = RequestMethod.GET)
@ResponseBody
public BehaviorBriefModel behaviorBrief(@PathVariable UUID runId,
@PathVariable int behaviorId) {
ScenarioContext scenarioContext = this.getScenarioEngine()
.getRunningTests().get(runId);
if (scenarioContext == null) {
return null;
}
Map<Integer, BehaviorStatusCodeResult> map = scenarioContext
.getDataStatistics().getBehaviorBriefStatistics(behaviorId);
return buildBehaviorBrief(runId, behaviorId, map);
}
private BehaviorBriefModel buildBehaviorBrief(UUID runId, int behaviorId,
Map<Integer, BehaviorStatusCodeResult> map) {
List<BehaviorStatusCodeResultModel> detailStatusCodeResultModels = new ArrayList<BehaviorStatusCodeResultModel>();
for (int statusCode : map.keySet()) {
BehaviorStatusCodeResultModel behaviorStatusCodeResultModel = new BehaviorStatusCodeResultModel();
BehaviorStatusCodeResult detailStatusCodeResult = map
.get(statusCode);
behaviorStatusCodeResultModel.setStatusCode(statusCode);
behaviorStatusCodeResultModel
.setCount(detailStatusCodeResult.count);
behaviorStatusCodeResultModel
.setContentLength(detailStatusCodeResult.contentLength);
behaviorStatusCodeResultModel
.setMinResponseTime(detailStatusCodeResult.minResponseTime);
behaviorStatusCodeResultModel
.setMaxResponseTime(detailStatusCodeResult.maxResponseTime);
behaviorStatusCodeResultModel
.setContentType(detailStatusCodeResult.contentType);
behaviorStatusCodeResultModel
.setTotalResponseTimeThisTime(detailStatusCodeResult.totalResponseTimeThisTime);
detailStatusCodeResultModels.add(behaviorStatusCodeResultModel);
}
BehaviorBriefModel behaviorBriefModel = new BehaviorBriefModel();
behaviorBriefModel.setBehaviorId(behaviorId);
behaviorBriefModel
.setDetailStatusCodeResultModels(detailStatusCodeResultModels);
return behaviorBriefModel;
}
@RequestMapping(value = "/pageBrief/{pageId}")
public PageBriefModel pageBrief(@PathVariable int pageId) {
return null;
}
@RequestMapping(value = "/behaviorsBrief/{runId}")
@ResponseBody
public TestBehaviorsBriefModel behaviorsBrief(@PathVariable UUID runId) {
@ -216,48 +266,6 @@ public class TestController {
return ret;
}
@RequestMapping(value = "/brief/{runId}/{behaviorId}", method = RequestMethod.GET)
@ResponseBody
public BehaviorBriefModel behaviorBrief(@PathVariable UUID runId,
@PathVariable int behaviorId) {
ScenarioContext scenarioContext = this.getScenarioEngine()
.getRunningTests().get(runId);
if (scenarioContext == null) {
return null;
}
Map<Integer, BehaviorStatusCodeResult> map = scenarioContext
.getDataStatistics().getBehaviorBriefStatistics(behaviorId);
return buildBehaviorBrief(runId, behaviorId, map);
}
private BehaviorBriefModel buildBehaviorBrief(UUID runId, int behaviorId,
Map<Integer, BehaviorStatusCodeResult> map) {
List<BehaviorStatusCodeResultModel> detailStatusCodeResultModels = new ArrayList<BehaviorStatusCodeResultModel>();
for (int statusCode : map.keySet()) {
BehaviorStatusCodeResultModel behaviorStatusCodeResultModel = new BehaviorStatusCodeResultModel();
BehaviorStatusCodeResult detailStatusCodeResult = map.get(statusCode);
behaviorStatusCodeResultModel.setStatusCode(statusCode);
behaviorStatusCodeResultModel
.setCount(detailStatusCodeResult.count);
behaviorStatusCodeResultModel
.setContentLength(detailStatusCodeResult.contentLength);
behaviorStatusCodeResultModel
.setMinResponseTime(detailStatusCodeResult.minResponseTime);
behaviorStatusCodeResultModel
.setMaxResponseTime(detailStatusCodeResult.maxResponseTime);
behaviorStatusCodeResultModel
.setContentType(detailStatusCodeResult.contentType);
behaviorStatusCodeResultModel
.setTotalResponseTimeThisTime(detailStatusCodeResult.totalResponseTimeThisTime);
detailStatusCodeResultModels.add(behaviorStatusCodeResultModel);
}
BehaviorBriefModel behaviorBriefModel = new BehaviorBriefModel();
behaviorBriefModel.setBehaviorId(behaviorId);
behaviorBriefModel
.setDetailStatusCodeResultModels(detailStatusCodeResultModels);
return behaviorBriefModel;
}
@RequestMapping(value = "/brief/{runId}", method = RequestMethod.GET)
@ResponseBody
public AgentBriefStatusModel brief(@PathVariable UUID runId) {

View File

@ -164,6 +164,12 @@ public class AgentResultDataCollector extends AbstractDataCollector {
* @param behaviorResult
*/
private void addItem(BehaviorResult behaviorResult) {
statisticScenarioBriefResult(behaviorResult);
statisticPageBriefResult(behaviorResult);
statisticBehaviorBriefResult(behaviorResult);
}
private void statisticScenarioBriefResult(BehaviorResult behaviorResult) {
if (behaviorResult.isSuccess()) {
this.successCountOfThisCall++;
this.totalResponseTimeOfThisCall += behaviorResult
@ -183,11 +189,13 @@ public class AgentResultDataCollector extends AbstractDataCollector {
} else {
this.failCountOfThisCall++;
}
dealWithDetailResult(behaviorResult);
}
private void dealWithDetailResult(BehaviorResult behaviorResult) {
private void statisticPageBriefResult(BehaviorResult behaviorResult) {
}
private void statisticBehaviorBriefResult(BehaviorResult behaviorResult) {
insertWhenNotExist(behaviorResult);
Map<Integer, BehaviorStatusCodeResult> detailStatusMap = this.detailMap
.get(behaviorResult.getBehaviorId());
@ -199,24 +207,24 @@ public class AgentResultDataCollector extends AbstractDataCollector {
.getContentType()));
}
BehaviorStatusCodeResult detailResult = detailStatusMap
BehaviorStatusCodeResult statusCodeResult = detailStatusMap
.get(behaviorResult.getStatusCode());
detailResult.count++;
statusCodeResult.count++;
if (!behaviorResult.isSuccess()) {
detailResult.maxResponseTime = 0;
detailResult.minResponseTime = 0;
detailResult.contentLength = 0;
detailResult.totalResponseTimeThisTime = 0;
statusCodeResult.maxResponseTime = 0;
statusCodeResult.minResponseTime = 0;
statusCodeResult.contentLength = 0;
statusCodeResult.totalResponseTimeThisTime = 0;
return;
}
detailResult.contentLength += behaviorResult.getContentLength();
detailResult.totalResponseTimeThisTime += behaviorResult
statusCodeResult.contentLength += behaviorResult.getContentLength();
statusCodeResult.totalResponseTimeThisTime += behaviorResult
.getResponseTime();
if (behaviorResult.getResponseTime() > detailResult.maxResponseTime) {
detailResult.maxResponseTime = behaviorResult.getResponseTime();
if (behaviorResult.getResponseTime() > statusCodeResult.maxResponseTime) {
statusCodeResult.maxResponseTime = behaviorResult.getResponseTime();
}
if (behaviorResult.getResponseTime() < detailResult.minResponseTime) {
detailResult.minResponseTime = behaviorResult.getResponseTime();
if (behaviorResult.getResponseTime() < statusCodeResult.minResponseTime) {
statusCodeResult.minResponseTime = behaviorResult.getResponseTime();
}
}