import java.io.IOException;
import java.text.SimpleDateFormat;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-import java.util.TimeZone;
-import java.util.UUID;
+import java.util.*;
+import com.google.gson.*;
import org.apache.http.HttpStatus;
import org.onap.vtp.error.VTPError;
import org.onap.vtp.error.VTPError.VTPException;
+import org.onap.vtp.manager.DistManager;
+import org.onap.vtp.manager.model.Tester;
import org.open.infc.grpc.Output;
import org.open.infc.grpc.Result;
import org.open.infc.grpc.client.OpenInterfaceGrpcClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+
public class VTPResource {
protected static final Logger LOG = LoggerFactory.getLogger(VTPResource.class);
protected static int VTP_EXECUTION_GRPC_TIMEOUT; // NOSONAR
protected static String VTP_YAML_STORE; // NOSONAR
protected static String VTP_SCRIPT_STORE; // NOSONAR
-
+ public static boolean mode=false;
protected static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.US); // NOSONAR
-
+ DistManager distManager = null;
+ Tester tester = null;
static {
dateFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
VTP_EXECUTION_GRPC_TIMEOUT = Integer.parseInt(prp.getProperty("vtp.grpc.timeout")) * 1000 ;
VTP_YAML_STORE = prp.getProperty("vtp.yaml.store");
VTP_SCRIPT_STORE = prp.getProperty("vtp.script.store");
+ if (prp.getProperty("vtp.execution.mode").equals("dist"))
+ mode=true;
} catch (Exception e) { // NOSONAR
LOG.error(e.getMessage());
}
}
protected Result makeRpc(List <String> args, int timeout) throws VTPException {
+ String executionId=args.get(4);
+ if(isDistMode() && (executionId.contains("-") || args.contains("schema-show"))) {
+ distManager =new DistManager();
+
+ if (executionId.contains("-")){
+ tester = distManager.httpRequestExecutions(executionId);
+ }
+ else {
+ String scenario=args.get(4);
+ String testSuiteName=args.get(6);
+ String testCaseName=args.get(8);
+ tester = distManager.httpRequestTestcase(testSuiteName,scenario,testCaseName);
+ }
+
+ VTP_TEST_CENTER_IP = tester.getIp();
+ VTP_TEST_CENTER_PORT = tester.getPort();
+
+ }
Result result = null;
String requestId = UUID.randomUUID().toString();
try {
return jsonParser.parse(result.getOutput());
}
- protected Output makeRpc(String scenario, String requestId, String profile, String testCase, JsonElement argsJsonNode) throws VTPException {
- return this.makeRpc(scenario, requestId, profile, testCase, argsJsonNode, VTP_EXECUTION_GRPC_TIMEOUT);
+ protected Output makeRpc(String testSuite,String scenario, String requestId, String profile, String testCase, JsonElement argsJsonNode) throws VTPException {
+ return this.makeRpc(testSuite,scenario, requestId, profile, testCase, argsJsonNode, VTP_EXECUTION_GRPC_TIMEOUT);
}
- protected Output makeRpc(String scenario, String requestId, String profile, String testCase, JsonElement argsJsonNode, int timeout) throws VTPException {
+ protected Output makeRpc(String testSuite,String scenario, String requestId, String profile, String testCase, JsonElement argsJsonNode, int timeout) throws VTPException {
+ if (isDistMode()){
+ distManager =new DistManager();
+ tester = distManager.httpRequestTestcase(testSuite,scenario,testCase);
+ VTP_TEST_CENTER_IP =tester.getIp();
+ VTP_TEST_CENTER_PORT = tester.getPort();
+ }
Output output = null;
Map <String, String> args = gson.fromJson(argsJsonNode, new TypeToken<Map<String,String>>(){}.getType());
try {
throw new VTPException(
new VTPError().setMessage(e.getMessage()));
}
-
+ if (isDistMode())
+ {
+ String executionId= output.getAddonsMap().get("execution-id");
+ assert distManager != null;
+ distManager.postDataToManager(executionId,tester.getId(),tester.getTesterId());
+ }
return output;
}
dumperOptions.setPrettyFlow(false);
return new Yaml(dumperOptions);
}
+ public boolean isDistMode() {
+ return mode;
+ }
+ protected JsonElement makeRpcAndGetJson(List<String> args,int count,int index) throws VTPException, IOException {
+ return this.makeRpcAndGetJson(args,count,index, VTP_EXECUTION_GRPC_TIMEOUT);
+ }
+
+ protected JsonElement makeRpcAndGetJson(List<String> args,int count,int index, int timeout) throws VTPException {
+ List<String> result = this.makeRpc(args,count,index, timeout);
+ JsonArray jsonArray = new JsonArray();
+ for (String jsonString : result) {
+ JsonElement obj = new JsonParser().parse(jsonString);
+ jsonArray.add(obj);
+ }
+ return jsonArray;
+ }
+
+ protected List<String> makeRpc(List<String> args, int count, int index, int timeout) {
+ distManager = new DistManager();
+ JsonElement jsonElement = distManager.getExecutionJson(count, index);
+ List<String> resultList = new ArrayList<>();
+ if (jsonElement != null && jsonElement.isJsonArray() && jsonElement.getAsJsonArray().size() > 0) {
+ JsonArray resultsArray = jsonElement.getAsJsonArray();
+ Client client = ClientBuilder.newClient();
+ for (JsonElement jElement : resultsArray) {
+ JsonObject jsonObject = jElement.getAsJsonObject();
+ String testerId = null;
+ String executionId = null;
+ if (jsonObject.has("tester_id"))
+ testerId = jsonObject.get("tester_id").getAsString();
+ if (jsonObject.has("execution_id"))
+ executionId = jsonObject.get("execution_id").getAsString();
+ if (testerId == null || executionId == null)
+ throw new IllegalArgumentException("testerId: " + testerId + " and " + " executionId: " + executionId + " should not be null");
+
+ String testerPath = "/manager/tester/" + testerId;
+ JsonObject jObject = distManager.getResponseFromTester(client, distManager.getManagerURL(), testerPath).getAsJsonObject();
+ String vtpTestCenterIp = jObject.get("iP").getAsString();
+ int vtpTestCenterPort = Integer.parseInt(jObject.get("port").getAsString());
+ args.set(4, executionId);
+ try {
+ resultList.add(distManager.getExecutionDetails(vtpTestCenterIp, vtpTestCenterPort, args, timeout).getOutput());
+ } catch (Exception e) {
+ LOG.error("executionId : " + executionId + " not valid::: " + e.getMessage());
+ }
+ }
+ }
+ return resultList;
+ }
}