This commit is contained in:
parent
bab322a8cb
commit
a04c0fc078
|
@ -3,17 +3,13 @@ package io.metersphere.engine;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import io.metersphere.base.domain.FileMetadata;
|
|
||||||
import io.metersphere.base.domain.LoadTestWithBLOBs;
|
import io.metersphere.base.domain.LoadTestWithBLOBs;
|
||||||
import io.metersphere.base.domain.TestResource;
|
import io.metersphere.base.domain.TestResource;
|
||||||
import io.metersphere.base.domain.TestResourcePool;
|
import io.metersphere.base.domain.TestResourcePool;
|
||||||
import io.metersphere.commons.constants.FileType;
|
|
||||||
import io.metersphere.commons.constants.ResourcePoolTypeEnum;
|
import io.metersphere.commons.constants.ResourcePoolTypeEnum;
|
||||||
import io.metersphere.commons.constants.TestStatus;
|
import io.metersphere.commons.constants.TestStatus;
|
||||||
import io.metersphere.commons.exception.MSException;
|
import io.metersphere.commons.exception.MSException;
|
||||||
import io.metersphere.commons.utils.CommonBeanFactory;
|
import io.metersphere.commons.utils.CommonBeanFactory;
|
||||||
import io.metersphere.i18n.Translator;
|
|
||||||
import io.metersphere.service.FileService;
|
|
||||||
import io.metersphere.service.LoadTestService;
|
import io.metersphere.service.LoadTestService;
|
||||||
import io.metersphere.service.TestResourcePoolService;
|
import io.metersphere.service.TestResourcePoolService;
|
||||||
import io.metersphere.service.TestResourceService;
|
import io.metersphere.service.TestResourceService;
|
||||||
|
@ -21,11 +17,8 @@ import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public abstract class AbstractEngine implements Engine {
|
public abstract class AbstractEngine implements Engine {
|
||||||
protected FileMetadata jmxFile;
|
|
||||||
protected List<FileMetadata> csvFiles;
|
|
||||||
protected LoadTestWithBLOBs loadTest;
|
protected LoadTestWithBLOBs loadTest;
|
||||||
protected LoadTestService loadTestService;
|
protected LoadTestService loadTestService;
|
||||||
protected Integer threadNum;
|
protected Integer threadNum;
|
||||||
|
@ -33,12 +26,10 @@ public abstract class AbstractEngine implements Engine {
|
||||||
|
|
||||||
private TestResourcePoolService testResourcePoolService;
|
private TestResourcePoolService testResourcePoolService;
|
||||||
private TestResourceService testResourceService;
|
private TestResourceService testResourceService;
|
||||||
private FileService fileService;
|
|
||||||
|
|
||||||
public AbstractEngine() {
|
public AbstractEngine() {
|
||||||
testResourcePoolService = CommonBeanFactory.getBean(TestResourcePoolService.class);
|
testResourcePoolService = CommonBeanFactory.getBean(TestResourcePoolService.class);
|
||||||
testResourceService = CommonBeanFactory.getBean(TestResourceService.class);
|
testResourceService = CommonBeanFactory.getBean(TestResourceService.class);
|
||||||
fileService = CommonBeanFactory.getBean(FileService.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -48,18 +39,6 @@ public abstract class AbstractEngine implements Engine {
|
||||||
}
|
}
|
||||||
this.loadTest = loadTest;
|
this.loadTest = loadTest;
|
||||||
|
|
||||||
final List<FileMetadata> fileMetadataList = fileService.getFileMetadataByTestId(loadTest.getId());
|
|
||||||
if (org.springframework.util.CollectionUtils.isEmpty(fileMetadataList)) {
|
|
||||||
MSException.throwException(Translator.get("run_load_test_file_not_found") + loadTest.getId());
|
|
||||||
}
|
|
||||||
jmxFile = fileMetadataList.stream().filter(f -> StringUtils.equalsIgnoreCase(f.getType(), FileType.JMX.name()))
|
|
||||||
.findFirst().orElseGet(() -> {
|
|
||||||
throw new RuntimeException(Translator.get("run_load_test_file_not_found") + loadTest.getId());
|
|
||||||
});
|
|
||||||
|
|
||||||
csvFiles = fileMetadataList.stream().filter(f -> StringUtils.equalsIgnoreCase(f.getType(), FileType.CSV.name())).collect(Collectors.toList());
|
|
||||||
|
|
||||||
|
|
||||||
this.loadTestService = CommonBeanFactory.getBean(LoadTestService.class);
|
this.loadTestService = CommonBeanFactory.getBean(LoadTestService.class);
|
||||||
|
|
||||||
threadNum = getThreadNum(loadTest);
|
threadNum = getThreadNum(loadTest);
|
||||||
|
|
|
@ -6,6 +6,7 @@ import io.metersphere.base.domain.FileContent;
|
||||||
import io.metersphere.base.domain.FileMetadata;
|
import io.metersphere.base.domain.FileMetadata;
|
||||||
import io.metersphere.base.domain.LoadTestWithBLOBs;
|
import io.metersphere.base.domain.LoadTestWithBLOBs;
|
||||||
import io.metersphere.base.domain.TestResourcePool;
|
import io.metersphere.base.domain.TestResourcePool;
|
||||||
|
import io.metersphere.commons.constants.FileType;
|
||||||
import io.metersphere.commons.constants.ResourcePoolTypeEnum;
|
import io.metersphere.commons.constants.ResourcePoolTypeEnum;
|
||||||
import io.metersphere.commons.exception.MSException;
|
import io.metersphere.commons.exception.MSException;
|
||||||
import io.metersphere.engine.docker.DockerTestEngine;
|
import io.metersphere.engine.docker.DockerTestEngine;
|
||||||
|
@ -24,6 +25,7 @@ import java.io.ByteArrayInputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class EngineFactory {
|
public class EngineFactory {
|
||||||
|
@ -52,8 +54,18 @@ public class EngineFactory {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EngineContext createContext(LoadTestWithBLOBs loadTest, FileMetadata fileMetadata, List<FileMetadata> csvFiles, long threadNum) throws Exception {
|
public static EngineContext createContext(LoadTestWithBLOBs loadTest, long threadNum) throws Exception {
|
||||||
final FileContent fileContent = fileService.getFileContent(fileMetadata.getId());
|
final List<FileMetadata> fileMetadataList = fileService.getFileMetadataByTestId(loadTest.getId());
|
||||||
|
if (org.springframework.util.CollectionUtils.isEmpty(fileMetadataList)) {
|
||||||
|
MSException.throwException(Translator.get("run_load_test_file_not_found") + loadTest.getId());
|
||||||
|
}
|
||||||
|
FileMetadata jmxFile = fileMetadataList.stream().filter(f -> StringUtils.equalsIgnoreCase(f.getType(), FileType.JMX.name()))
|
||||||
|
.findFirst().orElseGet(() -> {
|
||||||
|
throw new RuntimeException(Translator.get("run_load_test_file_not_found") + loadTest.getId());
|
||||||
|
});
|
||||||
|
|
||||||
|
List<FileMetadata> csvFiles = fileMetadataList.stream().filter(f -> StringUtils.equalsIgnoreCase(f.getType(), FileType.CSV.name())).collect(Collectors.toList());
|
||||||
|
final FileContent fileContent = fileService.getFileContent(jmxFile.getId());
|
||||||
if (fileContent == null) {
|
if (fileContent == null) {
|
||||||
MSException.throwException(Translator.get("run_load_test_file_content_not_found") + loadTest.getId());
|
MSException.throwException(Translator.get("run_load_test_file_content_not_found") + loadTest.getId());
|
||||||
}
|
}
|
||||||
|
@ -61,7 +73,7 @@ public class EngineFactory {
|
||||||
engineContext.setTestId(loadTest.getId());
|
engineContext.setTestId(loadTest.getId());
|
||||||
engineContext.setTestName(loadTest.getName());
|
engineContext.setTestName(loadTest.getName());
|
||||||
engineContext.setNamespace(loadTest.getProjectId());
|
engineContext.setNamespace(loadTest.getProjectId());
|
||||||
engineContext.setFileType(fileMetadata.getType());
|
engineContext.setFileType(jmxFile.getType());
|
||||||
engineContext.setThreadNum(threadNum);
|
engineContext.setThreadNum(threadNum);
|
||||||
engineContext.setResourcePoolId(loadTest.getTestResourcePoolId());
|
engineContext.setResourcePoolId(loadTest.getTestResourcePoolId());
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class DockerTestEngine extends AbstractEngine {
|
||||||
// todo 运行测试
|
// todo 运行测试
|
||||||
EngineContext context = null;
|
EngineContext context = null;
|
||||||
try {
|
try {
|
||||||
context = EngineFactory.createContext(loadTest, jmxFile, csvFiles, realThreadNum);
|
context = EngineFactory.createContext(loadTest, realThreadNum);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class KubernetesTestEngine extends AbstractEngine {
|
||||||
MSException.throwException("Insufficient resources");
|
MSException.throwException("Insufficient resources");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
EngineContext context = EngineFactory.createContext(loadTest, jmxFile, csvFiles, threadNum);
|
EngineContext context = EngineFactory.createContext(loadTest, threadNum);
|
||||||
runTest(context, clientCredential, 1);
|
runTest(context, clientCredential, 1);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtil.error(e);
|
LogUtil.error(e);
|
||||||
|
|
Loading…
Reference in New Issue