run test error

This commit is contained in:
Captain.B 2020-04-15 13:55:54 +08:00
parent 983218d7b0
commit 7dffef5379
6 changed files with 16 additions and 16 deletions

View File

@ -4,7 +4,6 @@ import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import io.metersphere.base.domain.FileMetadata;
import io.metersphere.commons.constants.RoleConstants;
import io.metersphere.commons.exception.MSException;
import io.metersphere.commons.utils.PageUtils;
import io.metersphere.commons.utils.Pager;
import io.metersphere.controller.request.testplan.*;
@ -86,10 +85,7 @@ public class PerformanceTestController {
@PostMapping("/run")
public void run(@RequestBody RunTestPlanRequest request) {
boolean started = performanceTestService.run(request);
if (!started) {
MSException.throwException("Start engine error, please check log.");
}
performanceTestService.run(request);
}
@GetMapping("/file/metadata/{testId}")

View File

@ -12,6 +12,7 @@ import io.metersphere.engine.EngineContext;
import io.metersphere.engine.EngineFactory;
import io.metersphere.engine.docker.request.BaseRequest;
import io.metersphere.engine.docker.request.TestRequest;
import io.metersphere.i18n.Translator;
import org.springframework.web.client.RestTemplate;
import java.util.List;
@ -41,7 +42,7 @@ public class DockerTestEngine extends AbstractEngine {
.reduce(Integer::sum)
.orElse(0);
if (threadNum > totalThreadNum - runningSumThreadNum) {
MSException.throwException("Insufficient resources");
MSException.throwException(Translator.get("max_thread_insufficient"));
}
List<Integer> resourceRatio = resourceList.stream()
.filter(r -> ResourceStatusEnum.VALID.name().equals(r.getStatus()))

View File

@ -15,6 +15,7 @@ import io.metersphere.engine.kubernetes.crds.jmeter.Jmeter;
import io.metersphere.engine.kubernetes.crds.jmeter.JmeterSpec;
import io.metersphere.engine.kubernetes.provider.ClientCredential;
import io.metersphere.engine.kubernetes.provider.KubernetesProvider;
import io.metersphere.i18n.Translator;
import org.apache.commons.collections.MapUtils;
import java.util.HashMap;
@ -43,7 +44,7 @@ public class KubernetesTestEngine extends AbstractEngine {
Integer maxConcurrency = clientCredential.getMaxConcurrency();
// 当前测试需要的并发数大于剩余的并发数报错
if (threadNum > maxConcurrency - sumThreadNum) {
MSException.throwException("Insufficient resources");
MSException.throwException(Translator.get("max_thread_insufficient"));
}
try {
EngineContext context = EngineFactory.createContext(loadTest, threadNum, this.getStartTime(), this.getReportId());

View File

@ -169,7 +169,8 @@ public class PerformanceTestService {
return request.getId();
}
public boolean run(RunTestPlanRequest request) {
@Transactional(noRollbackFor = MSException.class)// 保存失败的信息
public void run(RunTestPlanRequest request) {
final LoadTestWithBLOBs loadTest = loadTestMapper.selectByPrimaryKey(request.getId());
if (loadTest == null) {
MSException.throwException(Translator.get("run_load_test_not_found") + request.getId());
@ -186,12 +187,12 @@ public class PerformanceTestService {
MSException.throwException(String.format("Test cannot be runtest ID%s", request.getId()));
}
return startEngine(loadTest, engine);
startEngine(loadTest, engine);
// todo通过调用stop方法能够停止正在运行的engine但是如果部署了多个backend实例页面发送的停止请求如何定位到具体的engine
}
private boolean startEngine(LoadTestWithBLOBs loadTest, Engine engine) {
private void startEngine(LoadTestWithBLOBs loadTest, Engine engine) {
LoadTestReportWithBLOBs testReport = new LoadTestReportWithBLOBs();
testReport.setId(engine.getReportId());
testReport.setCreateTime(engine.getStartTime());
@ -208,7 +209,6 @@ public class PerformanceTestService {
reportDetail.setReportId(testReport.getId());
loadTestReportDetailMapper.insertSelective(reportDetail);
boolean started = true;
try {
// 标记running状态
loadTest.setStatus(TestStatus.Starting.name());
@ -219,18 +219,18 @@ public class PerformanceTestService {
extLoadTestReportDetailMapper.appendLine(testReport.getId(), "\n");
//
engine.start();
} catch (Exception e) {
} catch (MSException e) {
LogUtil.error(e);
started = false;
loadTest.setStatus(TestStatus.Error.name());
loadTest.setDescription(e.getMessage());
loadTestMapper.updateByPrimaryKeySelective(loadTest);
//
testReport.setStatus(TestStatus.Error.name());
testReport.setDescription(e.getMessage());
loadTestReportMapper.updateByPrimaryKeySelective(testReport);
throw e;
}
return started;
}
public List<LoadTestDTO> recentTestPlans(QueryTestPlanRequest request) {

View File

@ -18,5 +18,6 @@
"no_nodes_message": "No node message",
"duplicate_node_ip": "Duplicate IPs",
"only_one_k8s": "Only one K8s can be added",
"organization_id_is_null": "Organization ID cannot be null"
"organization_id_is_null": "Organization ID cannot be null",
"max_thread_insufficient": "The number of concurrent users exceeds"
}

View File

@ -18,5 +18,6 @@
"no_nodes_message": "没有节点信息",
"duplicate_node_ip": "节点 IP 重复",
"only_one_k8s": "只能添加一个 K8s",
"organization_id_is_null": "组织 ID 不能为空"
"organization_id_is_null": "组织 ID 不能为空",
"max_thread_insufficient": "并发用户数超额"
}