diff options
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.java | 91 |
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()); } |