add the statistics with successCount and failCount

add the statistics with successCount and failCount
This commit is contained in:
coderfengyun 2014-03-25 16:28:58 +08:00
parent d8da4eae34
commit bbe2c8d52f
13 changed files with 82 additions and 47 deletions

View File

@ -68,7 +68,8 @@ public abstract class AbstractDataCollector implements DataCollector {
.isShouldBeCountResponseTime());
resultModel.setStartDate(behaviorResult.getStartDate());
resultModel.setStatusCode(behaviorResult.getStatusCode());
resultModel.setSuccess(behaviorResult.isSuccess());
resultModel.setSuccessCount(behaviorResult.getSuccessCount());
resultModel.setFailCount(behaviorResult.getFailCount());
return resultModel;
}

View File

@ -174,24 +174,20 @@ public class ScenarioResultCollector extends AbstractDataCollector {
*/
private void statisticScenarioBriefResult(BehaviorResult behaviorResult) {
if (behaviorResult.isSuccess()) {
this.successCountOfThisCall++;
this.totalResponseTimeOfThisCall += behaviorResult
.getResponseTime();
this.totalSqureResponseTimeOfThisCall += ((long) behaviorResult
.getResponseTime()) * behaviorResult.getResponseTime();
if (behaviorResult.getResponseTime() > this
.getMaxResponseTimeOfThisCall()) {
this.setMaxResponseTimeOfThisCall(behaviorResult
.getResponseTime());
}
if (behaviorResult.getResponseTime() < this
.getMinResponseTimeOfThisCall()) {
this.setMinResponseTimeOfThisCall(behaviorResult
.getResponseTime());
}
} else {
this.failCountOfThisCall++;
this.successCountOfThisCall += behaviorResult.getSuccessCount();
this.failCountOfThisCall += behaviorResult.getFailCount();
if (behaviorResult.getFailCount() > 0)
return;
this.totalResponseTimeOfThisCall += behaviorResult.getResponseTime();
this.totalSqureResponseTimeOfThisCall += ((long) behaviorResult
.getResponseTime()) * behaviorResult.getResponseTime();
if (behaviorResult.getResponseTime() > this
.getMaxResponseTimeOfThisCall()) {
this.setMaxResponseTimeOfThisCall(behaviorResult.getResponseTime());
}
if (behaviorResult.getResponseTime() < this
.getMinResponseTimeOfThisCall()) {
this.setMinResponseTimeOfThisCall(behaviorResult.getResponseTime());
}
}
@ -204,7 +200,7 @@ public class ScenarioResultCollector extends AbstractDataCollector {
BehaviorStatusCodeResult statusCodeResult = detailStatusMap
.get(behaviorResult.getStatusCode());
statusCodeResult.count++;
if (!behaviorResult.isSuccess()) {
if (behaviorResult.getSuccessCount() == 0) {
statusCodeResult.maxResponseTime = 0;
statusCodeResult.minResponseTime = 0;
statusCodeResult.contentLength = 0;

View File

@ -2,6 +2,6 @@ package org.bench4q.agent.plugin.result;
public class CommandLineReturn extends PluginReturn {
public CommandLineReturn(boolean success) {
this.setSuccess(success);
super(success);
}
}

View File

@ -50,7 +50,7 @@ public class HttpReturn extends PluginReturn {
public HttpReturn(boolean success, int statusCode, long contentLength,
String contentType) {
this.setSuccess(success);
super(success);
this.setStatusCode(statusCode);
this.setContentLength(contentLength);
this.setContentType(contentType);

View File

@ -2,6 +2,6 @@ package org.bench4q.agent.plugin.result;
public class LogReturn extends PluginReturn {
public LogReturn(boolean success) {
this.setSuccess(success);
super(success);
}
}

View File

@ -4,15 +4,24 @@ import java.util.LinkedHashMap;
import java.util.Map;
public abstract class PluginReturn {
private boolean success;
private int successCount;
private int failCount;
private Map<String, String> runTimeParams;
public boolean isSuccess() {
return success;
public int getSuccessCount() {
return successCount;
}
public void setSuccess(boolean success) {
this.success = success;
public void setSuccessCount(int successCount) {
this.successCount = successCount;
}
public int getFailCount() {
return failCount;
}
public void setFailCount(int failCount) {
this.failCount = failCount;
}
public Map<String, String> getRunTimeParams() {
@ -26,4 +35,9 @@ public abstract class PluginReturn {
public PluginReturn() {
this.setRunTimeParams(new LinkedHashMap<String, String>());
}
public PluginReturn(boolean success) {
this.setSuccessCount(success ? 1 : 0);
this.setFailCount(success ? 0 : 1);
}
}

View File

@ -7,6 +7,6 @@ package org.bench4q.agent.plugin.result;
*/
public class TimerReturn extends PluginReturn {
public TimerReturn(boolean success) {
this.setSuccess(success);
super(success);
}
}

View File

@ -9,7 +9,8 @@ public class BehaviorResult {
private Date startDate;
private Date endDate;
private long responseTime;
private boolean success;
private int successCount;
private int failCount;
private int behaviorId;
private String behaviorUrl;
@ -66,12 +67,20 @@ public class BehaviorResult {
this.responseTime = responseTime;
}
public boolean isSuccess() {
return success;
public int getSuccessCount() {
return successCount;
}
public void setSuccess(boolean success) {
this.success = success;
public void setSuccessCount(int successCount) {
this.successCount = successCount;
}
public int getFailCount() {
return failCount;
}
public void setFailCount(int failCount) {
this.failCount = failCount;
}
public int getBehaviorId() {

View File

@ -95,7 +95,9 @@ public class Worker implements Runnable {
Date startDate = new Date(System.currentTimeMillis());
PluginReturn pluginReturn = (PluginReturn) this.getPluginManager()
.doBehavior(plugin, behavior.getName(), behaviorParameters);
extractRunTimeParams(pluginReturn);
Date endDate = new Date(System.currentTimeMillis());
if (!behavior.shouldBeCountResponseTime()) {
continue;
@ -120,7 +122,8 @@ public class Worker implements Runnable {
BehaviorResult result = new BehaviorResult();
result.setStartDate(startDate);
result.setEndDate(endDate);
result.setSuccess(pluginReturn.isSuccess());
result.setSuccessCount(pluginReturn.getSuccessCount());
result.setFailCount(pluginReturn.getFailCount());
result.setResponseTime(endDate.getTime() - startDate.getTime());
result.setBehaviorName(behavior.getName());
result.setPluginId(behavior.getUse());

View File

@ -119,8 +119,8 @@ public class PageResultStatisticsTest {
this.getDataCollector().add(
PageResult.buildPageResult(2,
ScenarioStatisticsTest.makeBehaviorList(2)));
AgentPageBriefModel model = (AgentPageBriefModel) this.getDataCollector()
.getPageBriefStatistics(2);
AgentPageBriefModel model = (AgentPageBriefModel) this
.getDataCollector().getPageBriefStatistics(2);
assertEquals(2, model.getPageId());
assertEquals(2, model.getCountFromBegin());
assertEquals(1, model.getCountThisTime());

View File

@ -155,11 +155,12 @@ public class ScenarioStatisticsTest {
result.setPluginName("get");
result.setResponseTime(responseTime);
result.setStartDate(date);
result.setSuccess(success);
result.setSuccessCount(success ? 1 : 0);
result.setFailCount(success ? 0 : 1);
result.setShouldBeCountResponseTime(true);
result.setBehaviorId(behaviorId);
if (result.isSuccess()) {
if (success) {
result.setContentLength(20);
result.setContentType("image");
} else {

View File

@ -32,7 +32,7 @@ public class Test_HttpPlugin {
public void testGet() {
PluginReturn return1 = this.getHttpPlugin().get(
"http://www.baidu.com/s", "wd=ok", "", "");
assertTrue(return1.isSuccess());
assertTrue(return1.getSuccessCount() > 0);
}
@Test
@ -40,7 +40,7 @@ public class Test_HttpPlugin {
PluginReturn result = this.getHttpPlugin().post(
"http://133.133.12.2:8080/bench4q-web/login",
"userName=admin;password=admin", null, null, null, null);
assertTrue(result.isSuccess());
assertTrue(result.getSuccessCount() > 0);
}
@Test
@ -51,7 +51,7 @@ public class Test_HttpPlugin {
"",
"header=Accept|value=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8|",
null);
assertTrue(result.isSuccess());
assertTrue(result.getSuccessCount() > 0);
}
@Test

View File

@ -19,7 +19,9 @@ public class BehaviorResultModel {
private Date startDate;
private Date endDate;
private long responseTime;
private boolean success;
private int successCount;
private int failCount;
private int behaviorId;
private long contentLength;
private int statusCode;
@ -90,12 +92,21 @@ public class BehaviorResultModel {
}
@XmlElement
public boolean isSuccess() {
return success;
public int getSuccessCount() {
return successCount;
}
public void setSuccess(boolean success) {
this.success = success;
public void setSuccessCount(int successCount) {
this.successCount = successCount;
}
@XmlElement
public int getFailCount() {
return failCount;
}
public void setFailCount(int failCount) {
this.failCount = failCount;
}
@XmlElement