summaryrefslogtreecommitdiffstats
path: root/testsuites/integration/integration-uservice-test
diff options
context:
space:
mode:
authorliamfallon <liam.fallon@est.tech>2019-07-10 19:44:39 +0000
committerliamfallon <liam.fallon@est.tech>2019-07-10 19:44:39 +0000
commitadf67497761295115dc75b525500d687518fc4fd (patch)
treec5c5b5e737ac08256e9f782b5dccbd3ddc08d3c3 /testsuites/integration/integration-uservice-test
parent5c384fb2888029c2babb859c30318749e1ce828c (diff)
Add integration tests for executor properties
Added integration test that sets properties in a dummy plugin and amends them in tasks in a policy. Variosu tests added to check combinations of where properties are set in plugins or in tasks or both. Implementaiton changed to: - Always pass in a Properies object, the properties object coming into the policy cannot be null because the task/TSL/SFL may wish to set it - Fix a bug where the properties were not passed from the ApexEvent to the engine event in the ApexEventUnmarshaller class Issue-ID: POLICY-1743 Change-Id: I6aa152b28d46cf3cc6fa56a1a95b76a8e55f5a49 Signed-off-by: liamfallon <liam.fallon@est.tech>
Diffstat (limited to 'testsuites/integration/integration-uservice-test')
-rw-r--r--testsuites/integration/integration-uservice-test/pom.xml14
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyApexEventConsumer.java136
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyApexEventProducer.java145
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyCarrierTechnologyParameters.java88
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/RunTestEvent.java53
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/TestExecutionProperties.java140
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/AddPropertyTask.js34
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/DefinedToEmptyTask.js34
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/EmptyToDefinedTask.js34
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/EmptyToEmptyTask.js28
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/ReadOnlyTask.js28
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/RemovePropertyTask.js34
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/RunTestStateTSL.js57
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/policy/ExecutionPropertiesTestPolicyModel.apex99
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_conf.json48
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_in.properties1
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_out_expected.properties2
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_conf.json48
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_in.properties1
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_out_expected.properties0
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_conf.json48
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_in.properties0
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_out_expected.properties1
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_conf.json48
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_in.properties1
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_out_expected.properties1
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_conf.json48
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_in.properties1
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_out_expected.properties1
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_conf.json48
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_in.properties2
-rw-r--r--testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_out_expected.properties1
32 files changed, 1221 insertions, 3 deletions
diff --git a/testsuites/integration/integration-uservice-test/pom.xml b/testsuites/integration/integration-uservice-test/pom.xml
index 135911754..cb2d658db 100644
--- a/testsuites/integration/integration-uservice-test/pom.xml
+++ b/testsuites/integration/integration-uservice-test/pom.xml
@@ -18,7 +18,8 @@
============LICENSE_END=========================================================
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.policy.apex-pdp.testsuites.integration</groupId>
@@ -138,7 +139,7 @@
<artifactId>kafka_2.12</artifactId>
<version>${version.kafka}</version>
<scope>test</scope>
- <exclusions>
+ <exclusions>
<!-- The default Zookeeper version in Kafka has vulnerabilities -->
<exclusion>
<groupId>org.apache.zookeeper</groupId>
@@ -183,6 +184,13 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <version>3.0.0</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>${version.jersey}</version>
@@ -236,7 +244,7 @@
</build>
<profiles>
- <profile>
+ <profile>
<id>only-eclipse</id>
<activation>
<property>
diff --git a/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyApexEventConsumer.java b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyApexEventConsumer.java
new file mode 100644
index 000000000..e5a88a365
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyApexEventConsumer.java
@@ -0,0 +1,136 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.testsuites.integration.uservice.executionproperties;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.EnumMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.onap.policy.apex.service.engine.event.ApexEventConsumer;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventReceiver;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+import org.onap.policy.apex.service.engine.event.PeeredReference;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Dummy Apex event consumer for testing event properties.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class DummyApexEventConsumer implements ApexEventConsumer {
+ // Get a reference to the logger
+ private static final Logger LOGGER = LoggerFactory.getLogger(DummyApexEventConsumer.class);
+
+ // The event receiver that will receive events from this consumer
+ private ApexEventReceiver eventReceiver;
+
+ // The name for this consumer
+ private String name = null;
+
+ // The peer references for this event handler
+ private Map<EventHandlerPeeredMode, PeeredReference> peerReferenceMap = new EnumMap<>(EventHandlerPeeredMode.class);
+
+ private DummyCarrierTechnologyParameters dummyConsumerProperties = null;
+
+ @Override
+ public void init(final String consumerName, final EventHandlerParameters consumerParameters,
+ final ApexEventReceiver incomingEventReceiver) throws ApexEventException {
+ this.eventReceiver = incomingEventReceiver;
+ this.name = consumerName;
+
+
+ // Check and get the properties
+ if (!(consumerParameters.getCarrierTechnologyParameters() instanceof DummyCarrierTechnologyParameters)) {
+ String message = "specified consumer properties of type \""
+ + consumerParameters.getCarrierTechnologyParameters().getClass().getCanonicalName()
+ + "\" are not applicable to a dummy consumer";
+ LOGGER.warn(message);
+ throw new ApexEventException(message);
+ }
+
+ dummyConsumerProperties =
+ (DummyCarrierTechnologyParameters) consumerParameters.getCarrierTechnologyParameters();
+ }
+
+ @Override
+ public void start() {
+ new Thread(new RunTestEventSender()).start();
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ public PeeredReference getPeeredReference(final EventHandlerPeeredMode peeredMode) {
+ return peerReferenceMap.get(peeredMode);
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ public void setPeeredReference(final EventHandlerPeeredMode peeredMode, final PeeredReference peeredReference) {
+ peerReferenceMap.put(peeredMode, peeredReference);
+ }
+
+ @Override
+ public void stop() {}
+
+ private class RunTestEventSender implements Runnable {
+ @Override
+ public void run() {
+ Properties executionProperties = new Properties();
+ try {
+ executionProperties.load(new FileInputStream(new File(dummyConsumerProperties.getPropertyFileName())));
+ } catch (IOException e1) {
+ String message = "reading of executor properties for testing failed from file: "
+ + dummyConsumerProperties.getPropertyFileName();
+ LOGGER.warn(message);
+ throw new ApexEventRuntimeException(message);
+ }
+
+ RunTestEvent event = new RunTestEvent();
+ event.setTestToRun(dummyConsumerProperties.getTestToRun());
+ try {
+ eventReceiver.receiveEvent(executionProperties, event.toJson());
+ } catch (Exception e) {
+ String message = "event processing for executor properties testing failed: " + e.getMessage();
+ LOGGER.warn(message, e);
+ throw new ApexEventRuntimeException(message, e);
+ }
+ }
+ }
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyApexEventProducer.java b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyApexEventProducer.java
new file mode 100644
index 000000000..0c2ac32fa
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyApexEventProducer.java
@@ -0,0 +1,145 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.testsuites.integration.uservice.executionproperties;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.EnumMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventProducer;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+import org.onap.policy.apex.service.engine.event.PeeredReference;
+import org.onap.policy.apex.service.engine.event.SynchronousEventCache;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
+import org.onap.policy.common.utils.coder.CoderException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Dummy Apex event producer for testing event properties.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class DummyApexEventProducer implements ApexEventProducer {
+ // Get a reference to the logger
+ private static final Logger LOGGER = LoggerFactory.getLogger(DummyApexEventProducer.class);
+
+ // The parameters read from the parameter service
+ private DummyCarrierTechnologyParameters dummyProducerProperties;
+
+ // The name for this producer
+ private String name = null;
+
+ // The peer references for this event handler
+ private Map<EventHandlerPeeredMode, PeeredReference> peerReferenceMap = new EnumMap<>(EventHandlerPeeredMode.class);
+
+ @Override
+ public void init(final String producerName, final EventHandlerParameters producerParameters)
+ throws ApexEventException {
+ this.name = producerName;
+
+ // Check and get the Properties
+ if (!(producerParameters.getCarrierTechnologyParameters() instanceof DummyCarrierTechnologyParameters)) {
+ String message = "specified producer properties are not applicable to a dummy producer (" + this.name + ")";
+ LOGGER.warn(message);
+ throw new ApexEventException(message);
+ }
+ dummyProducerProperties =
+ (DummyCarrierTechnologyParameters) producerParameters.getCarrierTechnologyParameters();
+
+ new File(dummyProducerProperties.getPropertyFileName()).delete();
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ public PeeredReference getPeeredReference(final EventHandlerPeeredMode peeredMode) {
+ return peerReferenceMap.get(peeredMode);
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ public void setPeeredReference(final EventHandlerPeeredMode peeredMode, final PeeredReference peeredReference) {
+ peerReferenceMap.put(peeredMode, peeredReference);
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ public void sendEvent(final long executionId, final Properties executionProperties, final String eventName,
+ final Object eventAsJsonString) {
+ // Check if this is a synchronized event, if so we have received a reply
+ final SynchronousEventCache synchronousEventCache =
+ (SynchronousEventCache) peerReferenceMap.get(EventHandlerPeeredMode.SYNCHRONOUS);
+ if (synchronousEventCache != null) {
+ synchronousEventCache.removeCachedEventToApexIfExists(executionId);
+ }
+
+ RunTestEvent testEvent = new RunTestEvent();
+ try {
+ testEvent.fromJson((String) eventAsJsonString);
+ } catch (CoderException ce) {
+ String message = "could not decode event from JSON";
+ LOGGER.warn(message, ce);
+ throw new ApexEventRuntimeException(message, ce);
+ }
+ if (!dummyProducerProperties.getTestToRun().equals(testEvent.getTestToRun())) {
+ String message = "tests in received test event and parameters do not match " + testEvent.getTestToRun()
+ + ":" + dummyProducerProperties.getTestToRun();
+ LOGGER.warn(message);
+ throw new ApexEventRuntimeException(message);
+ }
+
+
+ try {
+ executionProperties.store(new FileOutputStream(new File(dummyProducerProperties.getPropertyFileName())),
+ "");
+ } catch (IOException ioe) {
+ String message = "writing of executor properties for testing failed from file: "
+ + dummyProducerProperties.getPropertyFileName();
+ LOGGER.warn(message, ioe);
+ throw new ApexEventRuntimeException(message, ioe);
+ }
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ public void stop() {}
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyCarrierTechnologyParameters.java b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyCarrierTechnologyParameters.java
new file mode 100644
index 000000000..08d78daaf
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyCarrierTechnologyParameters.java
@@ -0,0 +1,88 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.testsuites.integration.uservice.executionproperties;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import org.apache.commons.lang3.StringUtils;
+import org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters;
+import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.common.parameters.ValidationStatus;
+
+/**
+ * Dummy carrier technology parameters.
+ *
+ * <p>The parameters for this plugin are:
+ * <ol>
+ * <li>testToRun: The name of the test to run.
+ * </ol>
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DummyCarrierTechnologyParameters extends CarrierTechnologyParameters {
+
+ /** The label of this carrier technology. */
+ public static final String DUMMY_CARRIER_TECHNOLOGY_LABEL = "DUMMY";
+
+ /** The producer plugin class for the dummy carrier technology. */
+ public static final String DUMMY_EVENT_PRODUCER_PLUGIN_CLASS = DummyApexEventProducer.class.getName();
+
+ /** The consumer plugin class for the dummy carrier technology. */
+ public static final String DUMMY_EVENT_CONSUMER_PLUGIN_CLASS = DummyApexEventConsumer.class.getName();
+
+ private String testToRun = null;
+ private String propertyFileName = null;
+
+ /**
+ * Constructor to create a dummy carrier technology parameters instance and register the instance with the parameter
+ * service.
+ */
+ public DummyCarrierTechnologyParameters() {
+ super();
+
+ // Set the carrier technology properties for the web socket carrier technology
+ this.setLabel(DUMMY_CARRIER_TECHNOLOGY_LABEL);
+ this.setEventProducerPluginClass(DUMMY_EVENT_PRODUCER_PLUGIN_CLASS);
+ this.setEventConsumerPluginClass(DUMMY_EVENT_CONSUMER_PLUGIN_CLASS);
+
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ public GroupValidationResult validate() {
+ final GroupValidationResult result = super.validate();
+
+ if (StringUtils.isEmpty(testToRun)) {
+ result.setResult("testToRun", ValidationStatus.INVALID,
+ "no test has been specified on the dummy carrier technology plugin");
+ }
+
+ if (StringUtils.isEmpty(propertyFileName)) {
+ result.setResult("propertyFileName", ValidationStatus.INVALID,
+ "no propertyFileName has been specified on the dummy carrier technology plugin");
+ }
+
+ return result;
+ }
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/RunTestEvent.java b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/RunTestEvent.java
new file mode 100644
index 000000000..f740468ab
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/RunTestEvent.java
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.testsuites.integration.uservice.executionproperties;
+
+import lombok.Data;
+
+import org.onap.policy.common.utils.coder.CoderException;
+import org.onap.policy.common.utils.coder.StandardCoder;
+
+/**
+ * Test event fgor execution properties.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+@Data
+public class RunTestEvent {
+ private String testToRun;
+ private String propertyFileName;
+
+ public String toJson() throws CoderException {
+ return new StandardCoder().encode(this);
+ }
+
+ /**
+ * Set fields of this event from a JSON string.
+ *
+ * @param jsonString the JSON string
+ * @throws CoderException on JSON exceptions
+ */
+ public void fromJson(final String jsonString) throws CoderException {
+ RunTestEvent jsonTestEvent = new StandardCoder().decode(jsonString, RunTestEvent.class);
+ this.testToRun = jsonTestEvent.testToRun;
+ this.propertyFileName = jsonTestEvent.propertyFileName;
+ }
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/TestExecutionProperties.java b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/TestExecutionProperties.java
new file mode 100644
index 000000000..9327748b8
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/TestExecutionProperties.java
@@ -0,0 +1,140 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.testsuites.integration.uservice.executionproperties;
+
+import static org.awaitility.Awaitility.await;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain;
+import org.onap.policy.apex.service.engine.main.ApexMain;
+
+/**
+ * This class runs integration tests for execution properties.
+ */
+public class TestExecutionProperties {
+ /**
+ * Compile the policy.
+ */
+ @BeforeClass
+ public static void compilePolicy() {
+ // @formatter:off
+ final String[] cliArgs = {
+ "-c",
+ "src/test/resources/policies/executionproperties/policy/ExecutionPropertiesTestPolicyModel.apex",
+ "-l",
+ "target/ExecutionPropertiesTestPolicyModel.log",
+ "-o",
+ "target/ExecutionPropertiesTestPolicyModel.json"
+ };
+ // @formatter:on
+
+ new ApexCommandLineEditorMain(cliArgs);
+ }
+
+ /**
+ * Clear relative file root environment variable.
+ */
+ @Before
+ public void clearRelativeFileRoot() {
+ System.clearProperty("APEX_RELATIVE_FILE_ROOT");
+ }
+
+ /**
+ * Test read only execution properties are returned from policy.
+ */
+ @Test
+ public void testReadOnly() throws Exception {
+ testExecutionProperties("readOnly");
+ }
+
+ /**
+ * Test where execution properties set in task.
+ */
+ @Test
+ public void testEmptyToDefined() throws Exception {
+ testExecutionProperties("emptyToDefined");
+ }
+
+ /**
+ * Test where execution properties cleared in task.
+ */
+ @Test
+ public void testDefinedToEmpty() throws Exception {
+ testExecutionProperties("definedToEmpty");
+ }
+
+ /**
+ * Test where an execution properties added in task.
+ */
+ @Test
+ public void testAddProperty() throws Exception {
+ testExecutionProperties("addProperty");
+ }
+
+ /**
+ * Test empty properties are transferred correctly.
+ */
+ @Test
+ public void testEmptyToEmpty() throws Exception {
+ testExecutionProperties("emptyToEmpty");
+ }
+
+ private void testExecutionProperties(final String testName) throws Exception {
+ File compiledPolicyFile = new File("target/ExecutionPropertiesTestPolicyModel.json");
+ assertTrue(compiledPolicyFile.exists());
+
+ new File("target/" + testName + "_out.properties").delete();
+
+ // @formatter:off
+ final String[] args = {
+ "-rfr",
+ "target",
+ "-c",
+ "src/test/resources/testdata/executionproperties/" + testName + "_conf.json"
+ };
+ // @formatter:on
+ final ApexMain apexMain = new ApexMain(args);
+
+ // TODO: Set back to 10 seconds
+ await().atMost(10000, TimeUnit.SECONDS)
+ .until(() -> new File("target/" + testName + "_out.properties").exists());
+
+ apexMain.shutdown();
+
+ Properties expectedProperties = new Properties();
+ expectedProperties.load(new FileInputStream(
+ new File("src/test/resources/testdata/executionproperties/" + testName + "_out_expected.properties")));
+
+ Properties actualProperties = new Properties();
+ actualProperties.load(new FileInputStream(new File("target/" + testName + "_out.properties")));
+
+ assertEquals(expectedProperties, actualProperties);
+ }
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/AddPropertyTask.js b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/AddPropertyTask.js
new file mode 100644
index 000000000..af0db4e3e
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/AddPropertyTask.js
@@ -0,0 +1,34 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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=========================================================
+ */
+
+executor.logger.info(executor.subject.id);
+executor.logger.info(executor.inFields);
+
+executor.logger.info(executor.outFields);
+
+executor.logger.info("executionProperties in:" + executor.getExecutionProperties());
+
+var executionProperties = new java.util.Properties();
+
+executor.getExecutionProperties().setProperty("goodbye", "mars");
+
+executor.logger.info("executionProperties out:" + executor.getExecutionProperties());
+
+var returnValue = executor.isTrue;
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/DefinedToEmptyTask.js b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/DefinedToEmptyTask.js
new file mode 100644
index 000000000..dce37cc3e
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/DefinedToEmptyTask.js
@@ -0,0 +1,34 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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=========================================================
+ */
+
+executor.logger.info(executor.subject.id);
+executor.logger.info(executor.inFields);
+
+executor.logger.info(executor.outFields);
+
+executor.logger.info("executionProperties in:" + executor.getExecutionProperties());
+
+var executionProperties = new java.util.Properties();
+
+executor.getExecutionProperties().clear();
+
+executor.logger.info("executionProperties out:" + executor.getExecutionProperties());
+
+var returnValue = executor.isTrue;
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/EmptyToDefinedTask.js b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/EmptyToDefinedTask.js
new file mode 100644
index 000000000..090b7a00c
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/EmptyToDefinedTask.js
@@ -0,0 +1,34 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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=========================================================
+ */
+
+executor.logger.info(executor.subject.id);
+executor.logger.info(executor.inFields);
+
+executor.logger.info(executor.outFields);
+
+executor.logger.info("executionProperties in:" + executor.getExecutionProperties());
+
+var executionProperties = new java.util.Properties();
+
+executor.getExecutionProperties().setProperty("hello", "world");
+
+executor.logger.info("executionProperties out:" + executor.getExecutionProperties());
+
+var returnValue = executor.isTrue;
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/EmptyToEmptyTask.js b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/EmptyToEmptyTask.js
new file mode 100644
index 000000000..62af4e97b
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/EmptyToEmptyTask.js
@@ -0,0 +1,28 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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=========================================================
+ */
+
+executor.logger.info(executor.subject.id);
+executor.logger.info(executor.inFields);
+
+executor.logger.info(executor.outFields);
+
+executor.logger.info("executionProperties:" + executor.getExecutionProperties());
+
+var returnValue = executor.isTrue;
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/ReadOnlyTask.js b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/ReadOnlyTask.js
new file mode 100644
index 000000000..62af4e97b
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/ReadOnlyTask.js
@@ -0,0 +1,28 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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=========================================================
+ */
+
+executor.logger.info(executor.subject.id);
+executor.logger.info(executor.inFields);
+
+executor.logger.info(executor.outFields);
+
+executor.logger.info("executionProperties:" + executor.getExecutionProperties());
+
+var returnValue = executor.isTrue;
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/RemovePropertyTask.js b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/RemovePropertyTask.js
new file mode 100644
index 000000000..f08b718e4
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/RemovePropertyTask.js
@@ -0,0 +1,34 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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=========================================================
+ */
+
+executor.logger.info(executor.subject.id);
+executor.logger.info(executor.inFields);
+
+executor.logger.info(executor.outFields);
+
+executor.logger.info("executionProperties in:" + executor.getExecutionProperties());
+
+var executionProperties = new java.util.Properties();
+
+executor.getExecutionProperties().remove("hello");
+
+executor.logger.info("executionProperties out:" + executor.getExecutionProperties());
+
+var returnValue = executor.isTrue;
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/RunTestStateTSL.js b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/RunTestStateTSL.js
new file mode 100644
index 000000000..b527fc1f1
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/RunTestStateTSL.js
@@ -0,0 +1,57 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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=========================================================
+ */
+
+executor.logger.info(executor.subject.id);
+executor.logger.info(executor.inFields);
+
+var returnValue = executor.isTrue;
+
+executor.logger.info("executionProperties:" + executor.getExecutionProperties());
+
+switch (executor.inFields.get("testToRun")) {
+ case "ReadOnly":
+ executor.subject.getTaskKey("ReadOnlyTask").copyTo(executor.selectedTask);
+ break;
+
+ case "EmptyToEmpty":
+ executor.subject.getTaskKey("EmptyToEmptyTask").copyTo(executor.selectedTask);
+ break;
+
+ case "EmptyToDefined":
+ executor.subject.getTaskKey("EmptyToDefinedTask").copyTo(executor.selectedTask);
+ break;
+
+ case "DefinedToEmpty":
+ executor.subject.getTaskKey("DefinedToEmptyTask").copyTo(executor.selectedTask);
+ break;
+
+ case "RemoveProperty":
+ executor.subject.getTaskKey("RemovePropertyTask").copyTo(executor.selectedTask);
+ break;
+
+ case "AddProperty":
+ executor.subject.getTaskKey("AddPropertyTask").copyTo(executor.selectedTask);
+ break;
+
+ default:
+ executor.subject.getTaskKey("ReadOnlyTask").copyTo(executor.selectedTask);
+}
+
+executor.logger.info("Selected Task:" + executor.selectedTask);
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/policy/ExecutionPropertiesTestPolicyModel.apex b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/policy/ExecutionPropertiesTestPolicyModel.apex
new file mode 100644
index 000000000..83af487e5
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/policy/ExecutionPropertiesTestPolicyModel.apex
@@ -0,0 +1,99 @@
+#-------------------------------------------------------------------------------
+# ============LICENSE_START=======================================================
+# Copyright (C) 2019 Nordix Foundation.
+# ================================================================================
+# 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=========================================================
+#-------------------------------------------------------------------------------
+
+model create name=ExecutionPropertiesTestPolicyModel
+
+schema create name=SimpleStringType flavour=Java schema=java.lang.String
+schema create name=SimpleIntegerType flavour=Java schema=java.lang.Integer
+
+event create name=RunTestEvent nameSpace=org.onap.policy.apex.domains.test source=JUNIT target=apex
+event parameter create name=RunTestEvent parName=testToRun schemaName=SimpleStringType
+
+task create name=ReadOnlyTask
+
+task inputfield create name=ReadOnlyTask fieldName=testToRun schemaName=SimpleStringType
+task outputfield create name=ReadOnlyTask fieldName=testToRun schemaName=SimpleStringType
+
+task logic create name=ReadOnlyTask logicFlavour=JAVASCRIPT logic=LS
+#MACROFILE:"src/test/resources/policies/executionproperties/logic/ReadOnlyTask.js"
+LE
+
+task create name=EmptyToEmptyTask
+
+task inputfield create name=EmptyToEmptyTask fieldName=testToRun schemaName=SimpleStringType
+task outputfield create name=EmptyToEmptyTask fieldName=testToRun schemaName=SimpleStringType
+
+task logic create name=EmptyToEmptyTask logicFlavour=JAVASCRIPT logic=LS
+#MACROFILE:"src/test/resources/policies/executionproperties/logic/EmptyToEmptyTask.js"
+LE
+
+task create name=EmptyToDefinedTask
+
+task inputfield create name=EmptyToDefinedTask fieldName=testToRun schemaName=SimpleStringType
+task outputfield create name=EmptyToDefinedTask fieldName=testToRun schemaName=SimpleStringType
+
+task logic create name=EmptyToDefinedTask logicFlavour=JAVASCRIPT logic=LS
+#MACROFILE:"src/test/resources/policies/executionproperties/logic/EmptyToDefinedTask.js"
+LE
+
+task create name=DefinedToEmptyTask
+
+task inputfield create name=DefinedToEmptyTask fieldName=testToRun schemaName=SimpleStringType
+task outputfield create name=DefinedToEmptyTask fieldName=testToRun schemaName=SimpleStringType
+
+task logic create name=DefinedToEmptyTask logicFlavour=JAVASCRIPT logic=LS
+#MACROFILE:"src/test/resources/policies/executionproperties/logic/DefinedToEmptyTask.js"
+LE
+
+task create name=AddPropertyTask
+
+task inputfield create name=AddPropertyTask fieldName=testToRun schemaName=SimpleStringType
+task outputfield create name=AddPropertyTask fieldName=testToRun schemaName=SimpleStringType
+
+task logic create name=AddPropertyTask logicFlavour=JAVASCRIPT logic=LS
+#MACROFILE:"src/test/resources/policies/executionproperties/logic/AddPropertyTask.js"
+LE
+
+task create name=RemovePropertyTask
+
+task inputfield create name=RemovePropertyTask fieldName=testToRun schemaName=SimpleStringType
+task outputfield create name=RemovePropertyTask fieldName=testToRun schemaName=SimpleStringType
+
+task logic create name=RemovePropertyTask logicFlavour=JAVASCRIPT logic=LS
+#MACROFILE:"src/test/resources/policies/executionproperties/logic/RemovePropertyTask.js"
+LE
+
+policy create name=ExecutionPropertiesTestPolicy template=freestyle firstState=RunTestState
+
+policy state create name=ExecutionPropertiesTestPolicy stateName=RunTestState triggerName=RunTestEvent defaultTaskName=ReadOnlyTask
+policy state output create name=ExecutionPropertiesTestPolicy stateName=RunTestState outputName=TestFinalOutput eventName=RunTestEvent
+policy state taskref create name=ExecutionPropertiesTestPolicy stateName=RunTestState taskName=ReadOnlyTask outputType=DIRECT outputName=TestFinalOutput
+policy state taskref create name=ExecutionPropertiesTestPolicy stateName=RunTestState taskName=EmptyToEmptyTask outputType=DIRECT outputName=TestFinalOutput
+policy state taskref create name=ExecutionPropertiesTestPolicy stateName=RunTestState taskName=EmptyToDefinedTask outputType=DIRECT outputName=TestFinalOutput
+policy state taskref create name=ExecutionPropertiesTestPolicy stateName=RunTestState taskName=DefinedToEmptyTask outputType=DIRECT outputName=TestFinalOutput
+policy state taskref create name=ExecutionPropertiesTestPolicy stateName=RunTestState taskName=AddPropertyTask outputType=DIRECT outputName=TestFinalOutput
+policy state taskref create name=ExecutionPropertiesTestPolicy stateName=RunTestState taskName=RemovePropertyTask outputType=DIRECT outputName=TestFinalOutput
+
+policy state selecttasklogic create name=ExecutionPropertiesTestPolicy stateName=RunTestState logicFlavour=JAVASCRIPT logic=LS
+#MACROFILE:"src/test/resources/policies/executionproperties/logic/RunTestStateTSL.js"
+LE
+
+validate
+
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_conf.json b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_conf.json
new file mode 100644
index 000000000..22d1c5b27
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_conf.json
@@ -0,0 +1,48 @@
+{
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 4,
+ "deploymentPort": 12561,
+ "policyModelFileName": "ExecutionPropertiesTestPolicyModel.json",
+ "engineParameters": {
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventInputParameters": {
+ "FirstConsumer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "AddProperty",
+ "propertyFileName": "src/test/resources/testdata/executionproperties/addProperty_in.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ },
+ "eventName": "RunTestEvent"
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "AddProperty",
+ "propertyFileName": "target/addProperty_out.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ }
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_in.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_in.properties
new file mode 100644
index 000000000..80abd320c
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_in.properties
@@ -0,0 +1 @@
+hello=world \ No newline at end of file
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_out_expected.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_out_expected.properties
new file mode 100644
index 000000000..a5680d37b
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_out_expected.properties
@@ -0,0 +1,2 @@
+hello=world
+goodbye=mars \ No newline at end of file
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_conf.json b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_conf.json
new file mode 100644
index 000000000..ec96b5cc4
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_conf.json
@@ -0,0 +1,48 @@
+{
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 4,
+ "deploymentPort": 12561,
+ "policyModelFileName": "ExecutionPropertiesTestPolicyModel.json",
+ "engineParameters": {
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventInputParameters": {
+ "FirstConsumer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "DefinedToEmpty",
+ "propertyFileName": "src/test/resources/testdata/executionproperties/definedToEmpty_in.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ },
+ "eventName": "RunTestEvent"
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "DefinedToEmpty",
+ "propertyFileName": "target/definedToEmpty_out.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ }
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_in.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_in.properties
new file mode 100644
index 000000000..80abd320c
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_in.properties
@@ -0,0 +1 @@
+hello=world \ No newline at end of file
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_out_expected.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_out_expected.properties
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_out_expected.properties
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_conf.json b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_conf.json
new file mode 100644
index 000000000..a2ad6037a
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_conf.json
@@ -0,0 +1,48 @@
+{
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 4,
+ "deploymentPort": 12561,
+ "policyModelFileName": "ExecutionPropertiesTestPolicyModel.json",
+ "engineParameters": {
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventInputParameters": {
+ "FirstConsumer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "EmptyToDefined",
+ "propertyFileName": "src/test/resources/testdata/executionproperties/emptyToDefined_in.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ },
+ "eventName": "RunTestEvent"
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "EmptyToDefined",
+ "propertyFileName": "target/emptyToDefined_out.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ }
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_in.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_in.properties
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_in.properties
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_out_expected.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_out_expected.properties
new file mode 100644
index 000000000..80abd320c
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_out_expected.properties
@@ -0,0 +1 @@
+hello=world \ No newline at end of file
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_conf.json b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_conf.json
new file mode 100644
index 000000000..e5d6d8373
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_conf.json
@@ -0,0 +1,48 @@
+{
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 4,
+ "deploymentPort": 12561,
+ "policyModelFileName": "ExecutionPropertiesTestPolicyModel.json",
+ "engineParameters": {
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventInputParameters": {
+ "FirstConsumer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "EmptyToEmpty",
+ "propertyFileName": "src/test/resources/testdata/executionproperties/emptyToEmpty_in.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ },
+ "eventName": "RunTestEvent"
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "EmptyToEmpty",
+ "propertyFileName": "target/emptyToEmpty_out.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ }
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_in.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_in.properties
new file mode 100644
index 000000000..fe3a0735d
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_in.properties
@@ -0,0 +1 @@
+NULL \ No newline at end of file
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_out_expected.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_out_expected.properties
new file mode 100644
index 000000000..fe3a0735d
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_out_expected.properties
@@ -0,0 +1 @@
+NULL \ No newline at end of file
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_conf.json b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_conf.json
new file mode 100644
index 000000000..723d04450
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_conf.json
@@ -0,0 +1,48 @@
+{
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 4,
+ "deploymentPort": 12561,
+ "policyModelFileName": "ExecutionPropertiesTestPolicyModel.json",
+ "engineParameters": {
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventInputParameters": {
+ "FirstConsumer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "ReadOnly",
+ "propertyFileName": "src/test/resources/testdata/executionproperties/readOnly_in.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ },
+ "eventName": "RunTestEvent"
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "ReadOnly",
+ "propertyFileName": "target/readOnly_out.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ }
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_in.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_in.properties
new file mode 100644
index 000000000..80abd320c
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_in.properties
@@ -0,0 +1 @@
+hello=world \ No newline at end of file
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_out_expected.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_out_expected.properties
new file mode 100644
index 000000000..80abd320c
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_out_expected.properties
@@ -0,0 +1 @@
+hello=world \ No newline at end of file
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_conf.json b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_conf.json
new file mode 100644
index 000000000..fb4db38fc
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_conf.json
@@ -0,0 +1,48 @@
+{
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 4,
+ "deploymentPort": 12561,
+ "policyModelFileName": "ExecutionPropertiesTestPolicyModel.json",
+ "engineParameters": {
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventInputParameters": {
+ "FirstConsumer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "RemoveProperty",
+ "propertyFileName": "src/test/resources/testdata/executionproperties/removeProperty_in.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ },
+ "eventName": "RunTestEvent"
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "DUMMY",
+ "parameterClassName": "org.onap.policy.apex.testsuites.integration.uservice.executionproperties.DummyCarrierTechnologyParameters",
+ "parameters": {
+ "testToRun": "RemoveProperty",
+ "propertyFileName": "target/removeProperty_out.properties"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ }
+}
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_in.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_in.properties
new file mode 100644
index 000000000..a5680d37b
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_in.properties
@@ -0,0 +1,2 @@
+hello=world
+goodbye=mars \ No newline at end of file
diff --git a/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_out_expected.properties b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_out_expected.properties
new file mode 100644
index 000000000..9f7fe9821
--- /dev/null
+++ b/testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_out_expected.properties
@@ -0,0 +1 @@
+goodbye=mars \ No newline at end of file