aboutsummaryrefslogtreecommitdiffstats
path: root/testsuites/integration/integration-uservice-test/src/test/java
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/src/test/java
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/src/test/java')
-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
5 files changed, 562 insertions, 0 deletions
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);
+ }
+}