parent
513cbf3a4f
commit
37579cbcfb
|
@ -8,6 +8,7 @@ import org.apache.log4j.Logger;
|
||||||
import org.bench4q.agent.plugin.ParameterFileCollector;
|
import org.bench4q.agent.plugin.ParameterFileCollector;
|
||||||
import org.bench4q.agent.scenario.Scenario;
|
import org.bench4q.agent.scenario.Scenario;
|
||||||
import org.bench4q.agent.scenario.behavior.Behavior;
|
import org.bench4q.agent.scenario.behavior.Behavior;
|
||||||
|
import org.bench4q.agent.scenario.behavior.UserBehavior;
|
||||||
import org.bench4q.agent.scenario.engine.ScenarioContext;
|
import org.bench4q.agent.scenario.engine.ScenarioContext;
|
||||||
import org.bench4q.agent.scenario.engine.ScenarioEngine;
|
import org.bench4q.agent.scenario.engine.ScenarioEngine;
|
||||||
import org.bench4q.agent.scenario.engine.Schedule;
|
import org.bench4q.agent.scenario.engine.Schedule;
|
||||||
|
@ -155,6 +156,9 @@ public class TestController {
|
||||||
}
|
}
|
||||||
for (Behavior behavior : scenarioContext.getScenario()
|
for (Behavior behavior : scenarioContext.getScenario()
|
||||||
.getAllBehaviors()) {
|
.getAllBehaviors()) {
|
||||||
|
if (!(behavior instanceof UserBehavior)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
BehaviorBriefModel briefModel = behavior
|
BehaviorBriefModel briefModel = behavior
|
||||||
.getBehaviorBriefResult(scenarioContext.getDataCollector());
|
.getBehaviorBriefResult(scenarioContext.getDataCollector());
|
||||||
briefModel.setBehaviorUrl(behavior.getSpecificParamValue("url"));
|
briefModel.setBehaviorUrl(behavior.getSpecificParamValue("url"));
|
||||||
|
|
|
@ -1,82 +0,0 @@
|
||||||
package org.bench4q.agent.datacollector.impl;
|
|
||||||
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
|
|
||||||
import org.bench4q.agent.Main;
|
|
||||||
import org.bench4q.agent.datacollector.DataCollector;
|
|
||||||
import org.bench4q.agent.helper.ApplicationContextHelper;
|
|
||||||
import org.bench4q.agent.scenario.engine.BehaviorResult;
|
|
||||||
import org.bench4q.agent.storage.StorageHelper;
|
|
||||||
import org.bench4q.share.models.agent.BehaviorBriefModel;
|
|
||||||
import org.bench4q.share.models.agent.BehaviorResultModel;
|
|
||||||
|
|
||||||
public abstract class AbstractDataCollector implements DataCollector {
|
|
||||||
protected StorageHelper storageHelper;
|
|
||||||
|
|
||||||
protected StorageHelper getStorageHelper() {
|
|
||||||
return storageHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStorageHelper(StorageHelper storageHelper) {
|
|
||||||
this.storageHelper = storageHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AbstractDataCollector() {
|
|
||||||
mustDoWhenIniti();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void mustDoWhenIniti() {
|
|
||||||
this.setStorageHelper(ApplicationContextHelper.getContext().getBean(
|
|
||||||
StorageHelper.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void add(final BehaviorResult behaviorResult) {
|
|
||||||
if (!Main.IS_TO_SAVE_DETAIL) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (behaviorResult == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Runnable runnable = new Runnable() {
|
|
||||||
public void run() {
|
|
||||||
storageHelper.getLocalStorage().writeFile(
|
|
||||||
buildBehaviorResultModel(behaviorResult)
|
|
||||||
.getModelString(),
|
|
||||||
calculateSavePath(behaviorResult));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
ExecutorService executorService = Executors
|
|
||||||
.newSingleThreadScheduledExecutor();
|
|
||||||
executorService.execute(runnable);
|
|
||||||
executorService.shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
private BehaviorResultModel buildBehaviorResultModel(
|
|
||||||
BehaviorResult behaviorResult) {
|
|
||||||
BehaviorResultModel resultModel = new BehaviorResultModel();
|
|
||||||
resultModel.setBehaviorId(behaviorResult.getBehaviorId());
|
|
||||||
resultModel.setBehaviorName(behaviorResult.getBehaviorName());
|
|
||||||
resultModel.setContentLength(behaviorResult.getContentLength());
|
|
||||||
resultModel.setContentType(behaviorResult.getContentType());
|
|
||||||
resultModel.setEndDate(behaviorResult.getEndDate());
|
|
||||||
resultModel.setPluginId(behaviorResult.getPluginId());
|
|
||||||
resultModel.setPluginName(behaviorResult.getPluginName());
|
|
||||||
resultModel.setResponseTime(behaviorResult.getResponseTime());
|
|
||||||
resultModel.setShouldBeCountResponseTime(behaviorResult
|
|
||||||
.isShouldBeCountResponseTime());
|
|
||||||
resultModel.setStartDate(behaviorResult.getStartDate());
|
|
||||||
resultModel.setStatusCode(behaviorResult.getStatusCode());
|
|
||||||
resultModel.setSuccessCount(behaviorResult.getSuccessCount());
|
|
||||||
resultModel.setFailCount(behaviorResult.getFailCount());
|
|
||||||
return resultModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract String calculateSavePath(BehaviorResult behaviorResult);
|
|
||||||
|
|
||||||
public abstract Object getScenarioBriefStatistics();
|
|
||||||
|
|
||||||
public abstract BehaviorBriefModel getBehaviorBriefStatistics(
|
|
||||||
int id);
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
package org.bench4q.agent.datacollector.impl;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.bench4q.agent.scenario.engine.BehaviorResult;
|
|
||||||
import org.bench4q.share.models.agent.BehaviorBriefModel;
|
|
||||||
import org.bench4q.share.models.agent.BehaviorStatusCodeResultModel;
|
|
||||||
|
|
||||||
public class BehaviorResultCollector {
|
|
||||||
private int behaviorId;
|
|
||||||
private long successCountFromBegin;
|
|
||||||
private long failCountFromBegin;
|
|
||||||
// statusCode - BehaviorStatusCodeResultCollector
|
|
||||||
private final Map<Integer, BehaviorStatusCodeResultCollector> detailStatusMap;
|
|
||||||
|
|
||||||
public BehaviorResultCollector(int behaviorId) {
|
|
||||||
this.behaviorId = behaviorId;
|
|
||||||
this.detailStatusMap = new HashMap<Integer, BehaviorStatusCodeResultCollector>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void add(BehaviorResult behaviorResult) {
|
|
||||||
if (behaviorResult == null
|
|
||||||
|| behaviorResult.getBehaviorId() != this.behaviorId) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!detailStatusMap.containsKey(behaviorResult.getStatusCode())) {
|
|
||||||
guardExist(behaviorResult.getStatusCode(),
|
|
||||||
behaviorResult.getContentType());
|
|
||||||
}
|
|
||||||
this.successCountFromBegin += behaviorResult.getSuccessCount();
|
|
||||||
this.failCountFromBegin += behaviorResult.getFailCount();
|
|
||||||
BehaviorStatusCodeResultCollector statusCodeResult = detailStatusMap
|
|
||||||
.get(behaviorResult.getStatusCode());
|
|
||||||
statusCodeResult.add(behaviorResult);
|
|
||||||
}
|
|
||||||
|
|
||||||
private synchronized void guardExist(int statusCode, String contentType) {
|
|
||||||
if (!this.detailStatusMap.containsKey(statusCode)) {
|
|
||||||
this.detailStatusMap.put(statusCode,
|
|
||||||
new BehaviorStatusCodeResultCollector(this.behaviorId,
|
|
||||||
statusCode, contentType));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public BehaviorBriefModel getStatistics() {
|
|
||||||
BehaviorBriefModel result = new BehaviorBriefModel();
|
|
||||||
List<BehaviorStatusCodeResultModel> list = new LinkedList<BehaviorStatusCodeResultModel>();
|
|
||||||
for (BehaviorStatusCodeResultCollector codeResultCollector : this.detailStatusMap
|
|
||||||
.values()) {
|
|
||||||
list.add(codeResultCollector.getStatistics());
|
|
||||||
}
|
|
||||||
result.setDetailStatusCodeResultModels(list);
|
|
||||||
result.setBehaviorId(this.behaviorId);
|
|
||||||
result.setTotalCount(this.successCountFromBegin
|
|
||||||
+ this.failCountFromBegin);
|
|
||||||
result.setSuccessfulCount(this.successCountFromBegin);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,109 +0,0 @@
|
||||||
package org.bench4q.agent.datacollector.impl;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
|
|
||||||
import org.bench4q.agent.scenario.engine.BehaviorResult;
|
|
||||||
import org.bench4q.share.models.agent.BehaviorStatusCodeResultModel;
|
|
||||||
|
|
||||||
public class BehaviorStatusCodeResultCollector {
|
|
||||||
private int behaviorId;
|
|
||||||
private int statusCode;
|
|
||||||
public long count;
|
|
||||||
public long countThisTime;
|
|
||||||
public long contentLength;
|
|
||||||
public long minResponseTime;
|
|
||||||
public long maxResponseTime;
|
|
||||||
public long totalResponseTimeThisTime;
|
|
||||||
public String contentType;
|
|
||||||
|
|
||||||
public BehaviorStatusCodeResultCollector(int behaviorId, int statusCode,
|
|
||||||
String contentType) {
|
|
||||||
this.behaviorId = behaviorId;
|
|
||||||
this.statusCode = statusCode;
|
|
||||||
this.contentType = contentType;
|
|
||||||
this.count = 0;
|
|
||||||
this.contentLength = 0;
|
|
||||||
this.minResponseTime = Long.MAX_VALUE;
|
|
||||||
this.maxResponseTime = Long.MIN_VALUE;
|
|
||||||
resetTempraryField();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void resetTempraryField() {
|
|
||||||
this.countThisTime = 0;
|
|
||||||
this.totalResponseTimeThisTime = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isSuccess(int statusCode) {
|
|
||||||
return statusCode == 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void add(BehaviorResult behaviorResult) {
|
|
||||||
if (behaviorResult == null
|
|
||||||
|| behaviorResult.getBehaviorId() != this.behaviorId
|
|
||||||
|| behaviorResult.getStatusCode() != this.statusCode) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.count++;
|
|
||||||
this.countThisTime++;
|
|
||||||
if (behaviorResult.getSuccessCount() == 0) {
|
|
||||||
this.contentLength += 0;
|
|
||||||
this.totalResponseTimeThisTime = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.contentLength += behaviorResult.getContentLength();
|
|
||||||
this.totalResponseTimeThisTime += behaviorResult.getResponseTime();
|
|
||||||
if (behaviorResult.getResponseTime() > this.maxResponseTime) {
|
|
||||||
this.maxResponseTime = behaviorResult.getResponseTime();
|
|
||||||
}
|
|
||||||
if (behaviorResult.getResponseTime() < this.minResponseTime) {
|
|
||||||
this.minResponseTime = behaviorResult.getResponseTime();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private BehaviorStatusCodeResultModel buildModel() {
|
|
||||||
BehaviorStatusCodeResultModel result = new BehaviorStatusCodeResultModel();
|
|
||||||
result.setBehaviorId(this.behaviorId);
|
|
||||||
result.setContentLength(this.contentLength);
|
|
||||||
result.setContentType(this.contentType);
|
|
||||||
result.setCount(this.count);
|
|
||||||
result.setCountThisTime(this.countThisTime);
|
|
||||||
result.setMaxResponseTime(this.maxResponseTime);
|
|
||||||
result.setMinResponseTime(this.minResponseTime);
|
|
||||||
result.setStatusCode(this.statusCode);
|
|
||||||
result.setTotalResponseTimeThisTime(this.totalResponseTimeThisTime);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BehaviorStatusCodeResultModel getStatistics() {
|
|
||||||
BehaviorStatusCodeResultModel result = buildModel();
|
|
||||||
this.resetTempraryField();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean equals(Object expectedObj) {
|
|
||||||
Field[] fields = this.getClass().getDeclaredFields();
|
|
||||||
boolean equal = true;
|
|
||||||
try {
|
|
||||||
for (Field field : fields) {
|
|
||||||
field.setAccessible(true);
|
|
||||||
if (field.getName().equals("contentType")) {
|
|
||||||
field.get(expectedObj).equals(field.get(this));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (field.getLong(this) != field.getLong(expectedObj)) {
|
|
||||||
System.out.println(field.getName()
|
|
||||||
+ " is diferent, this is " + field.getLong(this)
|
|
||||||
+ ", and the expected is "
|
|
||||||
+ field.getLong(expectedObj));
|
|
||||||
equal = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
equal = false;
|
|
||||||
|
|
||||||
}
|
|
||||||
return equal;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -26,9 +26,9 @@ public class BehaviorsResultCollector {
|
||||||
new BehaviorResultCollector(behaviorResult
|
new BehaviorResultCollector(behaviorResult
|
||||||
.getBehaviorId()));
|
.getBehaviorId()));
|
||||||
}
|
}
|
||||||
this.behaviorResultMap.get(behaviorResult.getBehaviorId()).add(
|
|
||||||
behaviorResult);
|
|
||||||
}
|
}
|
||||||
|
this.behaviorResultMap.get(behaviorResult.getBehaviorId()).add(
|
||||||
|
behaviorResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getStatistics(int behaviorId) {
|
public Object getStatistics(int behaviorId) {
|
||||||
|
|
|
@ -29,7 +29,6 @@ public class DataCollectorImpl implements DataCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataCollectorImpl(UUID testId, StorageHelper storageHelper) {
|
public DataCollectorImpl(UUID testId, StorageHelper storageHelper) {
|
||||||
// mustDoWhenIniti();
|
|
||||||
this.storageHelper = storageHelper;
|
this.storageHelper = storageHelper;
|
||||||
this.testId = testId;
|
this.testId = testId;
|
||||||
this.pagesResultCollector = new PagesResultCollector();
|
this.pagesResultCollector = new PagesResultCollector();
|
||||||
|
@ -37,15 +36,7 @@ public class DataCollectorImpl implements DataCollector {
|
||||||
this.scenarioResultCollector = new ScenarioResultCollector();
|
this.scenarioResultCollector = new ScenarioResultCollector();
|
||||||
}
|
}
|
||||||
|
|
||||||
// protected void mustDoWhenIniti() {
|
|
||||||
// this.setStorageHelper(ApplicationContextHelper.getContext().getBean(
|
|
||||||
// StorageHelper.class));
|
|
||||||
// }
|
|
||||||
|
|
||||||
public void add(final BehaviorResult behaviorResult) {
|
public void add(final BehaviorResult behaviorResult) {
|
||||||
if (!Main.IS_TO_SAVE_DETAIL) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (behaviorResult == null) {
|
if (behaviorResult == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -55,6 +46,9 @@ public class DataCollectorImpl implements DataCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveItAsync(final BehaviorResult behaviorResult) {
|
private void saveItAsync(final BehaviorResult behaviorResult) {
|
||||||
|
if (!Main.IS_TO_SAVE_DETAIL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
Runnable runnable = new Runnable() {
|
Runnable runnable = new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
storageHelper.getLocalStorage().writeFile(
|
storageHelper.getLocalStorage().writeFile(
|
||||||
|
|
|
@ -1,110 +0,0 @@
|
||||||
package org.bench4q.agent.datacollector.impl;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.bench4q.agent.scenario.engine.BehaviorResult;
|
|
||||||
import org.bench4q.agent.scenario.engine.PageResult;
|
|
||||||
import org.bench4q.share.models.agent.BehaviorBriefModel;
|
|
||||||
import org.bench4q.share.models.agent.statistics.AgentPageBriefModel;
|
|
||||||
|
|
||||||
public class PageResultCollector extends AbstractDataCollector {
|
|
||||||
Map<Integer, PageBrief> pageBriefMap;
|
|
||||||
|
|
||||||
private Map<Integer, PageBrief> getPageBriefMap() {
|
|
||||||
return pageBriefMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setPageBriefMap(Map<Integer, PageBrief> pageBriefMap) {
|
|
||||||
this.pageBriefMap = pageBriefMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PageResultCollector() {
|
|
||||||
this.setPageBriefMap(new HashMap<Integer, PageBrief>());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void add(PageResult pageResult) {
|
|
||||||
if (pageResult == null || pageResult.getPageId() < 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PageBrief pageBrief = guardTheValueOfThePageIdExists(pageResult
|
|
||||||
.getPageId());
|
|
||||||
pageBrief.countThisTime++;
|
|
||||||
pageBrief.countFromBegin++;
|
|
||||||
pageBrief.totalResponseTimeThisTime += pageResult.getExecuteRange();
|
|
||||||
pageBrief.latesTimeResponseTime = pageResult.getExecuteRange();
|
|
||||||
if (pageResult.getExecuteRange() > pageBrief.maxResponseTimeFromBegin) {
|
|
||||||
pageBrief.maxResponseTimeFromBegin = pageResult.getExecuteRange();
|
|
||||||
}
|
|
||||||
if (pageResult.getExecuteRange() < pageBrief.minResponseTimeFromBegin) {
|
|
||||||
pageBrief.minResponseTimeFromBegin = pageResult.getExecuteRange();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private synchronized PageBrief guardTheValueOfThePageIdExists(int pageId) {
|
|
||||||
if (!this.getPageBriefMap().containsKey(pageId)) {
|
|
||||||
this.getPageBriefMap().put(pageId, new PageBrief());
|
|
||||||
}
|
|
||||||
return this.getPageBriefMap().get(pageId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getPageBriefStatistics(int pageId) {
|
|
||||||
PageBrief pageBrief = guardTheValueOfThePageIdExists(pageId);
|
|
||||||
AgentPageBriefModel result = new AgentPageBriefModel();
|
|
||||||
result.setCountFromBegin(pageBrief.countFromBegin);
|
|
||||||
result.setCountThisTime(pageBrief.countThisTime);
|
|
||||||
result.setMaxResponseTimeFromBegin(pageBrief.maxResponseTimeFromBegin);
|
|
||||||
result.setMinResponseTimeFromBegin(pageBrief.minResponseTimeFromBegin);
|
|
||||||
result.setTotalResponseTimeThisTime(pageBrief.totalResponseTimeThisTime);
|
|
||||||
result.setPageId(pageId);
|
|
||||||
long nowTime = new Date().getTime();
|
|
||||||
result.setTimeFrame(nowTime - pageBrief.lastSampleTime);
|
|
||||||
result.setLatestResponseTime(pageBrief.latesTimeResponseTime);
|
|
||||||
pageBrief.resetTemperatyField();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void add(BehaviorResult behaviorResult) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String calculateSavePath(BehaviorResult behaviorResult) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getScenarioBriefStatistics() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BehaviorBriefModel getBehaviorBriefStatistics(int id) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public class PageBrief {
|
|
||||||
public long lastSampleTime;
|
|
||||||
public long countThisTime;
|
|
||||||
public long totalResponseTimeThisTime;
|
|
||||||
public long maxResponseTimeFromBegin;
|
|
||||||
public long minResponseTimeFromBegin;
|
|
||||||
public long countFromBegin;
|
|
||||||
public long latesTimeResponseTime;
|
|
||||||
|
|
||||||
public PageBrief() {
|
|
||||||
resetTemperatyField();
|
|
||||||
this.maxResponseTimeFromBegin = Long.MIN_VALUE;
|
|
||||||
this.minResponseTimeFromBegin = Long.MAX_VALUE;
|
|
||||||
this.countFromBegin = 0;
|
|
||||||
this.latesTimeResponseTime = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void resetTemperatyField() {
|
|
||||||
this.lastSampleTime = new Date().getTime();
|
|
||||||
this.countThisTime = 0;
|
|
||||||
this.totalResponseTimeThisTime = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,197 +0,0 @@
|
||||||
package org.bench4q.agent.test.datastatistics;
|
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import org.bench4q.agent.datacollector.DataCollector;
|
|
||||||
import org.bench4q.agent.datacollector.impl.ScenarioResultCollector;
|
|
||||||
import org.bench4q.agent.scenario.engine.BehaviorResult;
|
|
||||||
import org.bench4q.agent.scenario.engine.PageResult;
|
|
||||||
import org.bench4q.agent.storage.StorageHelper;
|
|
||||||
import org.bench4q.share.models.agent.BehaviorBriefModel;
|
|
||||||
import org.bench4q.share.models.agent.statistics.AgentBriefStatusModel;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
|
||||||
|
|
||||||
public class ScenarioStatisticsTest {
|
|
||||||
private DataCollector dataStatistics;
|
|
||||||
|
|
||||||
protected DataCollector getDataStatistics() {
|
|
||||||
return dataStatistics;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setDataStatistics(DataCollector dataStatistics) {
|
|
||||||
this.dataStatistics = dataStatistics;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ScenarioStatisticsTest() {
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void init() {
|
|
||||||
@SuppressWarnings("resource")
|
|
||||||
ApplicationContext context = new ClassPathXmlApplicationContext(
|
|
||||||
"classpath*:/org/bench4q/agent/config/application-context.xml");
|
|
||||||
ScenarioResultCollector agentResultDataCollector = new ScenarioResultCollector(
|
|
||||||
UUID.randomUUID());
|
|
||||||
agentResultDataCollector.setStorageHelper((StorageHelper) context
|
|
||||||
.getBean(StorageHelper.class));
|
|
||||||
this.setDataStatistics(agentResultDataCollector);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addZeroBriefTest() {
|
|
||||||
for (BehaviorResult behaviorResult : makeBehaviorList(0, 1)) {
|
|
||||||
this.getDataStatistics().add(behaviorResult);
|
|
||||||
}
|
|
||||||
AgentBriefStatusModel model = (AgentBriefStatusModel) this
|
|
||||||
.getDataStatistics().getScenarioBriefStatistics();
|
|
||||||
AgentBriefStatusModel modelExpect = makeAllZeroModel();
|
|
||||||
modelExpect.setTimeFrame(model.getTimeFrame());
|
|
||||||
assertTrue(model.equals(modelExpect));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addOneBriefTest() throws InterruptedException {
|
|
||||||
List<BehaviorResult> generatedBehaviorResults = makeBehaviorList(1, 1);
|
|
||||||
for (BehaviorResult behaviorResult : generatedBehaviorResults) {
|
|
||||||
this.getDataStatistics().add(behaviorResult);
|
|
||||||
}
|
|
||||||
Thread.sleep(100);
|
|
||||||
AgentBriefStatusModel model = (AgentBriefStatusModel) this
|
|
||||||
.getDataStatistics().getScenarioBriefStatistics();
|
|
||||||
AgentBriefStatusModel modelExpect = new AgentBriefStatusModel();
|
|
||||||
modelExpect.setTimeFrame(model.getTimeFrame());
|
|
||||||
makeUpStatusModelForOneBehavior(modelExpect);
|
|
||||||
assertTrue(model.equals(modelExpect));
|
|
||||||
judgeBehaviorTotalAndScenarioTotal(generatedBehaviorResults, model);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void judgeBehaviorTotalAndScenarioTotal(
|
|
||||||
List<BehaviorResult> generatedBehaviorResults,
|
|
||||||
AgentBriefStatusModel model) {
|
|
||||||
int successCount = 0;
|
|
||||||
HashSet<Integer> set = new HashSet<Integer>();
|
|
||||||
for (BehaviorResult unit : generatedBehaviorResults) {
|
|
||||||
BehaviorBriefModel briefModel = this.getDataStatistics()
|
|
||||||
.getBehaviorBriefStatistics(unit.getBehaviorId());
|
|
||||||
if (set.contains(unit.getBehaviorId()) || briefModel == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
set.add(unit.getBehaviorId());
|
|
||||||
successCount += briefModel.getSuccessfulCount();
|
|
||||||
}
|
|
||||||
assertEquals(successCount, model.getSuccessCountFromBegin());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addTwoBriefTest() throws InterruptedException {
|
|
||||||
List<BehaviorResult> behaviorResults = makeBehaviorList(2, 1);
|
|
||||||
for (BehaviorResult behaviorResult : behaviorResults) {
|
|
||||||
this.getDataStatistics().add(behaviorResult);
|
|
||||||
}
|
|
||||||
Thread.sleep(100);
|
|
||||||
AgentBriefStatusModel model = (AgentBriefStatusModel) this
|
|
||||||
.getDataStatistics().getScenarioBriefStatistics();
|
|
||||||
AgentBriefStatusModel modelExpect = makeUpStatusModelForTwoBehavior(model
|
|
||||||
.getTimeFrame());
|
|
||||||
assertTrue(model.equals(modelExpect));
|
|
||||||
judgeBehaviorTotalAndScenarioTotal(behaviorResults, model);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static AgentBriefStatusModel makeUpStatusModelForTwoBehavior(
|
|
||||||
long timeFrame) {
|
|
||||||
AgentBriefStatusModel model = new AgentBriefStatusModel();
|
|
||||||
model.setTimeFrame(timeFrame);
|
|
||||||
model.setSuccessThroughputThisTime(1 * 1000 / timeFrame);
|
|
||||||
model.setFailCountFromBegin(1);
|
|
||||||
model.setFailThroughputThisTime(1 * 1000 / timeFrame);
|
|
||||||
model.setMaxResponseTime(200);
|
|
||||||
model.setMinResponseTime(200);
|
|
||||||
model.setSuccessCountFromBegin(1);
|
|
||||||
model.setSuccessCountThisTime(1);
|
|
||||||
model.setFailCountThisTime(1);
|
|
||||||
model.setTotalResponseTimeThisTime(200);
|
|
||||||
model.setTotalSqureResponseTimeThisTime(40000);
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void makeUpStatusModelForOneBehavior(
|
|
||||||
AgentBriefStatusModel model) {
|
|
||||||
model.setSuccessThroughputThisTime(1 * 1000 / model.getTimeFrame());
|
|
||||||
model.setFailCountFromBegin(0);
|
|
||||||
model.setFailThroughputThisTime(0);
|
|
||||||
model.setMaxResponseTime(200);
|
|
||||||
model.setMinResponseTime(200);
|
|
||||||
model.setSuccessCountFromBegin(1);
|
|
||||||
model.setSuccessCountThisTime(1);
|
|
||||||
model.setFailCountThisTime(0);
|
|
||||||
model.setTotalResponseTimeThisTime(200);
|
|
||||||
model.setTotalSqureResponseTimeThisTime(40000);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static AgentBriefStatusModel makeAllZeroModel() {
|
|
||||||
AgentBriefStatusModel model = new AgentBriefStatusModel();
|
|
||||||
model.setSuccessThroughputThisTime(0);
|
|
||||||
model.setFailCountFromBegin(0);
|
|
||||||
model.setFailThroughputThisTime(0);
|
|
||||||
model.setMaxResponseTime(0);
|
|
||||||
model.setMinResponseTime(0);
|
|
||||||
model.setTimeFrame(0);
|
|
||||||
model.setSuccessCountFromBegin(0);
|
|
||||||
model.setTotalResponseTimeThisTime(0);
|
|
||||||
model.setSuccessCountThisTime(0);
|
|
||||||
model.setFailCountThisTime(0);
|
|
||||||
model.setTotalSqureResponseTimeThisTime(0);
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PageResult makePageResultWithBehaviorResult(int count) {
|
|
||||||
List<BehaviorResult> behaviorResults = makeBehaviorList(count, 1);
|
|
||||||
return PageResult.buildPageResult(2, behaviorResults);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<BehaviorResult> makeBehaviorList(int count,
|
|
||||||
int behaviorId) {
|
|
||||||
List<BehaviorResult> behaviorResults = new ArrayList<BehaviorResult>();
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
int statusCode = i % 2 == 0 ? 200 : 400;
|
|
||||||
behaviorResults.add(buildBehaviorResult(200 + 10 * i, i % 2 == 0,
|
|
||||||
statusCode, behaviorId, 200 + 10 * i));
|
|
||||||
}
|
|
||||||
return behaviorResults;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static BehaviorResult buildBehaviorResult(long responseTime,
|
|
||||||
boolean success, int statusCode, int behaviorId, long startDateTime) {
|
|
||||||
Date date = new Date(startDateTime);
|
|
||||||
BehaviorResult result = new BehaviorResult();
|
|
||||||
result.setBehaviorName("");
|
|
||||||
result.setEndDate(new Date(date.getTime() + responseTime));
|
|
||||||
result.setPluginId("Get");
|
|
||||||
result.setPluginName("get");
|
|
||||||
result.setResponseTime(responseTime);
|
|
||||||
result.setStartDate(date);
|
|
||||||
result.setSuccessCount(success ? 1 : 0);
|
|
||||||
result.setFailCount(success ? 0 : 1);
|
|
||||||
result.setShouldBeCountResponseTime(true);
|
|
||||||
|
|
||||||
result.setBehaviorId(behaviorId);
|
|
||||||
if (success) {
|
|
||||||
result.setContentLength(20);
|
|
||||||
result.setContentType("image");
|
|
||||||
} else {
|
|
||||||
result.setContentLength(0);
|
|
||||||
result.setContentType("");
|
|
||||||
}
|
|
||||||
result.setStatusCode(statusCode);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -51,12 +51,18 @@ public class Test_DataCollectorImpl {
|
||||||
.getScenarioBriefStatistics();
|
.getScenarioBriefStatistics();
|
||||||
judgeBehaviorTotalAndScenarioTotal(
|
judgeBehaviorTotalAndScenarioTotal(
|
||||||
Arrays.asList(buildBehaviorResult, buildBehaviorResult2), model);
|
Arrays.asList(buildBehaviorResult, buildBehaviorResult2), model);
|
||||||
|
this.dataCollectorImpl.add(Test_ScenarioBriefCollector
|
||||||
|
.buildBehaviorResult(230, true, 200, 1, new Date().getTime()));
|
||||||
|
model = (AgentBriefStatusModel) this.dataCollectorImpl
|
||||||
|
.getScenarioBriefStatistics();
|
||||||
|
judgeBehaviorTotalAndScenarioTotal(
|
||||||
|
Arrays.asList(buildBehaviorResult, buildBehaviorResult2), model);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void judgeBehaviorTotalAndScenarioTotal(
|
private void judgeBehaviorTotalAndScenarioTotal(
|
||||||
List<BehaviorResult> generatedBehaviorResults,
|
List<BehaviorResult> generatedBehaviorResults,
|
||||||
AgentBriefStatusModel model) {
|
AgentBriefStatusModel model) {
|
||||||
int successCount = 0;
|
int successCount = 0, totalCount = 0;
|
||||||
HashSet<Integer> set = new HashSet<Integer>();
|
HashSet<Integer> set = new HashSet<Integer>();
|
||||||
for (BehaviorResult unit : generatedBehaviorResults) {
|
for (BehaviorResult unit : generatedBehaviorResults) {
|
||||||
BehaviorBriefModel briefModel = (BehaviorBriefModel) this.dataCollectorImpl
|
BehaviorBriefModel briefModel = (BehaviorBriefModel) this.dataCollectorImpl
|
||||||
|
@ -66,7 +72,12 @@ public class Test_DataCollectorImpl {
|
||||||
}
|
}
|
||||||
set.add(unit.getBehaviorId());
|
set.add(unit.getBehaviorId());
|
||||||
successCount += briefModel.getSuccessfulCount();
|
successCount += briefModel.getSuccessfulCount();
|
||||||
|
totalCount += briefModel.getTotalCount();
|
||||||
}
|
}
|
||||||
assertEquals((long) successCount, model.getSuccessCountFromBegin());
|
assertEquals((long) successCount, model.getSuccessCountFromBegin());
|
||||||
|
assertEquals(
|
||||||
|
totalCount,
|
||||||
|
model.getSuccessCountFromBegin()
|
||||||
|
+ model.getFailCountFromBegin());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue