From adf67497761295115dc75b525500d687518fc4fd Mon Sep 17 00:00:00 2001 From: liamfallon Date: Wed, 10 Jul 2019 19:44:39 +0000 Subject: 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 --- .../integration/integration-uservice-test/pom.xml | 14 +- .../DummyApexEventConsumer.java | 136 +++++++++++++++++++ .../DummyApexEventProducer.java | 145 +++++++++++++++++++++ .../DummyCarrierTechnologyParameters.java | 88 +++++++++++++ .../uservice/executionproperties/RunTestEvent.java | 53 ++++++++ .../TestExecutionProperties.java | 140 ++++++++++++++++++++ .../executionproperties/logic/AddPropertyTask.js | 34 +++++ .../logic/DefinedToEmptyTask.js | 34 +++++ .../logic/EmptyToDefinedTask.js | 34 +++++ .../executionproperties/logic/EmptyToEmptyTask.js | 28 ++++ .../executionproperties/logic/ReadOnlyTask.js | 28 ++++ .../logic/RemovePropertyTask.js | 34 +++++ .../executionproperties/logic/RunTestStateTSL.js | 57 ++++++++ .../policy/ExecutionPropertiesTestPolicyModel.apex | 99 ++++++++++++++ .../executionproperties/addProperty_conf.json | 48 +++++++ .../executionproperties/addProperty_in.properties | 1 + .../addProperty_out_expected.properties | 2 + .../executionproperties/definedToEmpty_conf.json | 48 +++++++ .../definedToEmpty_in.properties | 1 + .../definedToEmpty_out_expected.properties | 0 .../executionproperties/emptyToDefined_conf.json | 48 +++++++ .../emptyToDefined_in.properties | 0 .../emptyToDefined_out_expected.properties | 1 + .../executionproperties/emptyToEmpty_conf.json | 48 +++++++ .../executionproperties/emptyToEmpty_in.properties | 1 + .../emptyToEmpty_out_expected.properties | 1 + .../executionproperties/readOnly_conf.json | 48 +++++++ .../executionproperties/readOnly_in.properties | 1 + .../readOnly_out_expected.properties | 1 + .../executionproperties/removeProperty_conf.json | 48 +++++++ .../removeProperty_in.properties | 2 + .../removeProperty_out_expected.properties | 1 + 32 files changed, 1221 insertions(+), 3 deletions(-) create mode 100644 testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyApexEventConsumer.java create mode 100644 testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyApexEventProducer.java create mode 100644 testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/DummyCarrierTechnologyParameters.java create mode 100644 testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/RunTestEvent.java create mode 100644 testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/executionproperties/TestExecutionProperties.java create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/AddPropertyTask.js create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/DefinedToEmptyTask.js create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/EmptyToDefinedTask.js create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/EmptyToEmptyTask.js create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/ReadOnlyTask.js create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/RemovePropertyTask.js create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/logic/RunTestStateTSL.js create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/policies/executionproperties/policy/ExecutionPropertiesTestPolicyModel.apex create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_conf.json create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_in.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/addProperty_out_expected.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_conf.json create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_in.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/definedToEmpty_out_expected.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_conf.json create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_in.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToDefined_out_expected.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_conf.json create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_in.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/emptyToEmpty_out_expected.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_conf.json create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_in.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/readOnly_out_expected.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_conf.json create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_in.properties create mode 100644 testsuites/integration/integration-uservice-test/src/test/resources/testdata/executionproperties/removeProperty_out_expected.properties (limited to 'testsuites') 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========================================================= --> - + 4.0.0 org.onap.policy.apex-pdp.testsuites.integration @@ -138,7 +139,7 @@ kafka_2.12 ${version.kafka} test - + org.apache.zookeeper @@ -182,6 +183,13 @@ ${version.jersey} test + + org.awaitility + awaitility + 3.0.0 + test + + org.glassfish.jersey.containers jersey-container-servlet-core @@ -236,7 +244,7 @@ - + only-eclipse 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 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 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. + * + *

The parameters for this plugin are: + *

    + *
  1. testToRun: The name of the test to run. + *
+ */ +@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 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 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 -- cgit 1.2.3-korg