aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwaqas.ikram <waqas.ikram@ericsson.com>2018-07-10 11:52:12 +0100
committerwaqas.ikram <waqas.ikram@ericsson.com>2018-07-10 13:49:59 +0100
commit6bf1aa0b408e0e4201d9002ca5c13095b98e7e46 (patch)
treed626d687d8e797ac62f4e366866e807ba1321b90
parent678fa2fdf50d1d6b97ef3dea1bdaf6302d3839f4 (diff)
Adding executor integration tests
Change-Id: I292315164fbfb3650f6d21ede6edb264a7fd8ee3 Issue-ID: POLICY-865 Signed-off-by: waqas.ikram <waqas.ikram@ericsson.com>
-rw-r--r--context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/locking/ConcurrentContext.java2
-rw-r--r--context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/locking/ConcurrentContextJVM.java2
-rw-r--r--context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/utils/Constants.java9
-rw-r--r--plugins/plugins-executor/plugins-executor-jruby/pom.xml4
-rw-r--r--plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutor.java10
-rw-r--r--plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutor.java10
-rw-r--r--testsuites/integration/integration-executor-test/pom.xml89
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexActionListener.java101
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngine.java129
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJRuby.java47
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJava.java52
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJavascript.java47
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJython.java47
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineMVEL.java47
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/event/TestEventInstantiation.java188
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexModelExport.java114
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexPolicyModelAnalysis.java38
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyCreateModelFiles.java73
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyDBWrite.java59
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyModel.java81
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyModelCreator.java61
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestContextUpdateDifferentModels.java102
-rw-r--r--testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestContextUpdateModel.java158
-rw-r--r--testsuites/integration/integration-executor-test/src/test/resources/META-INF/persistence.xml69
-rw-r--r--testsuites/integration/integration-executor-test/src/test/resources/logback-test.xml78
-rw-r--r--testsuites/integration/pom.xml3
26 files changed, 1606 insertions, 14 deletions
diff --git a/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/locking/ConcurrentContext.java b/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/locking/ConcurrentContext.java
index a400bc79a..b62364e9d 100644
--- a/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/locking/ConcurrentContext.java
+++ b/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/locking/ConcurrentContext.java
@@ -113,6 +113,8 @@ public class ConcurrentContext {
executorService.awaitTermination(10, TimeUnit.MINUTES);
} catch (final InterruptedException interruptedException) {
LOGGER.error("Exception while waiting for threads to finish", interruptedException);
+ // restore the interrupt status
+ Thread.currentThread().interrupt();
}
LOGGER.info("Shutting down now ...");
diff --git a/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/locking/ConcurrentContextJVM.java b/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/locking/ConcurrentContextJVM.java
index b76b00840..e2a6b0da0 100644
--- a/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/locking/ConcurrentContextJVM.java
+++ b/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/locking/ConcurrentContextJVM.java
@@ -119,6 +119,8 @@ public final class ConcurrentContextJVM {
executorService.awaitTermination(10, TimeUnit.MINUTES);
} catch (final InterruptedException interruptedException) {
LOGGER.error("Exception while waiting for threads to finish", interruptedException);
+ // restore the interrupt status
+ Thread.currentThread().interrupt();
}
LOGGER.debug("threads finished, end value is {}", lTypeAlbum.get("testValue"));
diff --git a/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/utils/Constants.java b/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/utils/Constants.java
index ac1e951d5..2bf304ec8 100644
--- a/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/utils/Constants.java
+++ b/context/context-test-utils/src/main/java/org/onap/policy/apex/context/test/utils/Constants.java
@@ -17,6 +17,7 @@
* SPDX-License-Identifier: Apache-2.0
* ============LICENSE_END=========================================================
*/
+
package org.onap.policy.apex.context.test.utils;
import java.util.TimeZone;
@@ -51,8 +52,12 @@ public class Constants {
public static final String TEST_POLICY_CONTEXT_ITEM = TestPolicyContextItem.class.getName();
public static final TimeZone TIME_ZONE = TimeZone.getTimeZone("Europe/Dublin");
- public static AxArtifactKey[] USED_ARTIFACT_STACK_ARRAY = {new AxArtifactKey("testC-top", VERSION),
- new AxArtifactKey("testC-next", VERSION), new AxArtifactKey("testC-bot", VERSION)};
+ private static final AxArtifactKey KEY = new AxArtifactKey("testC-top", VERSION);
+ private static final AxArtifactKey KEY3 = new AxArtifactKey("testC-bot", VERSION);
+ private static final AxArtifactKey KEY2 = new AxArtifactKey("testC-next", VERSION);
+
+ private static final AxArtifactKey[] AX_ARTIFACT_KEYS = {KEY, KEY2, KEY3};
+ public static final AxArtifactKey[] USED_ARTIFACT_STACK_ARRAY = AX_ARTIFACT_KEYS;
private Constants() {}
diff --git a/plugins/plugins-executor/plugins-executor-jruby/pom.xml b/plugins/plugins-executor/plugins-executor-jruby/pom.xml
index fbe924aaa..901d30e9f 100644
--- a/plugins/plugins-executor/plugins-executor-jruby/pom.xml
+++ b/plugins/plugins-executor/plugins-executor-jruby/pom.xml
@@ -41,10 +41,6 @@
<version>9.1.2.0</version>
<exclusions>
<exclusion>
- <groupId>org.jruby.extras</groupId>
- <artifactId>bytelist</artifactId>
- </exclusion>
- <exclusion>
<groupId>org.jruby</groupId>
<artifactId>dirgra</artifactId>
</exclusion>
diff --git a/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutor.java b/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutor.java
index b0dd9c5c9..71dce5801 100644
--- a/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutor.java
+++ b/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutor.java
@@ -26,6 +26,7 @@ import org.onap.policy.apex.context.ContextException;
import org.onap.policy.apex.core.engine.executor.TaskExecutor;
import org.onap.policy.apex.core.engine.executor.exception.StateMachineException;
import org.python.core.CompileMode;
+import org.python.core.CompilerFlags;
import org.python.core.Py;
import org.python.core.PyCode;
import org.python.core.PyException;
@@ -34,8 +35,8 @@ import org.slf4j.ext.XLogger;
import org.slf4j.ext.XLoggerFactory;
/**
- * The Class JythonTaskExecutor is the task executor for task logic written in Jython It is unlikely that this is thread
- * safe.
+ * The Class JythonTaskExecutor is the task executor for task logic written in Jython It is unlikely
+ * that this is thread safe.
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
@@ -61,8 +62,9 @@ public class JythonTaskExecutor extends TaskExecutor {
super.prepare();
try {
synchronized (Py.class) {
- compiled = Py.compile_flags(getSubject().getTaskLogic().getLogic(),
- "<" + getSubject().getKey().toString() + ">", CompileMode.exec, null);
+ final String logic = getSubject().getTaskLogic().getLogic();
+ final String filename = "<" + getSubject().getKey().toString() + ">";
+ compiled = Py.compile_flags(logic, filename, CompileMode.exec, new CompilerFlags());
}
} catch (final PyException e) {
LOGGER.warn("failed to compile Jython code for task " + getSubject().getKey().getID(), e);
diff --git a/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutor.java b/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutor.java
index 4fd48f2e7..d28001d87 100644
--- a/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutor.java
+++ b/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutor.java
@@ -26,6 +26,7 @@ import org.onap.policy.apex.core.engine.executor.TaskSelectExecutor;
import org.onap.policy.apex.core.engine.executor.exception.StateMachineException;
import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
import org.python.core.CompileMode;
+import org.python.core.CompilerFlags;
import org.python.core.Py;
import org.python.core.PyCode;
import org.python.core.PyException;
@@ -34,8 +35,8 @@ import org.slf4j.ext.XLogger;
import org.slf4j.ext.XLoggerFactory;
/**
- * The Class JythonTaskSelectExecutor is the task selection executor for task selection logic written in Jython It is
- * unlikely that this is thread safe.
+ * The Class JythonTaskSelectExecutor is the task selection executor for task selection logic
+ * written in Jython It is unlikely that this is thread safe.
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
@@ -60,8 +61,9 @@ public class JythonTaskSelectExecutor extends TaskSelectExecutor {
super.prepare();
try {
synchronized (Py.class) {
- compiled = Py.compile_flags(getSubject().getTaskSelectionLogic().getLogic(),
- "<" + getSubject().getKey().toString() + ">", CompileMode.exec, null);
+ final String logic = getSubject().getTaskSelectionLogic().getLogic();
+ final String filename = "<" + getSubject().getKey().toString() + ">";
+ compiled = Py.compile_flags(logic, filename, CompileMode.exec, new CompilerFlags());
}
} catch (final PyException e) {
LOGGER.warn("failed to compile Jython code for task selection logic in " + getSubject().getKey().getID(),
diff --git a/testsuites/integration/integration-executor-test/pom.xml b/testsuites/integration/integration-executor-test/pom.xml
new file mode 100644
index 000000000..d064f6373
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/pom.xml
@@ -0,0 +1,89 @@
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 2018 Ericsson. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ SPDX-License-Identifier: Apache-2.0
+ ============LICENSE_END=========================================================
+-->
+
+<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>
+ <artifactId>integration</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>integration-executor-test</artifactId>
+ <name>${project.artifactId}</name>
+ <description>[${project.parent.artifactId}] module to run executor tests using various executor script plugins</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.policy.apex-pdp.core</groupId>
+ <artifactId>core-infrastructure</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.apex-pdp.context</groupId>
+ <artifactId>context-test-utils</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.apex-pdp.testsuites.integration</groupId>
+ <artifactId>integration-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.apex-pdp.plugins.plugins-executor</groupId>
+ <artifactId>plugins-executor-mvel</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.apex-pdp.plugins.plugins-executor</groupId>
+ <artifactId>plugins-executor-jruby</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.apex-pdp.plugins.plugins-executor</groupId>
+ <artifactId>plugins-executor-jython</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.apex-pdp.plugins.plugins-executor</groupId>
+ <artifactId>plugins-executor-javascript</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.apex-pdp.plugins.plugins-executor</groupId>
+ <artifactId>plugins-executor-java</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>${version.derby}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexActionListener.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexActionListener.java
new file mode 100644
index 000000000..fa79843e9
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexActionListener.java
@@ -0,0 +1,101 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.engine;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.onap.policy.apex.core.engine.engine.EnEventListener;
+import org.onap.policy.apex.core.engine.event.EnEvent;
+import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+/**
+ * The listener interface for receiving testApexAction events. The class that is interested in
+ * processing a testApexAction event implements this interface, and the object created with that
+ * class is registered with a component using the component's <code>addTestApexActionListener</code>
+ * method. When the testApexAction event occurs, that object's appropriate method is invoked.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public class TestApexActionListener implements EnEventListener {
+ private static final XLogger logger = XLoggerFactory.getXLogger(TestApexActionListener.class);
+
+ private List<EnEvent> resultEvents = new ArrayList<>();
+
+ private final String id;
+
+ /**
+ * Instantiates a new test apex action listener.
+ *
+ * @param id the id
+ */
+ public TestApexActionListener(final String id) {
+ this.id = id;
+ }
+
+ /**
+ * Gets the result.
+ *
+ * @param allowNulls if true and the returned event is null, then return, otherwise wait until
+ * an event is returned.
+ * @return the result
+ */
+ public EnEvent getResult(final boolean allowNulls) {
+ EnEvent result = null;
+ while (true) {
+ while (resultEvents.isEmpty()) {
+ ThreadUtilities.sleep(100);
+ }
+ result = resultEvents.remove(0);
+ if (result != null || allowNulls) {
+ break;
+ }
+ }
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.onap.policy.apex.core.engine.engine.EnEventListener#onEnEvent(org.onap.policy.apex.core.
+ * engine.event.EnEvent)
+ */
+ @Override
+ public void onEnEvent(final EnEvent actionEvent) {
+ ThreadUtilities.sleep(100);
+ if (actionEvent != null) {
+ logger.info("Action event from engine: {}", actionEvent.getName());
+ }
+ resultEvents.add(actionEvent);
+ }
+
+ /**
+ * Gets the id.
+ *
+ * @return the id
+ */
+ public String getId() {
+ return id;
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngine.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngine.java
new file mode 100644
index 000000000..b087552eb
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngine.java
@@ -0,0 +1,129 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.engine;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.onap.policy.apex.core.engine.EngineParameters;
+import org.onap.policy.apex.core.engine.engine.ApexEngine;
+import org.onap.policy.apex.core.engine.engine.impl.ApexEngineFactory;
+import org.onap.policy.apex.core.engine.event.EnEvent;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.apex.test.common.model.SampleDomainModelFactory;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+public class TestApexEngine {
+ // Logger for this class
+ private static final XLogger logger = XLoggerFactory.getXLogger(TestApexEngine.class);
+
+ /**
+ * Instantiates a new test apex engine.
+ *
+ * @param axLogicExecutorType the type of logic executor to use to construct the sample policy
+ * model for this test
+ * @throws ApexException the apex exception
+ * @throws InterruptedException the interrupted exception
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ public TestApexEngine(final String axLogicExecutorType, final EngineParameters parameters)
+ throws ApexException, InterruptedException, IOException {
+ logger.debug("Running TestApexEngine test for + " + axLogicExecutorType + "logic . . .");
+
+ final AxPolicyModel apexPolicyModel = new SampleDomainModelFactory().getSamplePolicyModel(axLogicExecutorType);
+ assertNotNull(apexPolicyModel);
+ final AxArtifactKey key = new AxArtifactKey("TestApexEngine", "0.0.1");
+
+ final ApexEngine apexEngine = new ApexEngineFactory().createApexEngine(key);
+ final TestApexActionListener listener = new TestApexActionListener("Test");
+ apexEngine.addEventListener("listener", listener);
+ apexEngine.updateModel(apexPolicyModel);
+ apexEngine.start();
+
+ for (final AxEvent axEvent : apexPolicyModel.getEvents().getEventMap().values()) {
+ final EnEvent event = apexEngine.createEvent(axEvent.getKey());
+
+ final Date aDate = new Date(1433453067123L);
+ final Map<String, Object> eventDataMap = new HashMap<String, Object>();
+ eventDataMap.put("TestSlogan", "This is a test slogan for event " + event.getName());
+ eventDataMap.put("TestMatchCase", new Byte((byte) 123));
+ eventDataMap.put("TestTimestamp", aDate.getTime());
+ eventDataMap.put("TestTemperature", 34.5445667);
+
+ event.putAll(eventDataMap);
+
+ apexEngine.handleEvent(event);
+ }
+
+ EnEvent result = listener.getResult(false);
+ logger.debug("result 1 is:" + result);
+ checkResult(result);
+ result = listener.getResult(false);
+ logger.debug("result 2 is:" + result);
+ checkResult(result);
+
+ final Map<AxArtifactKey, Map<String, Object>> apexContext = apexEngine.getEngineContext();
+ assertNotNull(apexContext);
+ apexEngine.stop();
+ }
+
+ /**
+ * Check result.
+ *
+ * @param result the result
+ */
+ private void checkResult(final EnEvent result) {
+ if (result.getExceptionMessage() == null) {
+ assertTrue(result.getName().equals("Event0004") || result.getName().equals("Event0104"));
+
+ assertTrue(((String) result.get("TestSlogan")).startsWith("This is a test slogan for event "));
+ assertTrue(((String) result.get("TestSlogan")).contains(result.getName().substring(0, 8)));
+
+ assertEquals((byte) 123, result.get("TestMatchCase"));
+ assertEquals(34.5445667, result.get("TestTemperature"));
+ assertTrue(
+ (Byte) result.get("TestMatchCaseSelected") >= 0 && (Byte) result.get("TestMatchCaseSelected") <= 4);
+ assertTrue((Byte) result.get("TestEstablishCaseSelected") >= 0
+ && (Byte) result.get("TestEstablishCaseSelected") <= 4);
+ assertTrue((Byte) result.get("TestDecideCaseSelected") >= 0
+ && (Byte) result.get("TestDecideCaseSelected") <= 4);
+ assertTrue((Byte) result.get("TestActCaseSelected") >= 0 && (Byte) result.get("TestActCaseSelected") <= 4);
+ } else {
+ assertTrue(result.getName().equals("Event0001") || result.getName().equals("Event0104"));
+
+ assertTrue(((String) result.get("TestSlogan")).startsWith("This is a test slogan for event "));
+ assertTrue(((String) result.get("TestSlogan")).contains(result.getName().substring(0, 8)));
+
+ assertEquals((byte) 123, result.get("TestMatchCase"));
+ assertEquals(34.5445667, result.get("TestTemperature"));
+ }
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJRuby.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJRuby.java
new file mode 100644
index 000000000..8b1cc0b04
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJRuby.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.engine;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.policy.apex.core.engine.EngineParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.plugins.executor.jruby.JrubyExecutorParameters;
+
+public class TestApexEngineJRuby {
+
+ /**
+ * Test apex engine.
+ *
+ * @throws ApexException the apex exception
+ * @throws InterruptedException the interrupted exception
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ @Test
+ public void testApexEngineJRuby() throws ApexException, InterruptedException, IOException {
+ final EngineParameters parameters = new EngineParameters();
+ parameters.getExecutorParameterMap().put("JRUBY", new JrubyExecutorParameters());
+
+ new TestApexEngine("JRUBY", parameters);
+ new TestApexEngine("JRUBY", parameters);
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJava.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJava.java
new file mode 100644
index 000000000..44593a0a2
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJava.java
@@ -0,0 +1,52 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.engine;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.policy.apex.core.engine.EngineParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.plugins.executor.java.JavaExecutorParameters;
+
+/**
+ * The Class TestApexEngine_Java.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public class TestApexEngineJava {
+
+ /**
+ * Test apex engine.
+ *
+ * @throws InterruptedException the interrupted exception
+ * @throws IOException Signals that an I/O exception has occurred.
+ * @throws ApexException the apex exception
+ */
+ @Test
+ public void testApexEngineJava() throws InterruptedException, IOException, ApexException {
+ final EngineParameters parameters = new EngineParameters();
+ parameters.getExecutorParameterMap().put("JAVA", new JavaExecutorParameters());
+
+ new TestApexEngine("JAVA", parameters);
+ new TestApexEngine("JAVA", parameters);
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJavascript.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJavascript.java
new file mode 100644
index 000000000..1f55f8458
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJavascript.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.engine;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.policy.apex.core.engine.EngineParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters;
+
+public class TestApexEngineJavascript {
+
+ /**
+ * Test apex engine.
+ *
+ * @throws ApexException the apex exception
+ * @throws InterruptedException the interrupted exception
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ @Test
+ public void testApexEngineJavascript() throws ApexException, InterruptedException, IOException {
+ final EngineParameters parameters = new EngineParameters();
+ parameters.getExecutorParameterMap().put("JAVASCRIPT", new JavascriptExecutorParameters());
+
+ new TestApexEngine("JAVASCRIPT", parameters);
+ new TestApexEngine("JAVASCRIPT", parameters);
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJython.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJython.java
new file mode 100644
index 000000000..eabe63dfb
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineJython.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.engine;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.policy.apex.core.engine.EngineParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.plugins.executor.jython.JythonExecutorParameters;
+
+public class TestApexEngineJython {
+
+ /**
+ * Test apex engine.
+ *
+ * @throws ApexException the apex exception
+ * @throws InterruptedException the interrupted exception
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ @Test
+ public void testApexEngineJython() throws ApexException, InterruptedException, IOException {
+ final EngineParameters parameters = new EngineParameters();
+ parameters.getExecutorParameterMap().put("JYTHON", new JythonExecutorParameters());
+
+ new TestApexEngine("JYTHON", parameters);
+ new TestApexEngine("JYTHON", parameters);
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineMVEL.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineMVEL.java
new file mode 100644
index 000000000..aea7cecc6
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/engine/TestApexEngineMVEL.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.engine;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.policy.apex.core.engine.EngineParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.plugins.executor.mvel.MVELExecutorParameters;
+
+public class TestApexEngineMVEL {
+
+ /**
+ * Test apex engine.
+ *
+ * @throws ApexException the apex exception
+ * @throws InterruptedException the interrupted exception
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ @Test
+ public void testApexEngineMVEL() throws ApexException, InterruptedException, IOException {
+ final EngineParameters parameters = new EngineParameters();
+ parameters.getExecutorParameterMap().put("MVEL", new MVELExecutorParameters());
+
+ new TestApexEngine("MVEL", parameters);
+ new TestApexEngine("MVEL", parameters);
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/event/TestEventInstantiation.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/event/TestEventInstantiation.java
new file mode 100644
index 000000000..0ed78a13f
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/event/TestEventInstantiation.java
@@ -0,0 +1,188 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.event;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+import org.onap.policy.apex.core.engine.EngineParameters;
+import org.onap.policy.apex.core.engine.engine.ApexEngine;
+import org.onap.policy.apex.core.engine.engine.impl.ApexEngineFactory;
+import org.onap.policy.apex.core.engine.event.EnEvent;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.handling.ApexModelException;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.apex.plugins.executor.mvel.MVELExecutorParameters;
+import org.onap.policy.apex.test.common.model.SampleDomainModelFactory;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+/**
+ * The Class TestEventInstantiation.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public class TestEventInstantiation {
+ // Logger for this class
+ private static final XLogger logger = XLoggerFactory.getXLogger(TestEventInstantiation.class);
+
+ /**
+ * Test event instantiation.
+ *
+ * @throws ApexModelException on errors in handling Apex models
+ * @throws IOException Signals that an I/O exception has occurred.
+ * @throws ApexException the apex exception
+ */
+ @Test
+ public void testEventInstantiation() throws ApexModelException, IOException, ApexException {
+ final String xmlFileName = "xml/ApexModel_MVEL.xml";
+
+ logger.debug("Running TestEventInstantiation test on file {} . . .", xmlFileName);
+
+ final AxPolicyModel apexPolicyModel = new SampleDomainModelFactory().getSamplePolicyModel("MVEL");
+ assertNotNull(apexPolicyModel);
+
+ final EngineParameters parameters = new EngineParameters();
+ parameters.getExecutorParameterMap().put("MVEL", new MVELExecutorParameters());
+
+ final ApexEngine apexEngine = new ApexEngineFactory().createApexEngine(apexPolicyModel.getKey());
+ apexEngine.updateModel(apexPolicyModel);
+ apexEngine.start();
+
+ final EnEvent event = apexEngine.createEvent(new AxArtifactKey("Event0000", "0.0.1"));
+
+ Object slogan1 = event.put("TestSlogan", "This is a slogan");
+ assertNull(slogan1);
+ slogan1 = event.get("TestSlogan");
+ assertNotNull(slogan1);
+ assertEquals("This is a slogan", slogan1);
+
+ Object mc1 = event.put("TestMatchCase", new Byte("4"));
+ assertNull(mc1);
+ mc1 = event.get("TestMatchCase");
+ assertNotNull(mc1);
+ assertEquals((byte) 4, mc1);
+
+ Object mc2 = event.put("TestMatchCase", new Byte("16"));
+ assertNotNull(mc2);
+ assertEquals((byte) 4, mc2);
+ mc2 = event.get("TestMatchCase");
+ assertNotNull(mc2);
+ assertEquals((byte) 16, mc2);
+
+ final Date timeNow = new Date();
+ Object timestamp1 = event.put("TestTimestamp", timeNow.getTime());
+ assertNull(timestamp1);
+ timestamp1 = event.get("TestTimestamp");
+ assertNotNull(timestamp1);
+ assertEquals(timeNow.getTime(), timestamp1);
+
+ final double temperature = 123.456789;
+ Object temp1 = event.put("TestTemperature", temperature);
+ assertNull(temp1);
+ temp1 = event.get("TestTemperature");
+ assertNotNull(temp1);
+ assertEquals(temperature, temp1);
+
+ Object value = event.put("TestMatchCase", null);
+ assertEquals(16, ((Byte) value).intValue());
+ value = event.get("TestMatchCase");
+ assertNull(value);
+
+ try {
+ event.put("TestMatchCase", "Hello");
+ } catch (final Exception e) {
+ assertEquals(
+ "Event0000:0.0.1:NULL:TestMatchCase: object \"Hello\" of class \"java.lang.String\" not compatible with class \"java.lang.Byte\"",
+ e.getMessage());
+ }
+
+ try {
+ event.put("TestMatchCase", 123.45);
+ } catch (final Exception e) {
+ assertEquals(
+ "Event0000:0.0.1:NULL:TestMatchCase: object \"123.45\" of class \"java.lang.Double\" not compatible with class \"java.lang.Byte\"",
+ e.getMessage());
+ }
+
+ event.put("TestMatchCase", new Byte("16"));
+
+ final String slogan2 = (String) event.get("TestSlogan");
+ assertNotNull(slogan2);
+ assertEquals("This is a slogan", slogan2);
+
+ final byte mc21 = (byte) event.get("TestMatchCase");
+ assertNotNull(mc21);
+ assertEquals(16, mc21);
+
+ final byte mc22 = (byte) event.get("TestMatchCase");
+ assertNotNull(mc22);
+ assertEquals((byte) 16, mc22);
+
+ final long timestamp2 = (Long) event.get("TestTimestamp");
+ assertNotNull(timestamp2);
+ assertEquals(timestamp2, timestamp1);
+
+ final double temp2 = (double) event.get("TestTemperature");
+ assertNotNull(temp2);
+ assertTrue(temp2 == 123.456789);
+
+ final Double temp3 = (Double) event.get("TestTemperature");
+ assertNotNull(temp3);
+ assertTrue(temp3 == 123.456789);
+
+ final Date aDate = new Date(1433453067123L);
+ final Map<String, Object> eventDataList = new HashMap<String, Object>();
+ eventDataList.put("TestSlogan", "This is a test slogan");
+ eventDataList.put("TestMatchCase", new Byte("123"));
+ eventDataList.put("TestTimestamp", aDate.getTime());
+ eventDataList.put("TestTemperature", 34.5445667);
+
+ event.putAll(eventDataList);
+
+ final String slogan3 = (String) event.get("TestSlogan");
+ assertNotNull(slogan3);
+ assertEquals("This is a test slogan", slogan3);
+
+ final byte mc31 = (byte) event.get("TestMatchCase");
+ assertNotNull(mc31);
+ assertEquals((byte) 123, mc31);
+
+ final long timestamp3 = (Long) event.get("TestTimestamp");
+ assertNotNull(timestamp3);
+ assertEquals(timestamp3, aDate.getTime());
+
+ final double temp4 = (double) event.get("TestTemperature");
+ assertNotNull(temp4);
+ assertTrue(temp4 == 34.5445667);
+
+ logger.debug(event.toString());
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexModelExport.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexModelExport.java
new file mode 100644
index 000000000..6b72faa8f
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexModelExport.java
@@ -0,0 +1,114 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.handling;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.apex.model.policymodel.handling.PolicyModelSplitter;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+/**
+ * The Class TestApexModelReader tests Apex model reading.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public class TestApexModelExport {
+ private static final XLogger logger = XLoggerFactory.getXLogger(TestApexModelExport.class);
+
+ private AxPolicyModel model = null;
+
+ @Before
+ public void initApexModelSmall() throws ApexException {
+ model = new TestApexSamplePolicyModelCreator("MVEL").getModel();
+ }
+
+ @Test
+ public void testApexModelExport() throws Exception {
+ logger.info("Starting test: testApexModelExport");
+
+ final List<AxArtifactKey> exportPolicyList = new ArrayList<AxArtifactKey>();
+ exportPolicyList.addAll(model.getPolicies().getPolicyMap().keySet());
+
+ final AxPolicyModel exportedModel0 = PolicyModelSplitter.getSubPolicyModel(model, exportPolicyList);
+
+ // Remove unused schemas and their keys
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem000", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem001", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem002", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem003", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem004", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem005", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem006", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem007", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem008", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem009", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem00A", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem00B", "0.0.1"));
+ model.getSchemas().getSchemasMap().remove(new AxArtifactKey("TestContextItem00C", "0.0.1"));
+
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem000", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem001", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem002", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem003", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem004", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem005", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem006", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem007", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem008", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem009", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem00A", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem00B", "0.0.1"));
+ model.getKeyInformation().getKeyInfoMap().remove(new AxArtifactKey("TestContextItem00C", "0.0.1"));
+
+ assertTrue(model.equals(exportedModel0));
+
+ exportPolicyList.remove(0);
+
+ final AxPolicyModel exportedModel1 = PolicyModelSplitter.getSubPolicyModel(model, exportPolicyList);
+ assertFalse(model.equals(exportedModel1));
+ assertTrue(model.getPolicies().get("Policy1").equals(exportedModel1.getPolicies().get("Policy1")));
+
+ exportPolicyList.clear();
+ exportPolicyList.add(new AxArtifactKey("NonExistentPolicy", "0.0.1"));
+
+ try {
+ final AxPolicyModel emptyExportedModel = PolicyModelSplitter.getSubPolicyModel(model, exportPolicyList);
+ assertNotNull(emptyExportedModel);
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .equals("new model is invalid:\n" + "***validation of model failed***\n"
+ + "AxPolicies:Policies:0.0.1 - policyMap may not be null or empty\n"
+ + "AxEvents:Events:0.0.1 - eventMap may not be null or empty\n"
+ + "********************************"));
+ }
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexPolicyModelAnalysis.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexPolicyModelAnalysis.java
new file mode 100644
index 000000000..91153d698
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexPolicyModelAnalysis.java
@@ -0,0 +1,38 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.handling;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.apex.model.policymodel.handling.PolicyAnalyser;
+import org.onap.policy.apex.model.policymodel.handling.PolicyAnalysisResult;
+
+public class TestApexPolicyModelAnalysis {
+ @Test
+ public void testApexPolicyModelAnalysis() throws Exception {
+ final AxPolicyModel model = new TestApexSamplePolicyModelCreator("MVEL").getModel();
+ final PolicyAnalysisResult result = new PolicyAnalyser().analyse(model);
+
+ assertNotNull(result);
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyCreateModelFiles.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyCreateModelFiles.java
new file mode 100644
index 000000000..8113436ca
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyCreateModelFiles.java
@@ -0,0 +1,73 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.handling;
+
+import org.junit.Test;
+import org.onap.policy.apex.model.basicmodel.test.TestApexModel;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+
+public class TestApexSamplePolicyCreateModelFiles {
+ @Test
+ public void testModelWriteReadJava() throws Exception {
+ final TestApexSamplePolicyModelCreator apexPolicyModelCreator = new TestApexSamplePolicyModelCreator("JAVA");
+ final TestApexModel<AxPolicyModel> testApexPolicyModel =
+ new TestApexModel<AxPolicyModel>(AxPolicyModel.class, apexPolicyModelCreator);
+ testApexPolicyModel.testApexModelWriteReadXML();
+ testApexPolicyModel.testApexModelWriteReadJSON();
+ }
+
+ @Test
+ public void testModelWriteReadJavascript() throws Exception {
+ final TestApexSamplePolicyModelCreator apexPolicyModelCreator =
+ new TestApexSamplePolicyModelCreator("JAVASCRIPT");
+ final TestApexModel<AxPolicyModel> testApexPolicyModel =
+ new TestApexModel<AxPolicyModel>(AxPolicyModel.class, apexPolicyModelCreator);
+ testApexPolicyModel.testApexModelWriteReadXML();
+ testApexPolicyModel.testApexModelWriteReadJSON();
+ }
+
+ @Test
+ public void testModelWriteReadJRuby() throws Exception {
+ final TestApexSamplePolicyModelCreator apexPolicyModelCreator = new TestApexSamplePolicyModelCreator("JRUBY");
+ final TestApexModel<AxPolicyModel> testApexPolicyModel =
+ new TestApexModel<AxPolicyModel>(AxPolicyModel.class, apexPolicyModelCreator);
+ testApexPolicyModel.testApexModelWriteReadXML();
+ testApexPolicyModel.testApexModelWriteReadJSON();
+ }
+
+ @Test
+ public void testModelWriteReadJython() throws Exception {
+ final TestApexSamplePolicyModelCreator apexPolicyModelCreator = new TestApexSamplePolicyModelCreator("JYTHON");
+ final TestApexModel<AxPolicyModel> testApexPolicyModel =
+ new TestApexModel<AxPolicyModel>(AxPolicyModel.class, apexPolicyModelCreator);
+ testApexPolicyModel.testApexModelWriteReadXML();
+ testApexPolicyModel.testApexModelWriteReadJSON();
+ }
+
+ @Test
+ public void testModelWriteReadMvel() throws Exception {
+ final TestApexSamplePolicyModelCreator apexPolicyModelCreator = new TestApexSamplePolicyModelCreator("MVEL");
+ final TestApexModel<AxPolicyModel> testApexPolicyModel =
+ new TestApexModel<AxPolicyModel>(AxPolicyModel.class, apexPolicyModelCreator);
+ testApexPolicyModel.testApexModelWriteReadXML();
+ testApexPolicyModel.testApexModelWriteReadJSON();
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyDBWrite.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyDBWrite.java
new file mode 100644
index 000000000..48e2f8058
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyDBWrite.java
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.handling;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.model.basicmodel.dao.DAOParameters;
+import org.onap.policy.apex.model.basicmodel.dao.impl.DefaultApexDao;
+import org.onap.policy.apex.model.basicmodel.test.TestApexModel;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+
+public class TestApexSamplePolicyDBWrite {
+ private Connection connection;
+ TestApexModel<AxPolicyModel> testApexModel;
+
+ @Before
+ public void setup() throws Exception {
+ connection = DriverManager.getConnection("jdbc:derby:memory:apex_test;create=true");
+
+ final TestApexSamplePolicyModelCreator apexPolicyModelCreator = new TestApexSamplePolicyModelCreator("MVEL");
+ testApexModel = new TestApexModel<AxPolicyModel>(AxPolicyModel.class, apexPolicyModelCreator);
+ }
+
+ @After
+ public void teardown() throws Exception {
+ connection.close();
+ }
+
+ @Test
+ public void testModelWriteReadJPA() throws Exception {
+ final DAOParameters daoParameters = new DAOParameters();
+ daoParameters.setPluginClass(DefaultApexDao.class.getCanonicalName());
+ daoParameters.setPersistenceUnit("SampleModelTest");
+
+ testApexModel.testApexModelWriteReadJPA(daoParameters);
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyModel.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyModel.java
new file mode 100644
index 000000000..3673dae2f
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyModel.java
@@ -0,0 +1,81 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.handling;
+
+import static org.junit.Assert.assertTrue;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
+import org.onap.policy.apex.model.basicmodel.dao.DAOParameters;
+import org.onap.policy.apex.model.basicmodel.dao.impl.DefaultApexDao;
+import org.onap.policy.apex.model.basicmodel.test.TestApexModel;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+
+public class TestApexSamplePolicyModel {
+ private static final String VALID_MODEL_STRING = "***validation of model successful***";
+ private Connection connection;
+ private TestApexModel<AxPolicyModel> testApexModel;
+
+ @Before
+ public void setup() throws Exception {
+ connection = DriverManager.getConnection("jdbc:derby:memory:apex_test;create=true");
+
+ testApexModel =
+ new TestApexModel<AxPolicyModel>(AxPolicyModel.class, new TestApexSamplePolicyModelCreator("MVEL"));
+ }
+
+ @After
+ public void teardown() throws Exception {
+ connection.close();
+ }
+
+ @Test
+ public void testModelValid() throws Exception {
+ final AxValidationResult result = testApexModel.testApexModelValid();
+ assertTrue(result.toString().equals(VALID_MODEL_STRING));
+ }
+
+ @Test
+ public void testModelWriteReadXML() throws Exception {
+ testApexModel.testApexModelWriteReadXML();
+ }
+
+ @Test
+ public void testModelWriteReadJSON() throws Exception {
+ testApexModel.testApexModelWriteReadJSON();
+ }
+
+ @Test
+ public void testModelWriteReadJPA() throws Exception {
+ final DAOParameters daoParameters = new DAOParameters();
+ daoParameters.setPluginClass(DefaultApexDao.class.getCanonicalName());
+ daoParameters.setPersistenceUnit("SampleModelTest");
+
+ testApexModel.testApexModelWriteReadJPA(daoParameters);
+ }
+
+
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyModelCreator.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyModelCreator.java
new file mode 100644
index 000000000..d5ba53699
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestApexSamplePolicyModelCreator.java
@@ -0,0 +1,61 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.handling;
+
+import org.onap.policy.apex.model.basicmodel.test.TestApexModelCreator;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.apex.test.common.model.SampleDomainModelFactory;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public class TestApexSamplePolicyModelCreator implements TestApexModelCreator<AxPolicyModel> {
+ private String logicExecutorType;
+
+ public TestApexSamplePolicyModelCreator(final String logicExecutorType) {
+ this.logicExecutorType = logicExecutorType;
+ }
+
+ @Override
+ public AxPolicyModel getModel() {
+ return new SampleDomainModelFactory().getSamplePolicyModel(logicExecutorType);
+ }
+
+ @Override
+ public AxPolicyModel getMalstructuredModel() {
+ return null;
+ }
+
+ @Override
+ public AxPolicyModel getObservationModel() {
+ return null;
+ }
+
+ @Override
+ public AxPolicyModel getWarningModel() {
+ return getModel();
+ }
+
+ @Override
+ public AxPolicyModel getInvalidModel() {
+ return null;
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestContextUpdateDifferentModels.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestContextUpdateDifferentModels.java
new file mode 100644
index 000000000..5ca71cf33
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestContextUpdateDifferentModels.java
@@ -0,0 +1,102 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.handling;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.policy.apex.context.ContextAlbum;
+import org.onap.policy.apex.core.engine.EngineParameters;
+import org.onap.policy.apex.core.engine.engine.impl.ApexEngineFactory;
+import org.onap.policy.apex.core.engine.engine.impl.ApexEngineImpl;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.apex.plugins.executor.mvel.MVELExecutorParameters;
+import org.onap.policy.apex.plugins.executor.test.script.engine.TestApexActionListener;
+import org.onap.policy.apex.test.common.model.SampleDomainModelFactory;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+/**
+ * The Class TestApexEngine.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public class TestContextUpdateDifferentModels {
+ // Logger for this class
+ private static final XLogger logger = XLoggerFactory.getXLogger(TestContextUpdateDifferentModels.class);
+
+ @Test
+ public void testContextUpdateDifferentModels() throws ApexException, InterruptedException, IOException {
+ logger.debug("Running test testContextUpdateDifferentModels . . .");
+
+ final AxPolicyModel apexModelSample = new SampleDomainModelFactory().getSamplePolicyModel("MVEL");
+ assertNotNull(apexModelSample);
+
+ final EngineParameters parameters = new EngineParameters();
+ parameters.getExecutorParameterMap().put("MVEL", new MVELExecutorParameters());
+
+ final ApexEngineImpl apexEngine =
+ (ApexEngineImpl) new ApexEngineFactory().createApexEngine(new AxArtifactKey("TestApexEngine", "0.0.1"));
+ final TestApexActionListener listener = new TestApexActionListener("Test");
+ apexEngine.addEventListener("listener", listener);
+ apexEngine.updateModel(apexModelSample);
+ apexEngine.start();
+
+ apexEngine.stop();
+
+ final AxPolicyModel someSpuriousModel = new AxPolicyModel(new AxArtifactKey("SomeSpuriousModel", "0.0.1"));
+ assertNotNull(someSpuriousModel);
+
+ try {
+ apexEngine.updateModel(null);
+ fail("null model should throw an exception");
+ } catch (final ApexException e) {
+ assertEquals("updateModel()<-TestApexEngine:0.0.1, Apex model is not defined, it has a null value",
+ e.getMessage());
+ }
+ assertEquals(apexEngine.getInternalContext().getContextAlbums().size(),
+ apexModelSample.getAlbums().getAlbumsMap().size());
+ for (final ContextAlbum contextAlbum : apexEngine.getInternalContext().getContextAlbums().values()) {
+ assertTrue(
+ contextAlbum.getAlbumDefinition().equals(apexModelSample.getAlbums().get(contextAlbum.getKey())));
+ }
+
+ apexEngine.updateModel(someSpuriousModel);
+ assertEquals(apexEngine.getInternalContext().getContextAlbums().size(),
+ someSpuriousModel.getAlbums().getAlbumsMap().size());
+ for (final ContextAlbum contextAlbum : apexEngine.getInternalContext().getContextAlbums().values()) {
+ assertTrue(
+ contextAlbum.getAlbumDefinition().equals(someSpuriousModel.getAlbums().get(contextAlbum.getKey())));
+ }
+
+ apexEngine.clear();
+
+ logger.debug("Ran test testContextUpdateDifferentModels");
+ }
+
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestContextUpdateModel.java b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestContextUpdateModel.java
new file mode 100644
index 000000000..e78d4c5bb
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/java/org/onap/policy/apex/plugins/executor/test/script/handling/TestContextUpdateModel.java
@@ -0,0 +1,158 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.executor.test.script.handling;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.After;
+import org.junit.Test;
+import org.onap.policy.apex.context.ContextException;
+import org.onap.policy.apex.core.engine.EngineParameters;
+import org.onap.policy.apex.core.engine.engine.ApexEngine;
+import org.onap.policy.apex.core.engine.engine.impl.ApexEngineFactory;
+import org.onap.policy.apex.core.engine.event.EnEvent;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.apex.plugins.executor.mvel.MVELExecutorParameters;
+import org.onap.policy.apex.plugins.executor.test.script.engine.TestApexActionListener;
+import org.onap.policy.apex.test.common.model.SampleDomainModelFactory;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+/**
+ * The Class TestApexEngine.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public class TestContextUpdateModel {
+ // Logger for this class
+ private static final XLogger logger = XLoggerFactory.getXLogger(TestContextUpdateModel.class);
+
+
+ @Test
+ public void testContextUpdateModel() throws ApexException, InterruptedException, IOException {
+ final AxArtifactKey key = new AxArtifactKey("TestApexEngine", "0.0.1");
+
+ final EngineParameters parameters = new EngineParameters();
+ parameters.getExecutorParameterMap().put("MVEL", new MVELExecutorParameters());
+
+ final ApexEngine apexEngine = new ApexEngineFactory().createApexEngine(key);
+ final TestApexActionListener listener = new TestApexActionListener("Test");
+ apexEngine.addEventListener("listener", listener);
+
+ final AxPolicyModel model1 = new SampleDomainModelFactory().getSamplePolicyModel("MVEL");
+ assertNotNull(model1);
+ assertEquals(2, model1.getPolicies().getPolicyMap().size());
+
+ apexEngine.updateModel(model1);
+ apexEngine.start();
+ sendEvent(apexEngine, listener, "Event0000", true);
+ sendEvent(apexEngine, listener, "Event0100", true);
+ apexEngine.stop();
+
+ final AxPolicyModel model2 = new SampleDomainModelFactory().getSamplePolicyModel("MVEL");
+ assertNotNull(model2);
+ model2.getPolicies().getPolicyMap().remove(new AxArtifactKey("Policy0", "0.0.1"));
+ assertEquals(1, model2.getPolicies().getPolicyMap().size());
+ apexEngine.updateModel(model2);
+ apexEngine.start();
+ sendEvent(apexEngine, listener, "Event0000", false);
+ sendEvent(apexEngine, listener, "Event0100", true);
+ apexEngine.stop();
+
+ final AxPolicyModel model3 = new SampleDomainModelFactory().getSamplePolicyModel("MVEL");
+ assertNotNull(model3);
+ model3.getPolicies().getPolicyMap().remove(new AxArtifactKey("Policy1", "0.0.1"));
+ assertEquals(1, model3.getPolicies().getPolicyMap().size());
+ apexEngine.updateModel(model3);
+ apexEngine.start();
+ sendEvent(apexEngine, listener, "Event0000", true);
+ sendEvent(apexEngine, listener, "Event0100", false);
+ apexEngine.stop();
+
+ final AxPolicyModel model4 = new SampleDomainModelFactory().getSamplePolicyModel("MVEL");
+ assertNotNull(model4);
+ assertEquals(2, model4.getPolicies().getPolicyMap().size());
+ apexEngine.updateModel(model4);
+ apexEngine.start();
+ sendEvent(apexEngine, listener, "Event0100", true);
+ sendEvent(apexEngine, listener, "Event0000", true);
+ apexEngine.stop();
+
+ apexEngine.clear();
+ }
+
+ @After
+ public void testContextUpdateModelAfter() {}
+
+ private void sendEvent(final ApexEngine apexEngine, final TestApexActionListener listener, final String eventName,
+ final boolean shouldWork) throws ContextException {
+ final Date aDate = new Date(1433453067123L);
+ final Map<String, Object> eventDataMap = new HashMap<String, Object>();
+ eventDataMap.put("TestSlogan", "This is a test slogan");
+ eventDataMap.put("TestMatchCase", new Byte((byte) 123));
+ eventDataMap.put("TestTimestamp", aDate.getTime());
+ eventDataMap.put("TestTemperature", 34.5445667);
+
+ final EnEvent event0 = apexEngine.createEvent(new AxArtifactKey(eventName, "0.0.1"));
+ event0.putAll(eventDataMap);
+ apexEngine.handleEvent(event0);
+
+ final EnEvent result = listener.getResult(true);
+ logger.debug("result 1 is:" + result);
+ checkResult(result, shouldWork);
+ }
+
+ private void checkResult(final EnEvent result, final boolean shouldWork) {
+ if (!shouldWork) {
+ assertNotNull(result.getExceptionMessage());
+ return;
+ }
+
+ assertTrue(result.getName().equals("Event0004") || result.getName().equals("Event0104"));
+
+ if (result.getName().equals("Event0004")) {
+ assertEquals("This is a test slogan", result.get("TestSlogan"));
+ assertEquals((byte) 123, result.get("TestMatchCase"));
+ assertEquals(34.5445667, result.get("TestTemperature"));
+ assertEquals((byte) 2, result.get("TestMatchCaseSelected"));
+ assertEquals((byte) 0, result.get("TestEstablishCaseSelected"));
+ assertEquals((byte) 1, result.get("TestDecideCaseSelected"));
+ assertEquals((byte) 3, result.get("TestActCaseSelected"));
+ } else {
+ assertEquals("This is a test slogan", result.get("TestSlogan"));
+ assertEquals((byte) 123, result.get("TestMatchCase"));
+ assertEquals(34.5445667, result.get("TestTemperature"));
+ assertEquals((byte) 1, result.get("TestMatchCaseSelected"));
+ assertEquals((byte) 3, result.get("TestEstablishCaseSelected"));
+ assertEquals((byte) 1, result.get("TestDecideCaseSelected"));
+ assertEquals((byte) 2, result.get("TestActCaseSelected"));
+ }
+ }
+}
diff --git a/testsuites/integration/integration-executor-test/src/test/resources/META-INF/persistence.xml b/testsuites/integration/integration-executor-test/src/test/resources/META-INF/persistence.xml
new file mode 100644
index 000000000..5ba5bfa4c
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/resources/META-INF/persistence.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ SPDX-License-Identifier: Apache-2.0
+ ============LICENSE_END=========================================================
+-->
+
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
+ <persistence-unit name="SampleModelTest" transaction-type="RESOURCE_LOCAL">
+ <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+
+ <class>org.onap.policy.apex.model.basicmodel.dao.converters.CDATAConditioner</class>
+ <class>org.onap.policy.apex.model.basicmodel.dao.converters.UUID2String</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.AxConcept</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.AxModel</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.TestEntity</class>
+ <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema</class>
+ <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas</class>
+ <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum</class>
+ <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums</class>
+ <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextModel</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxField</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxInputField</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxOutputField</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxEvent</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxEvents</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxEventModel</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxLogic</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxTaskParameter</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxTaskLogic</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxTask</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxTasks</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxTaskSelectionLogic</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxStateFinalizerLogic</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxStateOutput</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxStateTaskReference</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxState</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxPolicy</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxPolicies</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel</class>
+
+ <properties>
+ <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:apex_test" />
+ <property name="javax.persistence.target-database" value="Derby" />
+ <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+
+ <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+ <property name="eclipselink.ddl-generation.output-mode" value="database" />
+ <property name="eclipselink.logging.level" value="INFO" />
+ </properties>
+ </persistence-unit>
+</persistence>
diff --git a/testsuites/integration/integration-executor-test/src/test/resources/logback-test.xml b/testsuites/integration/integration-executor-test/src/test/resources/logback-test.xml
new file mode 100644
index 000000000..b0fa687ce
--- /dev/null
+++ b/testsuites/integration/integration-executor-test/src/test/resources/logback-test.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ SPDX-License-Identifier: Apache-2.0
+ ============LICENSE_END=========================================================
+-->
+
+<configuration>
+
+ <contextName>Apex</contextName>
+ <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
+ <property name="LOG_DIR" value="${java.io.tmpdir}/apex_logging/" />
+
+ <!-- USE FOR STD OUT ONLY -->
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <Pattern>%d %contextName [%t] %level %logger{36} - %msg%n</Pattern>
+ </encoder>
+ </appender>
+
+ <root level="INFO">
+ <appender-ref ref="STDOUT" />
+ </root>
+
+ <logger name="org.infinispan" level="INFO" additivity="false">
+ <appender-ref ref="STDOUT" />
+ </logger>
+
+ <logger name="org.apache.zookeeper.ClientCnxn" level="OFF" additivity="false">
+ <appender-ref ref="STDOUT" />
+ </logger>
+
+ <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <file>${LOG_DIR}/apex.log</file>
+ <encoder>
+ <pattern>%d %-5relative [procId=${processId}] [%thread] %-5level
+ %logger{26} - %msg %n %ex{full}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="CTXT_FILE" class="ch.qos.logback.core.FileAppender">
+ <file>${LOG_DIR}/apex_ctxt.log</file>
+ <encoder>
+ <pattern>%d %-5relative [procId=${processId}] [%thread] %-5level
+ %logger{26} - %msg %n %ex{full}</pattern>
+ </encoder>
+ </appender>
+
+ <logger name="org.onap.policy.apex.core.context.monitoring" level="TRACE" additivity="false">
+ <appender-ref ref="CTXT_FILE" />
+ </logger>
+
+ <logger name="org.onap.policy.apex.core.engine.monitoring" level="TRACE" additivity="false">
+ <appender-ref ref="CTXT_FILE" />
+ </logger>
+
+ <logger name="org.onap.policy.apex.executionlogging" level="TRACE" additivity="false">
+ <appender-ref ref="STDOUT" />
+ </logger>
+
+ <logger name="com.ericsson.apex" level="INFO" additivity="false">
+ <appender-ref ref="STDOUT" />
+ </logger>
+</configuration>
diff --git a/testsuites/integration/pom.xml b/testsuites/integration/pom.xml
index 366556cf1..9fcfd324e 100644
--- a/testsuites/integration/pom.xml
+++ b/testsuites/integration/pom.xml
@@ -39,6 +39,7 @@
</activation>
<modules>
<module>integration-common</module>
+ <module>integration-executor-test</module>
<module>integration-uservice-test</module>
</modules>
</profile>
@@ -51,6 +52,7 @@
</activation>
<modules>
<module>integration-common</module>
+ <module>integration-executor-test</module>
<module>integration-uservice-test</module>
<module>integration-context-metrics</module>
</modules>
@@ -64,6 +66,7 @@
</activation>
<modules>
<module>integration-common</module>
+ <module>integration-executor-test</module>
<module>integration-uservice-test</module>
<module>integration-context-test</module>
<module>integration-context-metrics</module>