aboutsummaryrefslogtreecommitdiffstats
path: root/vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java
diff options
context:
space:
mode:
Diffstat (limited to 'vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java')
-rw-r--r--vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java91
1 files changed, 66 insertions, 25 deletions
diff --git a/vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java b/vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java
index 29f6eae7c..65ef3679c 100644
--- a/vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java
+++ b/vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java
@@ -1,30 +1,36 @@
package vid.automation.test.services;
-import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
-import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
+import static org.testng.Assert.assertEquals;
+import static vid.automation.test.services.DropTestApiField.dropFieldCloudOwnerFromString;
+import static vid.automation.test.services.DropTestApiField.dropTestApiFieldFromString;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import org.glassfish.jersey.client.ClientProperties;
-import org.glassfish.jersey.uri.internal.JerseyUriBuilder;
-import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset;
-import org.onap.simulator.presetGenerator.presets.model.RegistrationRequest;
-import org.springframework.http.HttpStatus;
-import vid.automation.test.utils.ReadFile;
-
+import java.net.URI;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.function.UnaryOperator;
+import java.util.stream.Collectors;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import java.net.URI;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.function.UnaryOperator;
-
-import static org.testng.Assert.assertEquals;
-import static vid.automation.test.services.DropTestApiField.dropTestApiFieldFromString;
+import org.glassfish.jersey.client.ClientProperties;
+import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider;
+import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;
+import org.glassfish.jersey.uri.internal.JerseyUriBuilder;
+import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset;
+import org.onap.simulator.presetGenerator.presets.model.RegistrationRequest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpStatus;
+import vid.automation.test.utils.ReadFile;
public class SimulatorApi {
@@ -32,15 +38,31 @@ public class SimulatorApi {
APPEND, CLEAR_THEN_SET
}
+ private static final Logger logger = LoggerFactory.getLogger(SimulatorApi.class);
+
+ /*
+ these classes are partial representation of org.mockserver.model.HttpRequest.
+ We can not use HttpRequest since it contains Map with NottableString and jackson throw the following error :
+ com.fasterxml.jackson.databind.JsonMappingException: Can not find a (Map) Key deserializer for type
+ [simple type, class org.mockserver.model.NottableString]
+ */
+ public static class Path {
+ public String value;
+ }
+
+ public static class HttpRequest{
+ public Path path;
+ }
+
private static final URI uri; //uri for registration
private static final URI simulationUri; //uri for getting simulated responses
private static final Client client;
private static final List<UnaryOperator<String>> presetStringPostProccessors =
- ImmutableList.of(dropTestApiFieldFromString());
+ ImmutableList.of(dropTestApiFieldFromString(), dropFieldCloudOwnerFromString());
static {
- String host = System.getProperty("VID_HOST", "127.0.0.1" );
+ String host = System.getProperty("VID_HOST", "10.0.0.10" );
Integer port = Integer.valueOf(System.getProperty("SIM_PORT", System.getProperty("VID_PORT", "8080"))); //port for registration
uri = new JerseyUriBuilder().host(host).port(port).scheme("http").path("vidSimulator").build();
client = ClientBuilder.newClient();
@@ -49,6 +71,7 @@ public class SimulatorApi {
// org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException:
// MessageBodyWriter not found for media type=application/json
JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider();
+ jacksonJsonProvider.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
client.register(jacksonJsonProvider);
Integer simulationPort = Integer.valueOf(System.getProperty("SIMULATION_PORT", "1080")); //port getting simulated responses
@@ -84,13 +107,13 @@ public class SimulatorApi {
content = content.replaceAll(templateParam.getKey(), templateParam.getValue().toString());
}
- registerToSimulatorAndAssertSuccess(content, registrationStrategy);
+ registerToSimulatorAndAssertSuccess(expectationTemplateFilename, content, registrationStrategy);
}
public static void registerExpectationFromPreset(BasePreset preset, RegistrationStrategy registrationStrategy) {
RegistrationRequest content = preset.generateScenario();
- registerToSimulatorAndAssertSuccess(content, registrationStrategy);
+ registerToSimulatorAndAssertSuccess(preset.getClass().getCanonicalName(), content, registrationStrategy);
}
public static void registerExpectationFromPresets(Collection<BasePreset> presets, RegistrationStrategy registrationStrategy) {
@@ -99,7 +122,7 @@ public class SimulatorApi {
}
presets.forEach(
preset-> {
- try {registerToSimulatorAndAssertSuccess(preset.generateScenario());}
+ try {registerToSimulatorAndAssertSuccess(preset.getClass().getCanonicalName(), preset.generateScenario());}
catch (RuntimeException e) {
throw new RuntimeException("Failed to register preset "+preset.getClass().getName(), e);
}
@@ -107,14 +130,31 @@ public class SimulatorApi {
);
}
- private static void registerToSimulatorAndAssertSuccess(Object content, RegistrationStrategy registrationStrategy) {
+// public static List<HttpRequest> retrieveRecordedRequests() {
+// Response response = client.target(uri).path("retrieveRecordedRequests").request().get();
+// return response.readEntity(new GenericType<List<HttpRequest>>(){});
+// }
+
+ /*
+ This method return counter of requests that has been sent to simulator.
+ The key of the map is a path, and the value is counter
+ */
+ public static Map<String, Long> retrieveRecordedRequestsPathCounter() {
+ Response response = client.target(uri).path("retrieveRecordedRequests").request().get();
+ List<HttpRequest> httpRequests = response.readEntity(new GenericType<List<HttpRequest>>(){});
+ return httpRequests.stream().map(x->x.path.value).collect(
+ Collectors.groupingBy(Function.identity(), Collectors.counting()));
+ }
+
+ private static void registerToSimulatorAndAssertSuccess(String name, Object content, RegistrationStrategy registrationStrategy) {
if (registrationStrategy == RegistrationStrategy.CLEAR_THEN_SET) {
clearRegistrations();
}
- registerToSimulatorAndAssertSuccess(content);
+ registerToSimulatorAndAssertSuccess(name, content);
}
- private static void registerToSimulatorAndAssertSuccess(Object content) {
+ private static void registerToSimulatorAndAssertSuccess(String name, Object content) {
+ logger.info("Setting {}", name);
content = postProccessContent(content);
@@ -137,6 +177,7 @@ public class SimulatorApi {
}
private static void clearRegistrations() {
+ logger.info("Clearing Registrations");
Response response = createSimulatorRegistrationWebTarget().request().delete();
assertEquals(response.getStatus(), HttpStatus.OK.value());
}