add test to monitor result,fix the bug

This commit is contained in:
fanfuxiaoran 2014-03-27 21:06:11 +08:00
parent f197aaf5b4
commit bd0ea68583
9 changed files with 228 additions and 116 deletions

View File

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.bench4q.share.helper.ExceptionLog;
import org.bench4q.share.models.master.MonitorMemoryResponseModel;
import org.bench4q.share.models.master.MonitorProcessorResponseModel;
import org.bench4q.share.models.monitor.MemoryModel;
@ -14,6 +15,7 @@ import org.bench4q.web.model.BaseResponseModel;
import org.bench4q.web.model.ResultModel;
import org.bench4q.web.service.ChangeToResultModel;
import org.bench4q.web.service.MonitorService;
import org.bench4q.web.tool.test.GsonHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
@ -74,7 +76,7 @@ public class MonitorController {
@RequestMapping("/testPlanId/SUT/{ip}/{port}/memory/{fieldName}/{startTime}")
@ResponseBody
public BaseResponseModel geMemoryStatus(
public BaseResponseModel getMemoryStatus(
@ModelAttribute("accessToken") String accessToken,
@PathVariable("testPlanId") String testPlanId,
@RequestParam String ip, @RequestParam String port,
@ -87,6 +89,7 @@ public class MonitorController {
MonitorMemoryResponseModel monitorMemoryResponseModel = this
.getMonitorService().getMemoryResponseModel(accessToken,
testPlanId, ip, port, startTime);
logger.info(GsonHelper.getGson().toJson(monitorMemoryResponseModel));
List<ResultModel> resultModels = extractResultModelList(
monitorMemoryResponseModel.getMemoryModels(), fieldName);
if (resultModels == null)
@ -94,7 +97,7 @@ public class MonitorController {
else
return new BaseResponseModel(true, resultModels);
} catch (NoSuchFieldException e) {
logger.info(e.getStackTrace());
logger.info(ExceptionLog.getStackTrace(e));
logger.info("get Memory info error :no such field:" + e.getCause());
logger.info(source + "_" + fieldName);
throw new CustomGenericException("5",
@ -165,7 +168,7 @@ public class MonitorController {
for (MemoryModel memoryModel : memoryModels) {
if (memoryModel != null) {
ResultModel resultModel = ChangeToResultModel.getResultModel(
MemoryModel.class, fieldNames);
memoryModel, fieldNames);
resultModel.setTime(memoryModel.getSamplingTime());
resultModels.add(resultModel);
}

View File

@ -3,30 +3,36 @@ package org.bench4q.web.service;
import java.lang.reflect.Field;
import java.util.List;
import org.apache.log4j.Logger;
import org.bench4q.share.helper.ExceptionLog;
import org.bench4q.web.model.ResultModel;
public class ChangeToResultModel {
public static ResultModel getResultModel(Object object, List<String> fieldNames) throws NoSuchFieldException {
public static ResultModel getResultModel(Object object,
List<String> fieldNames) throws NoSuchFieldException {
ResultModel resultModel = new ResultModel();
for (String fieldName : fieldNames)
resultModel.setData(getSpecificFieldValue(object,
fieldName));
for (String fieldName : fieldNames) {
resultModel.setData(getSpecificFieldValue(object, fieldName));
}
return resultModel;
}
private static Object getSpecificFieldValue(Object object, String fieldName)
throws NoSuchFieldException {
try {
Field field = getFieldAndSetAccessible(object, fieldName);
return field.get(object);
} catch (Exception e) {
Logger.getLogger(ChangeToResultModel.class).info(
ExceptionLog.getStackTrace(e));
throw new NoSuchFieldException();
}
}
private static Field getFieldAndSetAccessible(Object object, String fieldName)
throws NoSuchFieldException, SecurityException {
private static Field getFieldAndSetAccessible(Object object,
String fieldName) throws NoSuchFieldException, SecurityException {
Field field = object.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
return field;

View File

@ -1,11 +1,8 @@
package org.bench4q.web.service;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.bench4q.share.models.monitor.NetworkInterfaceModel;
import org.bench4q.web.exception.CustomGenericException;
import org.bench4q.web.model.ResultInfoModel;
import org.bench4q.web.model.SutInfo;
@ -37,13 +34,11 @@ public class MonitorDescriptionInfoService extends BaseService {
if (cpuInfoModel != null)
resultInfoModels.add(cpuInfoModel);
resultInfoModels.add(createMemoryResultInfoModel("Memory"));
resultInfoModels.add(createNetworkResultInfoModel("Network"));
sutInfo.setChildResults(resultInfoModels);
return sutInfo;
}
private ResultInfoModel createMemoryResultInfoModel(String resultName) {
ResultInfoModel resultInfoModel = new ResultInfoModel(resultName,
@ -54,15 +49,15 @@ public class MonitorDescriptionInfoService extends BaseService {
return resultInfoModel;
}
private ResultInfoModel createNetworkResultInfoModel(String resultName) {
ResultInfoModel resultInfoModel = new ResultInfoModel(resultName,
new ArrayList<ResultInfoModel>());
resultInfoModel.getChildResults().add(getNetworkResultInfo());
return resultInfoModel;
}
// private ResultInfoModel createNetworkResultInfoModel(String resultName) {
//
// ResultInfoModel resultInfoModel = new ResultInfoModel(resultName,
// new ArrayList<ResultInfoModel>());
//
// resultInfoModel.getChildResults().add(getNetworkResultInfo());
//
// return resultInfoModel;
// }
private ResultInfoModel createCpuResultInfoModel(String resultName,
List<String> results) {
@ -90,14 +85,14 @@ public class MonitorDescriptionInfoService extends BaseService {
return getResultInfoModel(result, fields);
}
private ResultInfoModel getNetworkResultInfo() {
String result = "Result";
List<String> fiels = new LinkedList<String>();
for (Field field : NetworkInterfaceModel.class.getFields()) {
fiels.add(field.getName());
}
String[] toBeStored = new String[fiels.size()];
return getResultInfoModel(result, fiels.toArray(toBeStored));
}
// private ResultInfoModel getNetworkResultInfo() {
// String result = "Result";
// List<String> fiels = new LinkedList<String>();
// for (Field field : NetworkInterfaceModel.class.getFields()) {
// fiels.add(field.getName());
//
// }
// String[] toBeStored = new String[fiels.size()];
// return getResultInfoModel(result, fiels.toArray(toBeStored));
// }
}

View File

@ -86,27 +86,6 @@ public class MonitorService extends BaseService {
}
// public List<String> getNetworkList(String accessToken, String testplanId,
// String ip, String port) throws CustomGenericException {
// String scource = "MonitorService:getNetworkList";
// try {
// MonitorNetworkReponseModel monitorNetworkReponseModel = getNetworks(
// accessToken, testplanId, ip, port, "0");
// NetworkInterfaceModel networkInterfaceModel = monitorNetworkReponseModel
// .getModels().get(0);
// List<String> networkList = new ArrayList<String>();
// for (NetworkInterfaceModelChild networkInterfaceModelChild :
// networkInterfaceModel
// .getNetworkList()) {
// networkList.add(networkInterfaceModelChild.getInstance());
// }
// return networkList;
// } catch (NullPointerException e) {
// logger.info(e.getStackTrace());
// throw new CustomGenericException("1", "error network list info"
// + e.getCause(), scource);
// }
// }
public MonitorNetworkReponseModel getNetworks(String accessToken,
String testplanId, String ip, String port, String startTime)
@ -125,6 +104,7 @@ public class MonitorService extends BaseService {
private Map<String, String> makeParamsMap(String ip, String port,
String testPlanId, String startTime) {
logger.info(testPlanId);
Map<String, String> params = new HashMap<String, String>();
params.put("hostName", ip);
params.put("port", port);

View File

@ -1 +1 @@
masterAddress=127.0.0.1:7979/
masterAddress=133.133.12.1:7979/

View File

@ -0,0 +1,112 @@
package org.bench4q.web.api.test;
import static org.junit.Assert.*;
import java.util.List;
import javax.xml.bind.JAXBException;
import junit.framework.Assert;
import org.apache.log4j.Logger;
import org.bench4q.share.enums.master.TestPlanStatus;
import org.bench4q.web.api.MonitorController;
import org.bench4q.web.exception.CustomGenericException;
import org.bench4q.web.model.BaseResponseModel;
import org.bench4q.web.model.ResultModel;
import org.bench4q.web.model.WebTestPlanResultModel;
import org.bench4q.web.tool.test.GsonHelper;
import org.bench4q.web.tool.test.LoginHelper;
import org.bench4q.web.tool.test.TestPlanHelper;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/test/resources/bench4qweb-servlet.xml" })
public class TestMonitorResult extends LoginHelper {
private MonitorController monitorController;
private TestPlanHelper startTestPlan;
private String accessToken;
private String testPlanId;
private Logger logger = Logger.getLogger(TestMonitorResult.class);
public MonitorController getMonitorController() {
return monitorController;
}
@Autowired
public void setMonitorController(MonitorController monitorController) {
this.monitorController = monitorController;
}
public TestPlanHelper getStartTestPlan() {
return startTestPlan;
}
@Autowired
public void setStartTestPlan(TestPlanHelper startTestPlan) {
this.startTestPlan = startTestPlan;
}
@Before
public void setUp() {
this.accessToken = login();
this.getStartTestPlan().startTest(accessToken);
this.testPlanId = this.getStartTestPlan().getTestPlanRunId();
}
@SuppressWarnings("unchecked")
@Test
public void test_getMemoryResult() throws InterruptedException,
CustomGenericException, JAXBException {
testTestPlanStatus();
BaseResponseModel baseResponseModel = this.getMonitorController()
.getMemoryStatus(accessToken, testPlanId,
TestPlanHelper.MONITOR_IP, "5556", "pagesPerSecond",
"0");
assertTrue(baseResponseModel.isSuccess());
List<ResultModel> resultModels = (List<ResultModel>) baseResponseModel
.getData();
logger.info(GsonHelper.getGson().toJson(resultModels));
assertTrue(resultModels.size() > 0);
}
@Test
public void test_getCpuResult() throws InterruptedException, CustomGenericException, JAXBException{
testTestPlanStatus();
BaseResponseModel baseResponseModel = this.getMonitorController()
.getCpuResult(accessToken, testPlanId, TestPlanHelper.MONITOR_IP, "5556", "cpu0", "processorTimePercent", "0");
assertTrue(baseResponseModel.isSuccess());
@SuppressWarnings("unchecked")
List<ResultModel> resultModels = (List<ResultModel>) baseResponseModel
.getData();
logger.info(GsonHelper.getGson().toJson(resultModels));
assertTrue(resultModels.size() > 0);
}
@Test
public void test_getNetwork() throws InterruptedException, CustomGenericException, JAXBException{
testTestPlanStatus();
BaseResponseModel baseResponseModel = this.getMonitorController()
.getCpuResult(accessToken, testPlanId, TestPlanHelper.MONITOR_IP, "5556", "cpu0", "processorTimePercent", "0");
assertTrue(baseResponseModel.isSuccess());
@SuppressWarnings("unchecked")
List<ResultModel> resultModels = (List<ResultModel>) baseResponseModel
.getData();
logger.info(GsonHelper.getGson().toJson(resultModels));
assertTrue(resultModels.size() > 0);
}
private void testTestPlanStatus() throws InterruptedException,
CustomGenericException, JAXBException {
Assert.assertNotNull(this.getStartTestPlan().getTestPlanRunId());
assertNotNull(testPlanId);
Thread.sleep(6000);
WebTestPlanResultModel webTestPlanResultModel = this.getStartTestPlan()
.queryTestPlanResultModel(testPlanId, accessToken);
assertEquals(TestPlanStatus.InRunning,
webTestPlanResultModel.getCurrentStatus());
}
}

View File

@ -1,10 +1,14 @@
package org.bench4q.web.api.test;
import static org.junit.Assert.*;
import java.util.List;
import java.util.Map;
import javax.xml.bind.JAXBException;
import junit.framework.Assert;
import org.apache.log4j.Logger;
import org.bench4q.share.enums.master.TestPlanStatus;
import org.bench4q.share.helper.ExceptionLog;
@ -19,7 +23,7 @@ import org.bench4q.web.model.WebTestPlanResultModel;
import org.bench4q.web.service.TestPlanService;
import org.bench4q.web.tool.test.GsonHelper;
import org.bench4q.web.tool.test.LoginHelper;
import org.bench4q.web.tool.test.StartTestPlan;
import org.bench4q.web.tool.test.TestPlanHelper;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@ -32,12 +36,12 @@ import com.google.gson.Gson;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/test/resources/bench4qweb-servlet.xml" })
public class TestResultTest extends LoginHelper {
public class TestScriptResultTest extends LoginHelper {
private TestPlanActionController testPlanActionController;
private StartTestPlan startTestPlan;
private TestPlanHelper testPlanHelper;
private String testPlanId;
private String accessToken;
private Logger logger = Logger.getLogger(TestResultTest.class);
private Logger logger = Logger.getLogger(TestScriptResultTest.class);
private TestPlanService testPlanService;
private String scriptId;
@ -51,13 +55,13 @@ public class TestResultTest extends LoginHelper {
this.testPlanActionController = testPlanActionController;
}
public StartTestPlan getStartTestPlan() {
return startTestPlan;
public TestPlanHelper getStartTestPlan() {
return testPlanHelper;
}
@Autowired
public void setStartTestPlan(StartTestPlan startTestPlan) {
this.startTestPlan = startTestPlan;
public void setStartTestPlan(TestPlanHelper startTestPlan) {
this.testPlanHelper = startTestPlan;
}
public TestPlanService getTestPlanService() {
@ -72,9 +76,9 @@ public class TestResultTest extends LoginHelper {
@Before
public void setUp() {
this.accessToken = this.login();
this.startTestPlan.startTest(accessToken);
this.testPlanId = this.startTestPlan.getTestPlanRunId();
this.scriptId = this.getOneScriptId(testPlanId);
this.testPlanHelper.startTest(accessToken);
this.testPlanId = this.testPlanHelper.getTestPlanRunId();
this.scriptId = this.getOneScriptId(testPlanId, accessToken);
}
@ -89,37 +93,21 @@ public class TestResultTest extends LoginHelper {
Assert.assertNotNull(this.getStartTestPlan().getTestPlanRunId());
BaseResponseModel baseResponseModel = this
.getTestPlanActionController().getReplaceList(this.accessToken,
this.startTestPlan.getTestPlanRunId());
this.testPlanHelper.getTestPlanRunId());
@SuppressWarnings("unchecked")
Map<String, Integer> scriptIdMap = (Map<String, Integer>) baseResponseModel
.getData();
Assert.assertTrue(scriptIdMap.size() > 0);
}
@Test
public void test_getSutInfo() throws CustomGenericException, JAXBException {
Assert.assertNotNull(this.getStartTestPlan().getTestPlanRunId());
@SuppressWarnings("unchecked")
List<SutInfo> sutInfos = (List<SutInfo>) this
.getTestPlanActionController()
.getSutInfo(accessToken,
this.getStartTestPlan().getTestPlanRunId()).getData();
for (SutInfo sutInfo : sutInfos) {
assertEquals("5556", sutInfo.getPort());
assertEquals("133.133.12.3", sutInfo.getIp());
Gson gson = new Gson();
logger.info(gson.toJson(sutInfo));
}
}
@Test
public void test_getTestPageBriefModel() throws InterruptedException,
CustomGenericException, JAXBException {
assertNotNull(this.testPlanId);
assertNotNull(this.scriptId);
Thread.sleep(3000);
WebTestPlanResultModel webTestPlanResultModel = this
.queryTestPlanResultModel(testPlanId);
WebTestPlanResultModel webTestPlanResultModel = this.getStartTestPlan()
.queryTestPlanResultModel(testPlanId, accessToken);
assertEquals(TestPlanStatus.InRunning,
webTestPlanResultModel.getCurrentStatus());
BaseResponseModel baseResponseModel = this
@ -138,7 +126,7 @@ public class TestResultTest extends LoginHelper {
CustomGenericException, JAXBException, InterruptedException {
Assert.assertNotNull(testPlanId);
String scriptId = getOneScriptId(this.getStartTestPlan()
.getTestPlanRunId());
.getTestPlanRunId(), accessToken);
Assert.assertNotNull(scriptId);
Thread.sleep(3000);
BaseResponseModel baseResponseModelForTestPlan = this
@ -152,13 +140,13 @@ public class TestResultTest extends LoginHelper {
BaseResponseModel baseResponseModel = this
.getTestPlanActionController().getScriptBriefStatus(
accessToken, this.testPlanId,
this.getOneScriptId(this.testPlanId),
this.getOneScriptId(this.testPlanId, accessToken),
"averageResponseTime", "0");
assertTrue(baseResponseModel.isSuccess());
List<ResultModel> resultModels = (List<ResultModel>) baseResponseModel
.getData();
Logger.getLogger("get result model");
Logger.getLogger(TestResultTest.class).info(
Logger.getLogger(TestScriptResultTest.class).info(
"resultModel:" + GsonHelper.getGson().toJson(resultModels));
assertTrue(resultModels.size() > 0);
}
@ -168,7 +156,7 @@ public class TestResultTest extends LoginHelper {
throws CustomGenericException, JAXBException, InterruptedException {
assertNotNull(this.testPlanId);
String scriptId = getOneScriptId(this.getStartTestPlan()
.getTestPlanRunId());
.getTestPlanRunId(), accessToken);
Thread.sleep(3000);
BaseResponseModel baseResponseModel = this
.getTestPlanActionController().getScriptBehaviorBriefModel(
@ -183,11 +171,12 @@ public class TestResultTest extends LoginHelper {
.getTestBehaviorsBriefModel().getBehaviorBriefModels().size() > 0);
}
private String getOneScriptId(String testPlanRunId) {
private String getOneScriptId(String testPlanRunId, String accessToken) {
try {
return queryTestPlanResultModel(testPlanRunId).getScriptIds()
.get(0).toString();
return this.getStartTestPlan()
.queryTestPlanResultModel(testPlanRunId, accessToken)
.getScriptIds().get(0).toString();
} catch (CustomGenericException e) {
// TODO Auto-generated catch block
logger.info(ExceptionLog.getStackTrace(e));
@ -200,12 +189,31 @@ public class TestResultTest extends LoginHelper {
}
}
private WebTestPlanResultModel queryTestPlanResultModel(String testPlanRunId)
throws CustomGenericException, JAXBException {
WebTestPlanResultModel webTestPlanResultModel = (WebTestPlanResultModel) this
@SuppressWarnings("unchecked")
@Test
public void test_getSutInfo() throws CustomGenericException, JAXBException,
InterruptedException {
testTestPlanStatus();
List<SutInfo> sutInfos = (List<SutInfo>) this
.getTestPlanActionController()
.queryTestPlan(accessToken,
this.getStartTestPlan().getTestPlanRunId()).getData();
return webTestPlanResultModel;
.getSutInfo(accessToken, testPlanId).getData();
for (SutInfo sutInfo : sutInfos) {
assertEquals("5556", sutInfo.getPort());
assertEquals(TestPlanHelper.MONITOR_IP, sutInfo.getIp());
Gson gson = new Gson();
logger.info(gson.toJson(sutInfo));
}
assertEquals(1, sutInfos.size());
}
private void testTestPlanStatus() throws InterruptedException,
CustomGenericException, JAXBException {
Assert.assertNotNull(this.getStartTestPlan().getTestPlanRunId());
assertNotNull(testPlanId);
Thread.sleep(6000);
WebTestPlanResultModel webTestPlanResultModel = this.getStartTestPlan()
.queryTestPlanResultModel(testPlanId, accessToken);
assertEquals(TestPlanStatus.InRunning,
webTestPlanResultModel.getCurrentStatus());
}
}

View File

@ -9,7 +9,7 @@ import org.bench4q.web.api.ScriptActionController;
import org.bench4q.web.exception.CustomGenericException;
import org.bench4q.web.model.BaseResponseModel;
import org.bench4q.web.tool.test.LoginHelper;
import org.bench4q.web.tool.test.StartTestPlan;
import org.bench4q.web.tool.test.TestPlanHelper;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
@ -23,7 +23,7 @@ public class TestLoginHelper {
private LoginHelper loginHelper;
private ScriptActionController scriptActionController;
private StartTestPlan startTestPlan;
private TestPlanHelper startTestPlan;
public LoginHelper getLoginHelper() {
return loginHelper;
@ -34,12 +34,12 @@ public class TestLoginHelper {
this.loginHelper = loginHelper;
}
public StartTestPlan getStartTestPlan() {
public TestPlanHelper getStartTestPlan() {
return startTestPlan;
}
@Autowired
public void setStartTestPlan(StartTestPlan startTestPlan) {
public void setStartTestPlan(TestPlanHelper startTestPlan) {
this.startTestPlan = startTestPlan;
}

View File

@ -13,22 +13,23 @@ import org.bench4q.web.api.TestPlanActionController;
import org.bench4q.web.exception.CustomGenericException;
import org.bench4q.web.model.TestPlanRequestModel;
import org.bench4q.web.model.WebScriptModel;
import org.bench4q.web.model.WebTestPlanResultModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.ui.ModelMap;
@Component
public class StartTestPlan {
private final String MONITOR_IP = "133.133.12.3";
public class TestPlanHelper {
public static final String MONITOR_IP = "133.133.12.3";
private ScriptHelper scriptHelper;
private TestPlanActionController testPlanActionController;
private String testPlanRunId;
public TestPlanActionController getTestPlanActionController() {
return testPlanActionController;
}
@Autowired
@Autowired
public void setTestPlanActionController(
TestPlanActionController testPlanActionController) {
this.testPlanActionController = testPlanActionController;
@ -57,11 +58,11 @@ public class StartTestPlan {
.getTestPlanActionController()
.runTestPlan(accessToken, new ModelMap(),
createTestPlanWithMonitor(accessToken)).getData();
this.setTestPlanRunId(testPlanResultModel.getTestPlanId()
.toString());
} catch (Exception e) {
Logger.getLogger(StartTestPlan.class).info(
Logger.getLogger(TestPlanHelper.class).info(
ExceptionLog.getStackTrace(e));
}
}
@ -77,9 +78,6 @@ public class StartTestPlan {
.setScriptList(generateWebScriptModels(accessToken));
return testPlanRequestModel;
}
// private void deleteTestPlan(String accessToken){
//
// }
private List<WebScriptModel> generateWebScriptModels(String accessToken)
throws JAXBException, IOException, CustomGenericException {
@ -87,15 +85,25 @@ public class StartTestPlan {
WebScriptModel webScriptModel = new WebScriptModel();
webScriptModel.setCooldown(1);
webScriptModel.setExecuteRange(50);
webScriptModel.setId(this.getScriptHelper().upLoadScriptAndGetId(
accessToken).getId());
webScriptModel.setId(this.getScriptHelper()
.upLoadScriptAndGetId(accessToken).getId());
webScriptModel.setLoad(30);
webScriptModel.setWarmup(1);
scriptList.add(webScriptModel);
return scriptList;
}
public void cleanUpTest(String accessToken) throws CustomGenericException{
public void cleanUpTest(String accessToken) throws CustomGenericException {
this.getScriptHelper().deleteScript(accessToken);
}
public WebTestPlanResultModel queryTestPlanResultModel(
String testPlanRunId, String accessToken)
throws CustomGenericException, JAXBException {
WebTestPlanResultModel webTestPlanResultModel = (WebTestPlanResultModel) this
.getTestPlanActionController()
.queryTestPlan(accessToken, testPlanRunId).getData();
return webTestPlanResultModel;
}
}