refactor: 使用k8s资源池
This commit is contained in:
parent
7377fd530b
commit
e32ff12d22
|
@ -373,6 +373,12 @@
|
||||||
<artifactId>httpclient</artifactId>
|
<artifactId>httpclient</artifactId>
|
||||||
<version>4.5.6</version>
|
<version>4.5.6</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- 反射工具包 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.oneandone.reflections8</groupId>
|
||||||
|
<artifactId>reflections8</artifactId>
|
||||||
|
<version>0.11.7</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -58,7 +58,8 @@ public abstract class AbstractEngine implements Engine {
|
||||||
if (resourcePool == null) {
|
if (resourcePool == null) {
|
||||||
MSException.throwException("Resource Pool is empty");
|
MSException.throwException("Resource Pool is empty");
|
||||||
}
|
}
|
||||||
if (!ResourcePoolTypeEnum.NODE.name().equals(resourcePool.getType())) {
|
if (!ResourcePoolTypeEnum.K8S.name().equals(resourcePool.getType())
|
||||||
|
&& !ResourcePoolTypeEnum.NODE.name().equals(resourcePool.getType())) {
|
||||||
MSException.throwException("Invalid Resource Pool type.");
|
MSException.throwException("Invalid Resource Pool type.");
|
||||||
}
|
}
|
||||||
this.resourceList = testResourceService.getResourcesByPoolId(resourcePool.getId());
|
this.resourceList = testResourceService.getResourcesByPoolId(resourcePool.getId());
|
||||||
|
|
|
@ -2,6 +2,7 @@ package io.metersphere.performance.engine;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import io.metersphere.Application;
|
||||||
import io.metersphere.base.domain.FileContent;
|
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;
|
||||||
|
@ -16,17 +17,17 @@ import io.metersphere.performance.engine.docker.DockerTestEngine;
|
||||||
import io.metersphere.performance.parse.EngineSourceParser;
|
import io.metersphere.performance.parse.EngineSourceParser;
|
||||||
import io.metersphere.performance.parse.EngineSourceParserFactory;
|
import io.metersphere.performance.parse.EngineSourceParserFactory;
|
||||||
import io.metersphere.service.FileService;
|
import io.metersphere.service.FileService;
|
||||||
|
import io.metersphere.service.KubernetesTestEngine;
|
||||||
import io.metersphere.service.TestResourcePoolService;
|
import io.metersphere.service.TestResourcePoolService;
|
||||||
|
import org.apache.commons.beanutils.ConstructorUtils;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.reflections8.Reflections;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@ -34,6 +35,17 @@ public class EngineFactory {
|
||||||
private static FileService fileService;
|
private static FileService fileService;
|
||||||
private static TestResourcePoolService testResourcePoolService;
|
private static TestResourcePoolService testResourcePoolService;
|
||||||
private static KafkaProperties kafkaProperties;
|
private static KafkaProperties kafkaProperties;
|
||||||
|
private static Class<? extends KubernetesTestEngine> kubernetesTestEngineClass;
|
||||||
|
|
||||||
|
static {
|
||||||
|
Reflections reflections = new Reflections(Application.class.getPackage().getName());
|
||||||
|
Set<Class<? extends KubernetesTestEngine>> implClass = reflections.getSubTypesOf(KubernetesTestEngine.class);
|
||||||
|
for (Class<? extends KubernetesTestEngine> aClass : implClass) {
|
||||||
|
kubernetesTestEngineClass = aClass;
|
||||||
|
// 第一个
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static Engine createEngine(LoadTestWithBLOBs loadTest) {
|
public static Engine createEngine(LoadTestWithBLOBs loadTest) {
|
||||||
String resourcePoolId = loadTest.getTestResourcePoolId();
|
String resourcePoolId = loadTest.getTestResourcePoolId();
|
||||||
|
@ -51,6 +63,14 @@ public class EngineFactory {
|
||||||
if (type == ResourcePoolTypeEnum.NODE) {
|
if (type == ResourcePoolTypeEnum.NODE) {
|
||||||
return new DockerTestEngine(loadTest);
|
return new DockerTestEngine(loadTest);
|
||||||
}
|
}
|
||||||
|
if (type == ResourcePoolTypeEnum.K8S) {
|
||||||
|
try {
|
||||||
|
return ConstructorUtils.invokeConstructor(kubernetesTestEngineClass, loadTest);
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtil.error(e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package io.metersphere.service;
|
||||||
|
|
||||||
|
import io.metersphere.performance.engine.Engine;
|
||||||
|
|
||||||
|
public interface KubernetesTestEngine extends Engine {
|
||||||
|
}
|
|
@ -1 +1 @@
|
||||||
Subproject commit acb5adf44cf5f4a3b512abbff1e437957a9fcfb5
|
Subproject commit 61397c16728a63493507679f7e0940d9099f337f
|
Loading…
Reference in New Issue