run test error
This commit is contained in:
parent
983218d7b0
commit
7dffef5379
|
@ -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}")
|
||||
|
|
|
@ -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()))
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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 run,test 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) {
|
||||
|
|
|
@ -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"
|
||||
}
|
|
@ -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": "并发用户数超额"
|
||||
}
|
Loading…
Reference in New Issue