From 46c1a40e6cb283f7d42270b877401d584d168494 Mon Sep 17 00:00:00 2001 From: Geora Barsky Date: Fri, 22 Sep 2017 12:47:03 -0400 Subject: Sniro Emulator - Move to different location Change location of sniro emulator project from intgration/test/mock to integration/test/mocks/sniroemulator Change-Id: I808525d0d8ec23e785a5f06b7ba43a003a00d6fc JIRA-ID: INT-215 Signed-off-by: Geora Barsky --- test/mock/pom.xml | 142 --------------------- test/mock/src/main/docker/Dockerfile | 19 --- test/mock/src/main/docker/docker-entrypoint.sh | 5 - .../integration/test/mock/MockApplication.java | 122 ------------------ .../test/mock/extension/WebhookDefinition.java | 101 --------------- .../integration/test/mock/extension/Webhooks.java | 100 --------------- .../mock/src/main/resources/application.properties | 1 - .../test/mock/MockApplicationTests.java | 16 --- test/mocks/sniroemulator/pom.xml | 142 +++++++++++++++++++++ .../mocks/sniroemulator/src/main/docker/Dockerfile | 19 +++ .../src/main/docker/docker-entrypoint.sh | 5 + .../test/mocks/sniroemulator/MockApplication.java | 122 ++++++++++++++++++ .../sniroemulator/extension/WebhookDefinition.java | 101 +++++++++++++++ .../mocks/sniroemulator/extension/Webhooks.java | 100 +++++++++++++++ .../src/main/resources/application.properties | 1 + .../mocks/sniroemulator/MockApplicationTests.java | 16 +++ 16 files changed, 506 insertions(+), 506 deletions(-) delete mode 100644 test/mock/pom.xml delete mode 100644 test/mock/src/main/docker/Dockerfile delete mode 100644 test/mock/src/main/docker/docker-entrypoint.sh delete mode 100644 test/mock/src/main/java/org/onap/integration/test/mock/MockApplication.java delete mode 100644 test/mock/src/main/java/org/onap/integration/test/mock/extension/WebhookDefinition.java delete mode 100644 test/mock/src/main/java/org/onap/integration/test/mock/extension/Webhooks.java delete mode 100644 test/mock/src/main/resources/application.properties delete mode 100644 test/mock/src/test/java/org/onap/integration/test/mock/MockApplicationTests.java create mode 100644 test/mocks/sniroemulator/pom.xml create mode 100644 test/mocks/sniroemulator/src/main/docker/Dockerfile create mode 100644 test/mocks/sniroemulator/src/main/docker/docker-entrypoint.sh create mode 100644 test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/MockApplication.java create mode 100644 test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/extension/WebhookDefinition.java create mode 100644 test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/extension/Webhooks.java create mode 100644 test/mocks/sniroemulator/src/main/resources/application.properties create mode 100644 test/mocks/sniroemulator/src/test/java/org/onap/integration/test/mocks/sniroemulator/MockApplicationTests.java diff --git a/test/mock/pom.xml b/test/mock/pom.xml deleted file mode 100644 index 56aad78f2..000000000 --- a/test/mock/pom.xml +++ /dev/null @@ -1,142 +0,0 @@ - - - 4.0.0 - org.onap.integration - mock - 1.0-SNAPSHOT - mock - onap emulator project based on Spring Boot - - - org.springframework.boot - spring-boot-starter-parent - 1.5.7.RELEASE - - - - - UTF-8 - UTF-8 - 1.8 - 2.8.9 - 9.2.22.v20170606 - - - - - org.springframework.boot - spring-boot-starter - - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.cloud - spring-cloud-contract-wiremock - 1.1.3.RELEASE - compile - - - net.sf.jopt-simple - jopt-simple - 5.0.3 - - - org.eclipse.jetty - jetty-server - 9.2.22.v20170606 - - - org.eclipse.jetty - jetty-servlet - 9.2.22.v20170606 - - - org.eclipse.jetty - jetty-servlets - 9.2.22.v20170606 - - - org.eclipse.jetty - jetty-webapp - 9.2.22.v20170606 - - - com.google.guava - guava - 20.0 - - - com.fasterxml.jackson.core - jackson-core - ${versions.jackson} - - - com.fasterxml.jackson.core - jackson-annotations - ${versions.jackson} - - - com.fasterxml.jackson.core - jackson-databind - ${versions.jackson} - - - org.apache.httpcomponents - httpclient - - - org.xmlunit - xmlunit-core - 2.3.0 - - - org.xmlunit - xmlunit-legacy - 2.3.0 - - - com.jayway.jsonpath - json-path - 2.4.0 - - - org.slf4j - slf4j-api - 1.7.12 - - - org.apache.commons - commons-lang3 - 3.6 - - - com.flipkart.zjsonpatch - zjsonpatch - 0.3.0 - - - com.github.jknack - handlebars - 4.0.6 - - - - - ${project.artifactId} - - - org.springframework.boot - spring-boot-maven-plugin - - - maven-dependency-plugin - - - - diff --git a/test/mock/src/main/docker/Dockerfile b/test/mock/src/main/docker/Dockerfile deleted file mode 100644 index b1bf4d93c..000000000 --- a/test/mock/src/main/docker/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -FROM openjdk:8-jre - -MAINTAINER Geora Barsky - -RUN mkdir -p /var/wiremock/lib/ - -ADD mock.jar /var/wiremock/lib/app.jar - -WORKDIR /home/wiremock - -COPY docker-entrypoint.sh / -RUN chmod 700 /docker-entrypoint.sh - -VOLUME /home/wiremock -EXPOSE 8080 8081 9999 - -ENTRYPOINT ["/docker-entrypoint.sh"] - -CMD ["java", "-jar","/var/wiremock/lib/app.jar"] \ No newline at end of file diff --git a/test/mock/src/main/docker/docker-entrypoint.sh b/test/mock/src/main/docker/docker-entrypoint.sh deleted file mode 100644 index 47364a270..000000000 --- a/test/mock/src/main/docker/docker-entrypoint.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -touch /app.jar - -java -Xms1024m -Xmx1024m -jar /var/wiremock/lib/app.jar \ No newline at end of file diff --git a/test/mock/src/main/java/org/onap/integration/test/mock/MockApplication.java b/test/mock/src/main/java/org/onap/integration/test/mock/MockApplication.java deleted file mode 100644 index 115cb252a..000000000 --- a/test/mock/src/main/java/org/onap/integration/test/mock/MockApplication.java +++ /dev/null @@ -1,122 +0,0 @@ -package org.onap.integration.test.mock; - -import static com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder.responseDefinition; -import static com.github.tomakehurst.wiremock.client.WireMock.anyUrl; -import static com.github.tomakehurst.wiremock.core.WireMockApp.FILES_ROOT; -import static com.github.tomakehurst.wiremock.core.WireMockApp.MAPPINGS_ROOT; -import static com.github.tomakehurst.wiremock.http.RequestMethod.ANY; -import static com.github.tomakehurst.wiremock.matching.RequestPatternBuilder.newRequestPattern; -import static java.lang.System.out; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -import com.github.tomakehurst.wiremock.WireMockServer; -import com.github.tomakehurst.wiremock.common.ConsoleNotifier; -import com.github.tomakehurst.wiremock.common.FatalStartupException; -import com.github.tomakehurst.wiremock.common.FileSource; -import com.github.tomakehurst.wiremock.core.WireMockConfiguration; -import com.github.tomakehurst.wiremock.http.ResponseDefinition; -import com.github.tomakehurst.wiremock.matching.RequestPattern; -import com.github.tomakehurst.wiremock.standalone.MappingsLoader; -import com.github.tomakehurst.wiremock.stubbing.StubMapping; -import com.github.tomakehurst.wiremock.stubbing.StubMappings; - -@SpringBootApplication -public class MockApplication { - - - private static final String BANNER= " \n" + -" ******** **** **** ## \n" + -" **######** ###* *### ## \n" + -" *##******##* ##*** ***## ##\n" + -" **#* *#** ##*#* *#*## ## \n" + -" *#* *#* ##****** ******* ##****** ##*#* *#*## ******* ****** ## *** \n" + -" *#* *#* ##*####* *######* ##*####** ##*#* *#*## **#####** **####** ## *#** \n" + -" *#* *#* ##****#* *#****#* ##** **#* ## *** *** ## *#** **#* *#****#* ## **#** \n" + -" *# #* ##* *#* #* ##* *#* ## *#* *#* ## *#* *#* *#* *#* ##**#** \n" + -" *#* *#* ##* ## ****## ##* *#* ## *#* *#* ## *#* *#* *#* ##*##* \n" + -" *#* *#* ## ## **###### ## #* ## *#* *#* ## *# #* *# ##**#** \n" + -" *#* *#* ## ## *#****## ##* *#* ## *#*#* ## *#* *#* *#* ##**##* \n" + -" **#* *#** ## ## *#* *## ##* *#* ## *#*#* ## *#* *#* *#* *#* ## *#** \n" + -" *##******##* ## ## *#* **##* ##** **#* ## *#*#* ## *#** **#* *#****#* ## **#* \n" + -" **######** ## ## *#######* ##*####* ## *###* ## **#####** **####** ## *#** \n" + -" ******** ## ## *******#* ##****** ## *#* ## ******* ****** ## *#* \n" + -" ## \n" + -" ## \n" + -" ## \n" + -" ** \n" ; - - static { - System.setProperty("org.mortbay.log.class", "com.github.tomakehurst.wiremock.jetty.LoggerAdapter"); - } - - private WireMockServer wireMockServer; - - public static void main(String[] args) { - SpringApplication.run(MockApplication.class, args); - //new WireMockServerRunner().run("--port 9999"); - new MockApplication().run(args); - } - - public void run(String... args) { - - WireMockConfiguration options = WireMockConfiguration.options(); - options.port(9999); - FileSource fileSource = options.filesRoot(); - fileSource.createIfNecessary(); - FileSource filesFileSource = fileSource.child(FILES_ROOT); - filesFileSource.createIfNecessary(); - FileSource mappingsFileSource = fileSource.child(MAPPINGS_ROOT); - mappingsFileSource.createIfNecessary(); - - // Register extension - options.extensions("org.onap.integration.test.mock.extension.Webhooks"); - // Register notifier - options.notifier(new ConsoleNotifier(true)); - wireMockServer = new WireMockServer(options); - - wireMockServer.enableRecordMappings(mappingsFileSource, filesFileSource); - - //if (options.specifiesProxyUrl()) { - // addProxyMapping(options.proxyUrl()); - //} - - try { - wireMockServer.start(); - out.println(BANNER); - out.println(); - out.println(options); - } catch (FatalStartupException e) { - System.err.println(e.getMessage()); - System.exit(1); - } - } - - private void addProxyMapping(final String baseUrl) { - wireMockServer.loadMappingsUsing(new MappingsLoader() { - @Override - public void loadMappingsInto(StubMappings stubMappings) { - RequestPattern requestPattern = newRequestPattern(ANY, anyUrl()).build(); - ResponseDefinition responseDef = responseDefinition() - .proxiedFrom(baseUrl) - .build(); - - StubMapping proxyBasedMapping = new StubMapping(requestPattern, responseDef); - proxyBasedMapping.setPriority(10); // Make it low priority so that existing stubs will take precedence - stubMappings.addMapping(proxyBasedMapping); - } - }); - } - - public void stop() { - wireMockServer.stop(); - } - - public boolean isRunning() { - return wireMockServer.isRunning(); - } - - public int port() { return wireMockServer.port(); } - -} diff --git a/test/mock/src/main/java/org/onap/integration/test/mock/extension/WebhookDefinition.java b/test/mock/src/main/java/org/onap/integration/test/mock/extension/WebhookDefinition.java deleted file mode 100644 index dff99fd41..000000000 --- a/test/mock/src/main/java/org/onap/integration/test/mock/extension/WebhookDefinition.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.onap.integration.test.mock.extension; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.github.tomakehurst.wiremock.http.Body; -import com.github.tomakehurst.wiremock.http.HttpHeader; -import com.github.tomakehurst.wiremock.http.HttpHeaders; -import com.github.tomakehurst.wiremock.http.RequestMethod; - -import java.net.URI; -import java.util.List; - -import static com.google.common.collect.Lists.newArrayList; - -public class WebhookDefinition { - - private RequestMethod method; - private URI url; - private List headers; - private Body body = Body.none(); - - @JsonCreator - public WebhookDefinition(@JsonProperty("method") RequestMethod method, - @JsonProperty("url") URI url, - @JsonProperty("headers") HttpHeaders headers, - @JsonProperty("body") String body, - @JsonProperty("base64Body") String base64Body) { - this.method = method; - this.url = url; - this.headers = newArrayList(headers.all()); - this.body = Body.fromOneOf(null, body, null, base64Body); - } - - public WebhookDefinition() { - } - - public RequestMethod getMethod() { - return method; - } - - public URI getUrl() { - return url; - } - - public HttpHeaders getHeaders() { - return new HttpHeaders(headers); - } - - public String getBase64Body() { - return body.isBinary() ? body.asBase64() : null; - } - - public String getBody() { - return body.isBinary() ? null : body.asString(); - } - - @JsonIgnore - public byte[] getBinaryBody() { - return body.asBytes(); - } - - public WebhookDefinition withMethod(RequestMethod method) { - this.method = method; - return this; - } - - public WebhookDefinition withUrl(URI url) { - this.url = url; - return this; - } - - public WebhookDefinition withUrl(String url) { - withUrl(URI.create(url)); - return this; - } - - public WebhookDefinition withHeaders(List headers) { - this.headers = headers; - return this; - } - - public WebhookDefinition withHeader(String key, String... values) { - if (headers == null) { - headers = newArrayList(); - } - - headers.add(new HttpHeader(key, values)); - return this; - } - - public WebhookDefinition withBody(String body) { - this.body = new Body(body); - return this; - } - - public WebhookDefinition withBinaryBody(byte[] body) { - this.body = new Body(body); - return this; - } -} diff --git a/test/mock/src/main/java/org/onap/integration/test/mock/extension/Webhooks.java b/test/mock/src/main/java/org/onap/integration/test/mock/extension/Webhooks.java deleted file mode 100644 index cb17ba658..000000000 --- a/test/mock/src/main/java/org/onap/integration/test/mock/extension/Webhooks.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.onap.integration.test.mock.extension; - -import com.github.tomakehurst.wiremock.common.Notifier; -import com.github.tomakehurst.wiremock.core.Admin; -import com.github.tomakehurst.wiremock.extension.Parameters; -import com.github.tomakehurst.wiremock.extension.PostServeAction; -import com.github.tomakehurst.wiremock.http.HttpClientFactory; -import com.github.tomakehurst.wiremock.http.HttpHeader; -import com.github.tomakehurst.wiremock.stubbing.ServeEvent; -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; -import org.apache.http.client.methods.HttpUriRequest; -import org.apache.http.entity.ByteArrayEntity; -import org.apache.http.util.EntityUtils; - -import java.io.IOException; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; - -import static com.github.tomakehurst.wiremock.common.Exceptions.throwUnchecked; -import static com.github.tomakehurst.wiremock.common.LocalNotifier.notifier; -import static com.github.tomakehurst.wiremock.http.HttpClientFactory.getHttpRequestFor; -import static java.util.concurrent.TimeUnit.SECONDS; - -public class Webhooks extends PostServeAction { - - private final ScheduledExecutorService scheduler; - private final HttpClient httpClient; - - public Webhooks() { - scheduler = Executors.newScheduledThreadPool(10); - httpClient = HttpClientFactory.createClient(); - } - - @Override - public String getName() { - return "webhook"; - } - - @Override - public void doAction(ServeEvent serveEvent, Admin admin, Parameters parameters) { - final WebhookDefinition definition = parameters.as(WebhookDefinition.class); - final Notifier notifier = notifier(); - - scheduler.schedule( - new Runnable() { - @Override - public void run() { - HttpUriRequest request = buildRequest(definition); - - try { - HttpResponse response = httpClient.execute(request); - notifier.info( - String.format("Webhook %s request to %s returned status %s\n\n%s", - definition.getMethod(), - definition.getUrl(), - response.getStatusLine(), - EntityUtils.toString(response.getEntity()) - ) - ); - System.out.println(String.format("Webhook %s request to %s returned status %s\n\n%s", - definition.getMethod(), - definition.getUrl(), - response.getStatusLine(), - EntityUtils.toString(response.getEntity()) - ) - ); - } catch (IOException e) { - throwUnchecked(e); - } - } - }, - 0L, - SECONDS - ); - } - - private static HttpUriRequest buildRequest(WebhookDefinition definition) { - HttpUriRequest request = getHttpRequestFor( - definition.getMethod(), - definition.getUrl().toString() - ); - - for (HttpHeader header: definition.getHeaders().all()) { - request.addHeader(header.key(), header.firstValue()); - } - - if (definition.getMethod().hasEntity()) { - HttpEntityEnclosingRequestBase entityRequest = (HttpEntityEnclosingRequestBase) request; - entityRequest.setEntity(new ByteArrayEntity(definition.getBinaryBody())); - } - - return request; - } - - public static WebhookDefinition webhook() { - return new WebhookDefinition(); - } -} diff --git a/test/mock/src/main/resources/application.properties b/test/mock/src/main/resources/application.properties deleted file mode 100644 index 51ad5ebf4..000000000 --- a/test/mock/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -server.port=9090 diff --git a/test/mock/src/test/java/org/onap/integration/test/mock/MockApplicationTests.java b/test/mock/src/test/java/org/onap/integration/test/mock/MockApplicationTests.java deleted file mode 100644 index 8d2a04625..000000000 --- a/test/mock/src/test/java/org/onap/integration/test/mock/MockApplicationTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.onap.integration.test.mock; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class MockApplicationTests { - - @Test - public void contextLoads() { - } - -} diff --git a/test/mocks/sniroemulator/pom.xml b/test/mocks/sniroemulator/pom.xml new file mode 100644 index 000000000..7faff9356 --- /dev/null +++ b/test/mocks/sniroemulator/pom.xml @@ -0,0 +1,142 @@ + + + 4.0.0 + org.onap.integration + sniroemulator + 1.0-SNAPSHOT + sniroemulator + onap sniro emulator project based on Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.7.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + 2.8.9 + 9.2.22.v20170606 + + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.cloud + spring-cloud-contract-wiremock + 1.1.3.RELEASE + compile + + + net.sf.jopt-simple + jopt-simple + 5.0.3 + + + org.eclipse.jetty + jetty-server + 9.2.22.v20170606 + + + org.eclipse.jetty + jetty-servlet + 9.2.22.v20170606 + + + org.eclipse.jetty + jetty-servlets + 9.2.22.v20170606 + + + org.eclipse.jetty + jetty-webapp + 9.2.22.v20170606 + + + com.google.guava + guava + 20.0 + + + com.fasterxml.jackson.core + jackson-core + ${versions.jackson} + + + com.fasterxml.jackson.core + jackson-annotations + ${versions.jackson} + + + com.fasterxml.jackson.core + jackson-databind + ${versions.jackson} + + + org.apache.httpcomponents + httpclient + + + org.xmlunit + xmlunit-core + 2.3.0 + + + org.xmlunit + xmlunit-legacy + 2.3.0 + + + com.jayway.jsonpath + json-path + 2.4.0 + + + org.slf4j + slf4j-api + 1.7.12 + + + org.apache.commons + commons-lang3 + 3.6 + + + com.flipkart.zjsonpatch + zjsonpatch + 0.3.0 + + + com.github.jknack + handlebars + 4.0.6 + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + maven-dependency-plugin + + + + diff --git a/test/mocks/sniroemulator/src/main/docker/Dockerfile b/test/mocks/sniroemulator/src/main/docker/Dockerfile new file mode 100644 index 000000000..05f3a5a2b --- /dev/null +++ b/test/mocks/sniroemulator/src/main/docker/Dockerfile @@ -0,0 +1,19 @@ +FROM openjdk:8-jre + +MAINTAINER Geora Barsky + +RUN mkdir -p /var/wiremock/lib/ + +ADD sniroemulator.jar /var/wiremock/lib/app.jar + +WORKDIR /home/wiremock + +COPY docker-entrypoint.sh / +RUN chmod 700 /docker-entrypoint.sh + +VOLUME /home/wiremock +EXPOSE 8080 8081 9999 + +ENTRYPOINT ["/docker-entrypoint.sh"] + +CMD ["java", "-jar","/var/wiremock/lib/app.jar"] \ No newline at end of file diff --git a/test/mocks/sniroemulator/src/main/docker/docker-entrypoint.sh b/test/mocks/sniroemulator/src/main/docker/docker-entrypoint.sh new file mode 100644 index 000000000..47364a270 --- /dev/null +++ b/test/mocks/sniroemulator/src/main/docker/docker-entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +touch /app.jar + +java -Xms1024m -Xmx1024m -jar /var/wiremock/lib/app.jar \ No newline at end of file diff --git a/test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/MockApplication.java b/test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/MockApplication.java new file mode 100644 index 000000000..5e47c7ca0 --- /dev/null +++ b/test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/MockApplication.java @@ -0,0 +1,122 @@ +package org.onap.integration.test.mocks.sniroemulator; + +import static com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder.responseDefinition; +import static com.github.tomakehurst.wiremock.client.WireMock.anyUrl; +import static com.github.tomakehurst.wiremock.core.WireMockApp.FILES_ROOT; +import static com.github.tomakehurst.wiremock.core.WireMockApp.MAPPINGS_ROOT; +import static com.github.tomakehurst.wiremock.http.RequestMethod.ANY; +import static com.github.tomakehurst.wiremock.matching.RequestPatternBuilder.newRequestPattern; +import static java.lang.System.out; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.common.ConsoleNotifier; +import com.github.tomakehurst.wiremock.common.FatalStartupException; +import com.github.tomakehurst.wiremock.common.FileSource; +import com.github.tomakehurst.wiremock.core.WireMockConfiguration; +import com.github.tomakehurst.wiremock.http.ResponseDefinition; +import com.github.tomakehurst.wiremock.matching.RequestPattern; +import com.github.tomakehurst.wiremock.standalone.MappingsLoader; +import com.github.tomakehurst.wiremock.stubbing.StubMapping; +import com.github.tomakehurst.wiremock.stubbing.StubMappings; + +@SpringBootApplication +public class MockApplication { + + + private static final String BANNER= " \n" + +" ******** **** **** ## \n" + +" **######** ###* *### ## \n" + +" *##******##* ##*** ***## ##\n" + +" **#* *#** ##*#* *#*## ## \n" + +" *#* *#* ##****** ******* ##****** ##*#* *#*## ******* ****** ## *** \n" + +" *#* *#* ##*####* *######* ##*####** ##*#* *#*## **#####** **####** ## *#** \n" + +" *#* *#* ##****#* *#****#* ##** **#* ## *** *** ## *#** **#* *#****#* ## **#** \n" + +" *# #* ##* *#* #* ##* *#* ## *#* *#* ## *#* *#* *#* *#* ##**#** \n" + +" *#* *#* ##* ## ****## ##* *#* ## *#* *#* ## *#* *#* *#* ##*##* \n" + +" *#* *#* ## ## **###### ## #* ## *#* *#* ## *# #* *# ##**#** \n" + +" *#* *#* ## ## *#****## ##* *#* ## *#*#* ## *#* *#* *#* ##**##* \n" + +" **#* *#** ## ## *#* *## ##* *#* ## *#*#* ## *#* *#* *#* *#* ## *#** \n" + +" *##******##* ## ## *#* **##* ##** **#* ## *#*#* ## *#** **#* *#****#* ## **#* \n" + +" **######** ## ## *#######* ##*####* ## *###* ## **#####** **####** ## *#** \n" + +" ******** ## ## *******#* ##****** ## *#* ## ******* ****** ## *#* \n" + +" ## \n" + +" ## \n" + +" ## \n" + +" ** \n" ; + + static { + System.setProperty("org.mortbay.log.class", "com.github.tomakehurst.wiremock.jetty.LoggerAdapter"); + } + + private WireMockServer wireMockServer; + + public static void main(String[] args) { + SpringApplication.run(MockApplication.class, args); + //new WireMockServerRunner().run("--port 9999"); + new MockApplication().run(args); + } + + public void run(String... args) { + + WireMockConfiguration options = WireMockConfiguration.options(); + options.port(9999); + FileSource fileSource = options.filesRoot(); + fileSource.createIfNecessary(); + FileSource filesFileSource = fileSource.child(FILES_ROOT); + filesFileSource.createIfNecessary(); + FileSource mappingsFileSource = fileSource.child(MAPPINGS_ROOT); + mappingsFileSource.createIfNecessary(); + + // Register extension + options.extensions("org.onap.integration.test.mocks.sniroemulator.extension.Webhooks"); + // Register notifier + options.notifier(new ConsoleNotifier(true)); + wireMockServer = new WireMockServer(options); + + wireMockServer.enableRecordMappings(mappingsFileSource, filesFileSource); + + //if (options.specifiesProxyUrl()) { + // addProxyMapping(options.proxyUrl()); + //} + + try { + wireMockServer.start(); + out.println(BANNER); + out.println(); + out.println(options); + } catch (FatalStartupException e) { + System.err.println(e.getMessage()); + System.exit(1); + } + } + + private void addProxyMapping(final String baseUrl) { + wireMockServer.loadMappingsUsing(new MappingsLoader() { + @Override + public void loadMappingsInto(StubMappings stubMappings) { + RequestPattern requestPattern = newRequestPattern(ANY, anyUrl()).build(); + ResponseDefinition responseDef = responseDefinition() + .proxiedFrom(baseUrl) + .build(); + + StubMapping proxyBasedMapping = new StubMapping(requestPattern, responseDef); + proxyBasedMapping.setPriority(10); // Make it low priority so that existing stubs will take precedence + stubMappings.addMapping(proxyBasedMapping); + } + }); + } + + public void stop() { + wireMockServer.stop(); + } + + public boolean isRunning() { + return wireMockServer.isRunning(); + } + + public int port() { return wireMockServer.port(); } + +} diff --git a/test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/extension/WebhookDefinition.java b/test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/extension/WebhookDefinition.java new file mode 100644 index 000000000..cccf06018 --- /dev/null +++ b/test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/extension/WebhookDefinition.java @@ -0,0 +1,101 @@ +package org.onap.integration.test.mocks.sniroemulator.extension; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.tomakehurst.wiremock.http.Body; +import com.github.tomakehurst.wiremock.http.HttpHeader; +import com.github.tomakehurst.wiremock.http.HttpHeaders; +import com.github.tomakehurst.wiremock.http.RequestMethod; + +import java.net.URI; +import java.util.List; + +import static com.google.common.collect.Lists.newArrayList; + +public class WebhookDefinition { + + private RequestMethod method; + private URI url; + private List headers; + private Body body = Body.none(); + + @JsonCreator + public WebhookDefinition(@JsonProperty("method") RequestMethod method, + @JsonProperty("url") URI url, + @JsonProperty("headers") HttpHeaders headers, + @JsonProperty("body") String body, + @JsonProperty("base64Body") String base64Body) { + this.method = method; + this.url = url; + this.headers = newArrayList(headers.all()); + this.body = Body.fromOneOf(null, body, null, base64Body); + } + + public WebhookDefinition() { + } + + public RequestMethod getMethod() { + return method; + } + + public URI getUrl() { + return url; + } + + public HttpHeaders getHeaders() { + return new HttpHeaders(headers); + } + + public String getBase64Body() { + return body.isBinary() ? body.asBase64() : null; + } + + public String getBody() { + return body.isBinary() ? null : body.asString(); + } + + @JsonIgnore + public byte[] getBinaryBody() { + return body.asBytes(); + } + + public WebhookDefinition withMethod(RequestMethod method) { + this.method = method; + return this; + } + + public WebhookDefinition withUrl(URI url) { + this.url = url; + return this; + } + + public WebhookDefinition withUrl(String url) { + withUrl(URI.create(url)); + return this; + } + + public WebhookDefinition withHeaders(List headers) { + this.headers = headers; + return this; + } + + public WebhookDefinition withHeader(String key, String... values) { + if (headers == null) { + headers = newArrayList(); + } + + headers.add(new HttpHeader(key, values)); + return this; + } + + public WebhookDefinition withBody(String body) { + this.body = new Body(body); + return this; + } + + public WebhookDefinition withBinaryBody(byte[] body) { + this.body = new Body(body); + return this; + } +} diff --git a/test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/extension/Webhooks.java b/test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/extension/Webhooks.java new file mode 100644 index 000000000..12d52f4d4 --- /dev/null +++ b/test/mocks/sniroemulator/src/main/java/org/onap/integration/test/mocks/sniroemulator/extension/Webhooks.java @@ -0,0 +1,100 @@ +package org.onap.integration.test.mocks.sniroemulator.extension; + +import com.github.tomakehurst.wiremock.common.Notifier; +import com.github.tomakehurst.wiremock.core.Admin; +import com.github.tomakehurst.wiremock.extension.Parameters; +import com.github.tomakehurst.wiremock.extension.PostServeAction; +import com.github.tomakehurst.wiremock.http.HttpClientFactory; +import com.github.tomakehurst.wiremock.http.HttpHeader; +import com.github.tomakehurst.wiremock.stubbing.ServeEvent; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.util.EntityUtils; + +import java.io.IOException; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; + +import static com.github.tomakehurst.wiremock.common.Exceptions.throwUnchecked; +import static com.github.tomakehurst.wiremock.common.LocalNotifier.notifier; +import static com.github.tomakehurst.wiremock.http.HttpClientFactory.getHttpRequestFor; +import static java.util.concurrent.TimeUnit.SECONDS; + +public class Webhooks extends PostServeAction { + + private final ScheduledExecutorService scheduler; + private final HttpClient httpClient; + + public Webhooks() { + scheduler = Executors.newScheduledThreadPool(10); + httpClient = HttpClientFactory.createClient(); + } + + @Override + public String getName() { + return "webhook"; + } + + @Override + public void doAction(ServeEvent serveEvent, Admin admin, Parameters parameters) { + final WebhookDefinition definition = parameters.as(WebhookDefinition.class); + final Notifier notifier = notifier(); + + scheduler.schedule( + new Runnable() { + @Override + public void run() { + HttpUriRequest request = buildRequest(definition); + + try { + HttpResponse response = httpClient.execute(request); + notifier.info( + String.format("Webhook %s request to %s returned status %s\n\n%s", + definition.getMethod(), + definition.getUrl(), + response.getStatusLine(), + EntityUtils.toString(response.getEntity()) + ) + ); + System.out.println(String.format("Webhook %s request to %s returned status %s\n\n%s", + definition.getMethod(), + definition.getUrl(), + response.getStatusLine(), + EntityUtils.toString(response.getEntity()) + ) + ); + } catch (IOException e) { + throwUnchecked(e); + } + } + }, + 0L, + SECONDS + ); + } + + private static HttpUriRequest buildRequest(WebhookDefinition definition) { + HttpUriRequest request = getHttpRequestFor( + definition.getMethod(), + definition.getUrl().toString() + ); + + for (HttpHeader header: definition.getHeaders().all()) { + request.addHeader(header.key(), header.firstValue()); + } + + if (definition.getMethod().hasEntity()) { + HttpEntityEnclosingRequestBase entityRequest = (HttpEntityEnclosingRequestBase) request; + entityRequest.setEntity(new ByteArrayEntity(definition.getBinaryBody())); + } + + return request; + } + + public static WebhookDefinition webhook() { + return new WebhookDefinition(); + } +} diff --git a/test/mocks/sniroemulator/src/main/resources/application.properties b/test/mocks/sniroemulator/src/main/resources/application.properties new file mode 100644 index 000000000..51ad5ebf4 --- /dev/null +++ b/test/mocks/sniroemulator/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=9090 diff --git a/test/mocks/sniroemulator/src/test/java/org/onap/integration/test/mocks/sniroemulator/MockApplicationTests.java b/test/mocks/sniroemulator/src/test/java/org/onap/integration/test/mocks/sniroemulator/MockApplicationTests.java new file mode 100644 index 000000000..a5911cbdb --- /dev/null +++ b/test/mocks/sniroemulator/src/test/java/org/onap/integration/test/mocks/sniroemulator/MockApplicationTests.java @@ -0,0 +1,16 @@ +package org.onap.integration.test.mocks.sniroemulator; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class MockApplicationTests { + + @Test + public void contextLoads() { + } + +} -- cgit 1.2.3-korg