diff --git a/src/main/java/yi/master/business/advanced/action/PerformanceTestConfigAction.java b/src/main/java/yi/master/business/advanced/action/PerformanceTestConfigAction.java index d1f378d3d0de09aabe60a414e1c5e41535955662..fccb56a63ddf01a789c1770b158f10d132df072f 100644 --- a/src/main/java/yi/master/business/advanced/action/PerformanceTestConfigAction.java +++ b/src/main/java/yi/master/business/advanced/action/PerformanceTestConfigAction.java @@ -114,6 +114,7 @@ public class PerformanceTestConfigAction extends BaseAction ptos = CacheUtil.getPtObjectsByUserId(user.getUserId()); JSONObject obj = new JSONObject(); obj.put("running", false); + obj.put("end", true); PerformanceTestObject pto = ptos.get(objectId); if (pto != null) { JsonConfig jsonConfig = new JsonConfig(); @@ -122,6 +123,7 @@ public class PerformanceTestConfigAction extends BaseAction entry:scene.getConfig().getUseVariables().entrySet()) { String replaceVariable = entry.getValue(); - // 如果里面有全局变量就替换 - replaceVariable = PracticalUtils.replaceGlobalVariable(replaceVariable, globalVariableService); + // 如果里面有测试集公共变量就替换 + replaceVariable = PracticalUtils.replaceSetPublicVariable(replaceVariable, config.getPublicDataObject()); // 如果里面有数据池变量就替换 replaceVariable = PracticalUtils.replacePoolData(replaceVariable, poolData.get(itemId)); - // 如果里面有测试集公共变量就替换 - replaceVariable = PracticalUtils.replaceSetPublicVariable(replaceVariable, config.getPublicDataObject()); + // 如果里面有全局变量就替换 + replaceVariable = PracticalUtils.replaceGlobalVariable(replaceVariable, globalVariableService); // 剩下就是在测试过程中需要替换的上下文变量 // 放到替换入参的参数中 @@ -883,8 +883,9 @@ public class MessageAutoTest { requestMessage = parseUtil.depacketizeMessageToString(msg.getComplexParameter(), paramsData.toString()); } - //替换入参报文中的全局变量 - requestMessage = PracticalUtils.replaceGlobalVariable(requestMessage, globalVariableService); + //替换入参报文中的测试集公共变量 + requestMessage = PracticalUtils.replaceSetPublicVariable(requestMessage, config.getPublicDataObject()); + // 处理数据池 if (itemId != null) { @@ -895,11 +896,16 @@ public class MessageAutoTest { requestMessage = PracticalUtils.replacePoolData(requestMessage, testScene.getPoolData()); } - //替换入参报文中的测试集公共变量 - requestMessage = PracticalUtils.replaceSetPublicVariable(requestMessage, config.getPublicDataObject()); + //替换入参报文中的全局变量 + requestMessage = PracticalUtils.replaceGlobalVariable(requestMessage, globalVariableService); + + //处理请求URL中的全局变量 + requestUrl = PracticalUtils.replaceSetPublicVariable(requestUrl, config.getPublicDataObject()); + requestUrl = PracticalUtils.replacePoolData(requestUrl, testScene.getPoolData()); requestUrl = PracticalUtils.replaceGlobalVariable(requestUrl, globalVariableService); + //处理路径参数:在请求URL中出现 #路径path# requestUrl = PracticalUtils.replacePathVariableParameter(requestUrl, requestMessage, parseUtil); @@ -914,12 +920,16 @@ public class MessageAutoTest { testScene.setConfig(config); //提前在此处替换调用参数中的全局变量,防止在异步线程中调用时出现一些不可预期的错误 - // 替换全局变量 - String callParams = PracticalUtils.replaceGlobalVariable(msg.getCallParameter(), null); + // 替换测试集公共变量 + String callParams = PracticalUtils.replaceSetPublicVariable(msg.getCallParameter(), config.getPublicDataObject()); + // 替换数据池 callParams = PracticalUtils.replacePoolData(callParams, testScene.getPoolData()); - // 替换测试集公共变量 - callParams = PracticalUtils.replaceSetPublicVariable(callParams, config.getPublicDataObject()); + + // 替换全局变量 + callParams = PracticalUtils.replaceGlobalVariable(callParams, null); + + testScene.setCallParameter(PracticalUtils.jsonToMap(callParams)); testObjects.add(testScene); diff --git a/src/main/java/yi/master/coretest/message/test/performance/PerformanceTestObject.java b/src/main/java/yi/master/coretest/message/test/performance/PerformanceTestObject.java index 8ae016702bfc3f4f8819a7b29476800be30854a6..5ca1f60a7d4e1e35fcb2be92b58baf873f480532 100644 --- a/src/main/java/yi/master/coretest/message/test/performance/PerformanceTestObject.java +++ b/src/main/java/yi/master/coretest/message/test/performance/PerformanceTestObject.java @@ -104,6 +104,10 @@ public class PerformanceTestObject { * 标记是否已经开始了测试 */ private boolean running = false; + /** + * 是否已结束 + */ + private boolean end = false; /** * 当前正在运行测试的线程名称 */ @@ -350,6 +354,8 @@ public class PerformanceTestObject { } CacheUtil.getPtObjectsByUserId(this.testUser.getUserId()).remove(this.objectId); + this.currentStatus = "已结束"; + this.end = true; return true; } @@ -460,7 +466,15 @@ public class PerformanceTestObject { return projectId; } - /** + public boolean isEnd() { + return end; + } + + public void setEnd(boolean end) { + this.end = end; + } + + /** * 解析参数化文件 * @param parameterizedFile txt格式化的参数化文件,并且指定了分隔符 */ @@ -670,15 +684,15 @@ public class PerformanceTestObject { analyzeResult.getEveryTimeDetails().add(Arrays.asList(new Integer[]{totalCount, successCount, failCount})); //压力机资源情况本机资源 - try { - analyzeResult.getPressCpu().add((double) Math.round((PracticalUtils.sigar.getCpuPerc().getCombined() * 100) * 100) / 100); - analyzeResult.getPressMemory().add((double) Math.round((PracticalUtils.sigar.getMem().getUsedPercent()) * 100) / 100); - } catch (Exception e) { - logger.error("获取压力机资源消耗失败!", e); - errorMsg.add(timeTag() + "获取压力机的资源消耗情况失败!"); - analyzeResult.getPressCpu().add(0.00); - analyzeResult.getPressMemory().add(0.00); - } +// try { +// analyzeResult.getPressCpu().add((double) Math.round((PracticalUtils.sigar.getCpuPerc().getCombined() * 100) * 100) / 100); +// analyzeResult.getPressMemory().add((double) Math.round((PracticalUtils.sigar.getMem().getUsedPercent()) * 100) / 100); +// } catch (Exception e) { +// logger.error("获取压力机资源消耗失败!", e); +// errorMsg.add(timeTag() + "获取压力机的资源消耗情况失败!"); +// analyzeResult.getPressCpu().add(0.00); +// analyzeResult.getPressMemory().add(0.00); +// } //判断是否测试完成:所有测试线程是否都已经退出 if (threads.size() == 0 && testResults.size() == 0) { infoMsg.add(timeTag() + "所有线程均已退出,准备数据统计并存储!"); diff --git a/src/main/webapp/resource/advanced/performanceTest.js b/src/main/webapp/resource/advanced/performanceTest.js index 1befd6d34e070860ea1c3486b8c34c4d0a8ff0aa..6101c7f121bcc084b9f0a93c2e633b8a1d13870f 100644 --- a/src/main/webapp/resource/advanced/performanceTest.js +++ b/src/main/webapp/resource/advanced/performanceTest.js @@ -272,6 +272,7 @@ var eventList = { layer.confirm('初始化完成,是否需要打开测试视图页面?', {title:'提示'}, function(index){ $.post(REQUEST_URL.PERFORMANCE_TEST.TASK_VIEW, {objectId:json.data.objectId}, function(text){ loading(false); + console.log(text) if (text.returnCode == 0) { layer_show("性能测试视图", templates["performance-test-task-view"](text.data), null, null, 1, function(layero, index){ createTestView(layero, text.data); @@ -348,7 +349,7 @@ var eventList = { if (currentTestObject[type] == null) { return false; } - createViewWindow(currentTestObject[type].reverse().join("\n"), { + createViewWindow(currentTestObject[type].join("\n"), { title:"测试信息查看", //标题 }); }, @@ -534,7 +535,7 @@ function createTestView(layero, object) { window.intervalId = setInterval(function(){ $.post(REQUEST_URL.PERFORMANCE_TEST.TASK_VIEW, {objectId:currentTestObject.objectId}, function(json){ if (json.returnCode == 0) { - if (!json.data.running) { + if (json.data.end) { clearInterval(window.intervalId); $(layero).find('.col-sm-2:eq(2) .label-success').text("已结束"); currentTestObject.finished = true;