summaryrefslogtreecommitdiffstats
path: root/examples/examples-onap-vcpe/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'examples/examples-onap-vcpe/src/test/java')
-rw-r--r--examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AaiAndGuardSimEndpointTest.java183
-rw-r--r--examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AppcResponseCreator.java94
-rw-r--r--examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSim.java (renamed from examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AaiAndGuardSim.java)13
-rw-r--r--examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSimEndpoint.java343
-rw-r--r--examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVcpeRunner.java68
5 files changed, 512 insertions, 189 deletions
diff --git a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AaiAndGuardSimEndpointTest.java b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AaiAndGuardSimEndpointTest.java
deleted file mode 100644
index 5b9040f95..000000000
--- a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AaiAndGuardSimEndpointTest.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2016-2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.apex.domains.onap.vcpe;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import com.google.gson.Gson;
-
-import java.util.Map;
-import java.util.Random;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.Response;
-
-/**
- * The Class AaiAndGuardSimEndpoint.
- */
-@Path("/sim")
-public class AaiAndGuardSimEndpointTest {
-
- private static int postMessagesReceived = 0;
- private static int putMessagesReceived = 0;
- private static int statMessagesReceived = 0;
- private static int getMessagesReceived = 0;
-
- /**
- * Service get stats.
- *
- * @return the response
- */
- @Path("/pdp/api/Stats")
- @GET
- public Response serviceGetStats() {
- statMessagesReceived++;
- return Response.status(200).entity("{\"GET\": " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived
- + ",\"POST\": " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build();
- }
-
- /**
- * Service guard post request.
- *
- * @param jsonString the json string
- * @return the response
- */
- @Path("/pdp/api/getDecision")
- @POST
- public Response serviceGuardPostRequest(final String jsonString) {
- postMessagesReceived++;
-
- if (postMessagesReceived % 2 == 0) {
- return Response.status(200).entity("{\"decision\": \"PERMIT\", \"details\": \"Decision Permit. OK!\"}")
- .build();
- } else {
- return Response.status(200).entity("{\"decision\": \"DENY\", \"details\": \"Decision Denied. NOK :-(\"}")
- .build();
- }
- }
-
- /**
- * Service get event.
- *
- * @return the response
- */
- @Path("/event/GetEvent")
- @GET
- public Response serviceGetEvent() {
- final Random rand = new Random();
- final int nextMatchCase = rand.nextInt(4);
- final String nextEventName = "Event0" + rand.nextInt(2) + "00";
-
- final String eventString = "{\n" + "\"nameSpace\": \"org.onap.policy.apex.sample.events\",\n" + "\"name\": \""
- + nextEventName + "\",\n" + "\"version\": \"0.0.1\",\n" + "\"source\": \"REST_" + getMessagesReceived
- + "\",\n" + "\"target\": \"apex\",\n" + "\"TestSlogan\": \"Test slogan for External Event0\",\n"
- + "\"TestMatchCase\": " + nextMatchCase + ",\n" + "\"TestTimestamp\": " + System.currentTimeMillis()
- + ",\n" + "\"TestTemperature\": 9080.866\n" + "}";
-
- getMessagesReceived++;
-
- return Response.status(200).entity(eventString).build();
- }
-
- /**
- * Service get empty event.
- *
- * @return the response
- */
- @Path("/event/GetEmptyEvent")
- @GET
- public Response serviceGetEmptyEvent() {
- return Response.status(200).build();
- }
-
- /**
- * Service get event bad response.
- *
- * @return the response
- */
- @Path("/event/GetEventBadResponse")
- @GET
- public Response serviceGetEventBadResponse() {
- return Response.status(400).build();
- }
-
- /**
- * Service post request.
- *
- * @param jsonString the json string
- * @return the response
- */
- @Path("/event/PostEvent")
- @POST
- public Response servicePostRequest(final String jsonString) {
- postMessagesReceived++;
-
- @SuppressWarnings("unchecked")
- final Map<String, Object> jsonMap = new Gson().fromJson(jsonString, Map.class);
- assertTrue(jsonMap.containsKey("name"));
- assertEquals("0.0.1", jsonMap.get("version"));
- assertEquals("org.onap.policy.apex.sample.events", jsonMap.get("nameSpace"));
- assertEquals("Act", jsonMap.get("source"));
- assertEquals("Outside", jsonMap.get("target"));
-
- return Response.status(200).entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived
- + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build();
- }
-
- /**
- * Service post request bad response.
- *
- * @param jsonString the json string
- * @return the response
- */
- @Path("/event/PostEventBadResponse")
- @POST
- public Response servicePostRequestBadResponse(final String jsonString) {
- return Response.status(400).build();
- }
-
- /**
- * Service put request.
- *
- * @param jsonString the json string
- * @return the response
- */
- @Path("/event/PutEvent")
- @PUT
- public Response servicePutRequest(final String jsonString) {
- putMessagesReceived++;
-
- @SuppressWarnings("unchecked")
- final Map<String, Object> jsonMap = new Gson().fromJson(jsonString, Map.class);
- assertTrue(jsonMap.containsKey("name"));
- assertEquals("0.0.1", jsonMap.get("version"));
- assertEquals("org.onap.policy.apex.sample.events", jsonMap.get("nameSpace"));
- assertEquals("Act", jsonMap.get("source"));
- assertEquals("Outside", jsonMap.get("target"));
-
- return Response.status(200).entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived
- + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build();
- }
-}
diff --git a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AppcResponseCreator.java b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AppcResponseCreator.java
new file mode 100644
index 000000000..f5f2b2792
--- /dev/null
+++ b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AppcResponseCreator.java
@@ -0,0 +1,94 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.domains.onap.vcpe;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.BlockingQueue;
+
+import org.onap.policy.appclcm.LcmRequest;
+import org.onap.policy.appclcm.LcmRequestWrapper;
+import org.onap.policy.appclcm.LcmResponse;
+import org.onap.policy.appclcm.LcmResponseWrapper;
+import org.onap.policy.appclcm.util.Serialization;
+
+/**
+ * Respond to an APPC request with a given delay.
+ */
+public class AppcResponseCreator {
+ // The request from APPC
+ private final String jsonRequestString;
+
+ // The queue for APPC responses
+ private final BlockingQueue<String> appcResponseQueue;
+
+ // The timer task for response generation
+ private final Timer appcTimer;
+
+ /**
+ * Respond to the given APPC request after the given amount of milliseconds.
+ *
+ * @param appcResponseQueue the queue into which to put the APPC response
+ * @param jsonRequestString the request JSON string
+ * @param milliSecondsToWait the number of milliseconds to wait
+ */
+ public AppcResponseCreator(BlockingQueue<String> appcResponseQueue, String jsonRequestString,
+ long milliSecondsToWait) {
+ this.jsonRequestString = jsonRequestString;
+ this.appcResponseQueue = appcResponseQueue;
+
+ appcTimer = new Timer();
+ appcTimer.schedule(new AppcTimerTask(), milliSecondsToWait);
+ }
+
+ private class AppcTimerTask extends TimerTask {
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.util.TimerTask#run()
+ */
+ @Override
+ public void run() {
+ Gson gson = new GsonBuilder().registerTypeAdapter(LcmRequest.class, new Serialization.RequestAdapter())
+ .registerTypeAdapter(LcmResponse.class, new Serialization.ResponseAdapter())
+ .setPrettyPrinting().create();
+
+ LcmRequestWrapper requestWrapper = gson.fromJson(jsonRequestString, LcmRequestWrapper.class);
+
+ LcmResponse response = new LcmResponse(requestWrapper.getBody());
+ response.getStatus().setCode(400);
+ response.getStatus().setMessage("Restart Successful");
+
+ LcmResponseWrapper responseWrapper = new LcmResponseWrapper();
+ responseWrapper.setBody(response);
+
+ responseWrapper.setVersion(requestWrapper.getVersion());
+ responseWrapper.setRpcName(requestWrapper.getRpcName());
+ responseWrapper.setCorrelationId(requestWrapper.getCorrelationId());
+ responseWrapper.setType(requestWrapper.getType());
+
+ appcResponseQueue.add(gson.toJson(responseWrapper, LcmResponseWrapper.class));
+ }
+ }
+}
diff --git a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AaiAndGuardSim.java b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSim.java
index 93b587a41..671f333d9 100644
--- a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AaiAndGuardSim.java
+++ b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSim.java
@@ -30,17 +30,18 @@ import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
/**
* The Class AaiAndGuardSim.
*/
-public class AaiAndGuardSim {
- private static final String BASE_URI = "http://localhost:54321/AAIAndGuardSim";
+public class OnapVCpeSim {
private static final int MAX_LOOPS = 100000;
private HttpServer server;
/**
* Instantiates a new aai and guard sim.
*/
- public AaiAndGuardSim() {
- final ResourceConfig rc = new ResourceConfig(AaiAndGuardSimEndpointTest.class);
- server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
+ public OnapVCpeSim(final String[] args) {
+ final String baseUri = "http://" + args[0] + ':' + args[1] + "/OnapVCpeSim";
+
+ final ResourceConfig rc = new ResourceConfig(OnapVCpeSimEndpoint.class);
+ server = GrizzlyHttpServerFactory.createHttpServer(URI.create(baseUri), rc);
while (!server.isStarted()) {
ThreadUtilities.sleep(50);
@@ -63,7 +64,7 @@ public class AaiAndGuardSim {
* @throws Exception the exception
*/
public static void main(final String[] args) throws Exception {
- final AaiAndGuardSim sim = new AaiAndGuardSim();
+ final OnapVCpeSim sim = new OnapVCpeSim(args);
for (int index = 0; index < MAX_LOOPS; index++) {
ThreadUtilities.sleep(100);
diff --git a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSimEndpoint.java b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSimEndpoint.java
new file mode 100644
index 000000000..936c319a9
--- /dev/null
+++ b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSimEndpoint.java
@@ -0,0 +1,343 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.domains.onap.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import java.util.Map;
+import java.util.Random;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Response;
+
+import org.onap.policy.aai.AaiNqGenericVnf;
+import org.onap.policy.aai.AaiNqInventoryResponseItem;
+import org.onap.policy.aai.AaiNqRequest;
+import org.onap.policy.aai.AaiNqResponse;
+import org.onap.policy.aai.AaiNqVfModule;
+import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+/**
+ * The Class AaiAndGuardSimEndpoint.
+ */
+@Path("/sim")
+public class OnapVCpeSimEndpoint {
+ private static final XLogger LOGGER = XLoggerFactory.getXLogger(OnapVCpeSimEndpoint.class);
+
+ private static BlockingQueue<String> appcResponseQueue = new LinkedBlockingQueue<>();
+
+ private static AtomicInteger guardMessagesReceived = new AtomicInteger();
+ private static AtomicInteger postMessagesReceived = new AtomicInteger();
+ private static AtomicInteger putMessagesReceived = new AtomicInteger();
+ private static AtomicInteger statMessagesReceived = new AtomicInteger();
+ private static AtomicInteger getMessagesReceived = new AtomicInteger();
+
+ /**
+ * Service get stats.
+ *
+ * @return the response
+ */
+ @Path("/pdp/api/Stats")
+ @GET
+ public Response serviceGetStats() {
+ statMessagesReceived.incrementAndGet();
+
+ return Response.status(200).entity("{\"GET\": " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived
+ + ",\"POST\": " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build();
+ }
+
+ /**
+ * Service guard post request.
+ *
+ * @param jsonString the json string
+ * @return the response
+ */
+ @Path("/pdp/api/getDecision")
+ @POST
+ public Response serviceGuardPostRequest(final String jsonString) {
+ LOGGER.info("\n*** GUARD REQUEST START ***\n" + jsonString + "\n *** GUARD REQUEST END ***");
+
+ String target = jsonString.substring(jsonString.indexOf("b4fe00ac"));
+ target = target.substring(0, target.indexOf('"'));
+
+ int thisGuardMessageNumber = guardMessagesReceived.incrementAndGet();
+ postMessagesReceived.incrementAndGet();
+
+ String responseJsonString = null;
+ if (thisGuardMessageNumber % 2 == 0) {
+ responseJsonString = "{\"decision\": \"PERMIT\", \"details\": \"Decision Permit. OK!\"}";
+ } else {
+ responseJsonString = "{\"decision\": \"DENY\", \"details\": \"Decision Denied. NOK :-(\"}";
+ }
+
+ LOGGER.info("\n*** GUARD RESPONSE START ***\n" + target + "\n" + responseJsonString
+ + "\n*** GUARD RESPONSE END ***");
+
+ return Response.status(200).entity(responseJsonString).build();
+ }
+
+ /**
+ * AAI named query request.
+ *
+ * @param jsonString the json string
+ * @return the response
+ */
+ @Path("aai/search/named-query")
+ @POST
+ public Response aaiNamedQueryRequest(final String jsonString) {
+ postMessagesReceived.incrementAndGet();
+
+ LOGGER.info("\n*** AAI REQUEST START ***\n" + jsonString + "\n *** AAI REQUEST END ***");
+
+ AaiNqRequest request = new Gson().fromJson(jsonString, AaiNqRequest.class);
+ String vnfId = request.getInstanceFilters().getInstanceFilter().iterator().next().get("generic-vnf")
+ .get("vnf-id");
+ String vnfSuffix = vnfId.substring(vnfId.length() - 4);
+
+ AaiNqInventoryResponseItem responseItem = new AaiNqInventoryResponseItem();
+ responseItem.setModelName("vCPE");
+
+ AaiNqGenericVnf genericVnf = new AaiNqGenericVnf();
+ genericVnf.setResourceVersion("1");
+ genericVnf.setVnfName("vCPEInfraVNF" + vnfSuffix);
+ genericVnf.setProvStatus("PREPROV");
+ genericVnf.setIsClosedLoopDisabled(false);
+ genericVnf.setVnfType("vCPEInfraService10/vCPEInfraService10 0");
+ genericVnf.setInMaint(false);
+ genericVnf.setServiceId("5585fd2c-ad0d-4050-b0cf-dfe4a03bd01f");
+ genericVnf.setVnfId(vnfId);
+
+ responseItem.setGenericVnf(genericVnf);
+
+ AaiNqVfModule vfModule = new AaiNqVfModule();
+ vfModule.setOrchestrationStatus("Created");
+
+ responseItem.setVfModule(vfModule);
+
+ AaiNqResponse response = new AaiNqResponse();
+ response.getInventoryResponseItems().add(responseItem);
+
+ String responseJsonString = new GsonBuilder().setPrettyPrinting().create().toJson(response);
+
+ LOGGER.info("\n*** AAI RESPONSE START ***\n" + responseJsonString + "\n *** AAI RESPONSE END ***");
+
+ return Response.status(200).entity(responseJsonString).build();
+ }
+
+ /**
+ * DCAE input of events (simulation of DMaaP).
+ *
+ * @param timeout the timeout to wait for
+ * @return the response
+ */
+ @Path("events/unauthenticated.DCAE_CL_OUTPUT/APEX/1")
+ @GET
+ public Response dcaeClOutput(@QueryParam("timeout") final int timeout) {
+ getMessagesReceived.incrementAndGet();
+
+ ThreadUtilities.sleep(timeout - 500);
+
+ return Response.status(200).build();
+ }
+
+ /**
+ * APPC response events (simulation of DMaaP).
+ *
+ * @param timeout the timeout to wait for
+ * @return the response
+ * @throws InterruptedException on queue interrupts
+ */
+ @Path("events/APPC_LCM_WRITE/APEX/1")
+ @GET
+ public Response appcResponseOutput(@QueryParam("timeout") final int timeout) throws InterruptedException {
+ getMessagesReceived.incrementAndGet();
+
+ int timeLeft = timeout - 500;
+
+ do {
+ String appcResponse = appcResponseQueue.poll(100, TimeUnit.MILLISECONDS);
+
+ if (appcResponse != null) {
+ LOGGER.info("\n*** APPC RESPONSE START ***");
+ System.err.println(appcResponse);
+ LOGGER.info("\n*** APPC RESPONSE END ***");
+
+ return Response.status(200).entity(appcResponse).build();
+ }
+ timeLeft -= 100;
+ }
+ while (timeLeft > 0);
+
+ return Response.status(200).build();
+ }
+
+ /**
+ * Post to Policy management log (Simulation of DMaaP).
+ *
+ * @param jsonString the json string
+ * @return the response
+ */
+ @Path("/events/POLICY_CL_MGT")
+ @POST
+ public Response policyLogRequest(final String jsonString) {
+ postMessagesReceived.incrementAndGet();
+
+ LOGGER.info("\n*** POLICY LOG ENTRY START ***\n" + jsonString + "\n *** POLICY LOG ENTRY END ***");
+
+ return Response.status(200).build();
+ }
+
+ /**
+ * Post to APPC LCM (Simulation of DMaaP).
+ *
+ * @param jsonString the json string
+ * @return the response
+ */
+ @Path("/events/APPC-LCM-READ")
+ @POST
+ public Response appcRequest(final String jsonString) {
+ postMessagesReceived.incrementAndGet();
+
+ LOGGER.info("\n*** APPC REQUEST START ***\n" + jsonString + "\n *** APPC REQUEST END ***");
+
+ new AppcResponseCreator(appcResponseQueue, jsonString, 10000);
+
+ return Response.status(200).build();
+ }
+
+ /**
+ * Service get event.
+ *
+ * @return the response
+ */
+ @Path("/event/GetEvent")
+ @GET
+ public Response serviceGetEvent() {
+ final Random rand = new Random();
+ final int nextMatchCase = rand.nextInt(4);
+ final String nextEventName = "Event0" + rand.nextInt(2) + "00";
+
+ final String eventString = "{\n" + "\"nameSpace\": \"org.onap.policy.apex.sample.events\",\n" + "\"name\": \""
+ + nextEventName + "\",\n" + "\"version\": \"0.0.1\",\n" + "\"source\": \"REST_"
+ + getMessagesReceived + "\",\n" + "\"target\": \"apex\",\n"
+ + "\"TestSlogan\": \"Test slogan for External Event0\",\n" + "\"TestMatchCase\": "
+ + nextMatchCase + ",\n" + "\"TestTimestamp\": " + System.currentTimeMillis() + ",\n"
+ + "\"TestTemperature\": 9080.866\n" + "}";
+
+ getMessagesReceived.incrementAndGet();
+
+ return Response.status(200).entity(eventString).build();
+ }
+
+ /**
+ * Service get empty event.
+ *
+ * @return the response
+ */
+ @Path("/event/GetEmptyEvent")
+ @GET
+ public Response serviceGetEmptyEvent() {
+ return Response.status(200).build();
+ }
+
+ /**
+ * Service get event bad response.
+ *
+ * @return the response
+ */
+ @Path("/event/GetEventBadResponse")
+ @GET
+ public Response serviceGetEventBadResponse() {
+ return Response.status(400).build();
+ }
+
+ /**
+ * Service post request.
+ *
+ * @param jsonString the json string
+ * @return the response
+ */
+ @Path("/event/PostEvent")
+ @POST
+ public Response servicePostRequest(final String jsonString) {
+ postMessagesReceived.incrementAndGet();
+
+ @SuppressWarnings("unchecked")
+ final Map<String, Object> jsonMap = new Gson().fromJson(jsonString, Map.class);
+ assertTrue(jsonMap.containsKey("name"));
+ assertEquals("0.0.1", jsonMap.get("version"));
+ assertEquals("org.onap.policy.apex.sample.events", jsonMap.get("nameSpace"));
+ assertEquals("Act", jsonMap.get("source"));
+ assertEquals("Outside", jsonMap.get("target"));
+
+ return Response.status(200).entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived
+ + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build();
+ }
+
+ /**
+ * Service post request bad response.
+ *
+ * @param jsonString the json string
+ * @return the response
+ */
+ @Path("/event/PostEventBadResponse")
+ @POST
+ public Response servicePostRequestBadResponse(final String jsonString) {
+ return Response.status(400).build();
+ }
+
+ /**
+ * Service put request.
+ *
+ * @param jsonString the json string
+ * @return the response
+ */
+ @Path("/event/PutEvent")
+ @PUT
+ public Response servicePutRequest(final String jsonString) {
+ putMessagesReceived.incrementAndGet();
+
+ @SuppressWarnings("unchecked")
+ final Map<String, Object> jsonMap = new Gson().fromJson(jsonString, Map.class);
+ assertTrue(jsonMap.containsKey("name"));
+ assertEquals("0.0.1", jsonMap.get("version"));
+ assertEquals("org.onap.policy.apex.sample.events", jsonMap.get("nameSpace"));
+ assertEquals("Act", jsonMap.get("source"));
+ assertEquals("Outside", jsonMap.get("target"));
+
+ return Response.status(200).entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived
+ + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build();
+ }
+}
diff --git a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVcpeRunner.java b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVcpeRunner.java
new file mode 100644
index 000000000..4f6b6101c
--- /dev/null
+++ b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVcpeRunner.java
@@ -0,0 +1,68 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.domains.onap.vcpe;
+
+import org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain;
+import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.service.engine.main.ApexMain;
+
+/**
+ * Test the ONAP vCPE use case.
+ */
+public class OnapVcpeRunner {
+
+ private OnapVcpeRunner() throws ApexException {
+
+ // @formatter:off
+ final String[] cliArgs = new String[] {
+ "-c",
+ "src/main/resources/policy/ONAPvCPEPolicyModel.apex",
+ "-l",
+ "target/ONAPvCPEPolicyModel.log",
+ "-o",
+ "target/classes/ONAPvCPEPolicyModel.json"
+ };
+ // @formatter:on
+
+ new ApexCommandLineEditorMain(cliArgs);
+
+ // @formatter:off
+ final String[] apexArgs = {
+ "-rfr",
+ "target/classes",
+ "-c",
+ "src/main/resources/examples/config/ONAPvCPE/ApexConfig_Sim.json",
+ "-m",
+ "target/classes/ONAPvCPEPolicyModel.json"
+ };
+ // @formatter:on
+
+ final ApexMain apexMain = new ApexMain(apexArgs);
+
+ ThreadUtilities.sleep(1000000);
+ apexMain.shutdown();
+ }
+
+ public static void main(String[] args) throws ApexException {
+ new OnapVcpeRunner();
+ }
+}