From 9a9127b65920580de8b4a69479a9983481c8faf8 Mon Sep 17 00:00:00 2001 From: liamfallon Date: Fri, 11 Sep 2020 14:28:32 +0100 Subject: Add TOSCA support to Apex editor The APEX editor now loads, saves, and downloads files in TOSCA format, the same as the apex-pdp does. The non-standard TOSCA handling for file upload has been refactored to be aligned with the Policy Frameowkr TOSCA support. Issue-ID: POLICY-2621 Change-Id: I1ec7475cbcc6ffc23de92687c9f284ac7dfbdd80 Signed-off-by: liamfallon --- .../editors/apex/rest/ApexEditorStartupTest.java | 143 +- .../gui/editors/apex/rest/RestInterfaceTest.java | 47 +- .../rest/UploadPluginConfigParametersTest.java | 85 -- .../rest/handling/ApexEditorRestResourceTest.java | 2 +- .../handling/ConfigurationRestResourceTest.java | 64 - .../converter/tosca/ApexConfigProcessorTest.java | 111 -- .../converter/tosca/PolicyToscaConverterTest.java | 187 --- .../converter/tosca/PolicyUploadHandlerTest.java | 201 --- .../tosca/ToscaTemplateProcessorTest.java | 204 --- .../plugin/upload/UploadPluginClientTest.java | 71 - .../src/test/resources/models/PolicyModel.json | 1521 +++++++++++--------- .../src/test/resources/models/PolicyModel.yaml | 538 +++++++ 12 files changed, 1414 insertions(+), 1760 deletions(-) delete mode 100644 gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/UploadPluginConfigParametersTest.java delete mode 100644 gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ConfigurationRestResourceTest.java delete mode 100644 gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ApexConfigProcessorTest.java delete mode 100644 gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyToscaConverterTest.java delete mode 100644 gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyUploadHandlerTest.java delete mode 100644 gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ToscaTemplateProcessorTest.java delete mode 100644 gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPluginClientTest.java create mode 100644 gui-editors/gui-editor-apex/src/test/resources/models/PolicyModel.yaml (limited to 'gui-editors/gui-editor-apex/src/test') diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java index c80b816..d78eba3 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java @@ -50,16 +50,16 @@ public class ApexEditorStartupTest { final String[] args = new String[] {}; final String outString = runEditor(args); - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=-1sec], " - + "State=READY) starting at http://localhost:18989/apexservices/")); - assertTrue(outString.contains("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=-1sec], " - + "State=RUNNING) started at http://localhost:18989/apexservices/")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .endsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=-1sec]," - + " State=STOPPED) shut down ")); + + assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("help=false")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("restPort=18989")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=-1")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("listenAddress=localhost")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("uploadUrl=null")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("uploadUserid=null")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); } /** @@ -73,8 +73,7 @@ public class ApexEditorStartupTest { final String[] args = new String[] { "12321" }; assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("Apex Editor REST endpoint (ApexEditorMain: Config=[null], State=STOPPED)" - + " parameter error, too many command line arguments specified : [12321]"); + .hasMessageContaining("parameter error, too many command line arguments specified : [12321]"); } /** @@ -88,8 +87,7 @@ public class ApexEditorStartupTest { final String[] args = new String[] { "12321 12322 12323" }; assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("Apex Editor REST endpoint (ApexEditorMain: Config=[null], State=STOPPED)" - + " parameter error, too many command line arguments specified : [12321 12322 12323]"); + .hasMessageContaining("parameter error, too many command line arguments specified : [12321 12322 12323]"); } /** @@ -102,9 +100,8 @@ public class ApexEditorStartupTest { public void testBadArg2() throws IOException, InterruptedException { final String[] args = new String[] { "-z" }; - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("Apex Editor REST endpoint (ApexEditorMain: Config=[null], State=STOPPED)" - + " parameter error, invalid command line arguments specified : Unrecognized option: -z"); + assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class).hasMessageContaining( + "parameter error, invalid command line arguments specified : Unrecognized option: -z"); } /** @@ -117,9 +114,8 @@ public class ApexEditorStartupTest { public void testBadArg3() throws IOException, InterruptedException { final String[] args = new String[] { "--hello" }; - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("Apex Editor REST endpoint (ApexEditorMain: Config=[null], State=STOPPED)" - + " parameter error, invalid command line arguments specified : Unrecognized option: --hello"); + assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class).hasMessageContaining( + "parameter error, invalid command line arguments specified : Unrecognized option: --hello"); } /** @@ -133,9 +129,7 @@ public class ApexEditorStartupTest { final String[] args = new String[] { "-l", "+++++" }; assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://+++++:18989/apexservices/, TTL=-1sec], " - + "State=STOPPED) parameters invalid, listen address is not valid. " + .hasMessageContaining("parameters invalid, listen address is not valid. " + "Illegal character in hostname at index 7: http://+++++:18989/apexservices/"); } @@ -179,16 +173,10 @@ public class ApexEditorStartupTest { final String outString = runEditor(args); - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:12321/apexservices/, TTL=-1sec], " - + "State=READY) starting at http://localhost:12321/apexservices/")); - assertTrue(outString.contains("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:12321/apexservices/, TTL=-1sec], " - + "State=RUNNING) started at http://localhost:12321/apexservices/")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .endsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:12321/apexservices/, TTL=-1sec]," - + " State=STOPPED) shut down ")); + assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("localhost:12321")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); } /** @@ -203,16 +191,10 @@ public class ApexEditorStartupTest { final String outString = runEditor(args); - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:12321/apexservices/, TTL=-1sec], " - + "State=READY) starting at http://localhost:12321/apexservices/")); - assertTrue(outString.contains("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:12321/apexservices/, TTL=-1sec], " - + "State=RUNNING) started at http://localhost:12321/apexservices/")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .endsWith("(ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:12321/apexservices/, TTL=-1sec]," - + " State=STOPPED) shut down ")); + assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("localhost:12321")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); } /** @@ -226,8 +208,7 @@ public class ApexEditorStartupTest { final String[] args = new String[] { "-p 12321" }; assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("Apex Editor REST endpoint (ApexEditorMain: Config=[null], State=STOPPED)" - + " parameter error, error parsing argument \"port\" :For input string: \" 12321\""); + .hasMessageContaining("parameter error, error parsing argument \"port\" :For input string: \" 12321\""); } /** @@ -241,9 +222,7 @@ public class ApexEditorStartupTest { final String[] args = new String[] { "-p0" }; assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:0/apexservices/, TTL=-1sec], " - + "State=STOPPED) parameters invalid, port must be between 1024 and 65535"); + .hasMessageContaining("parameters invalid, port must be between 1024 and 65535"); } /** @@ -257,9 +236,7 @@ public class ApexEditorStartupTest { final String[] args = new String[] { "-p1023" }; assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:1023/apexservices/, TTL=-1sec], " - + "State=STOPPED) parameters invalid, port must be between 1024 and 65535"); + .hasMessageContaining("parameters invalid, port must be between 1024 and 65535"); } /** @@ -273,9 +250,7 @@ public class ApexEditorStartupTest { final String[] args = new String[] { "-p65536" }; assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:65536/apexservices/, TTL=-1sec], " - + "State=STOPPED) parameters invalid, port must be between 1024 and 65535"); + .hasMessageContaining("parameters invalid, port must be between 1024 and 65535"); } /** @@ -290,17 +265,10 @@ public class ApexEditorStartupTest { final String outString = runEditor(args); - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=10sec], " - + "State=READY) starting at http://localhost:18989/apexservices/")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .contains("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=10sec], State=RUNNING)" - + " started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .endsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=10sec], State=STOPPED)" - + " shut down ")); + assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); } /** @@ -315,17 +283,10 @@ public class ApexEditorStartupTest { final String outString = runEditor(args); - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=10sec], " - + "State=READY) starting at http://localhost:18989/apexservices/")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .contains("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=10sec], State=RUNNING)" - + " started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .endsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=10sec], State=STOPPED)" - + " shut down ")); + assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); } /** @@ -340,17 +301,10 @@ public class ApexEditorStartupTest { final String outString = runEditor(args); - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:12321/apexservices/, TTL=10sec], " - + "State=READY) starting at http://localhost:12321/apexservices/")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .contains("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:12321/apexservices/, TTL=10sec], State=RUNNING)" - + " started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .endsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://localhost:12321/apexservices/, TTL=10sec], State=STOPPED)" - + " shut down ")); + assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); } /** @@ -365,17 +319,10 @@ public class ApexEditorStartupTest { final String outString = runEditor(args); - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://127.0.0.1:12321/apexservices/, TTL=10sec], " - + "State=READY) starting at http://127.0.0.1:12321/apexservices/")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .contains("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://127.0.0.1:12321/apexservices/, TTL=10sec], State=RUNNING)" - + " started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ") - .endsWith("Apex Editor REST endpoint (ApexEditorMain: " - + "Config=[ApexEditorParameters: URI=http://127.0.0.1:12321/apexservices/, TTL=10sec], State=STOPPED)" - + " shut down ")); + assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); + assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); } /** diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java index 60a2012..cf1c4fa 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java @@ -42,10 +42,8 @@ import org.junit.BeforeClass; import org.junit.Test; import org.onap.policy.apex.model.basicmodel.concepts.ApexException; import org.onap.policy.apex.model.basicmodel.handling.ApexModelReader; -import org.onap.policy.apex.model.basicmodel.handling.ApexModelStringWriter; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.policymodel.concepts.AxPolicy; -import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; import org.onap.policy.common.parameters.ParameterService; import org.onap.policy.common.utils.resources.ResourceUtils; import org.onap.policy.gui.editors.apex.rest.ApexEditorMain.EditorState; @@ -56,7 +54,7 @@ import org.onap.policy.gui.editors.apex.rest.ApexEditorMain.EditorState; public class RestInterfaceTest { // CHECKSTYLE:OFF: MagicNumber - private static final String TESTMODELFILE = "models/PolicyModel.json"; + private static final String TESTMODELFILE = "models/PolicyModel.yaml"; private static final String TESTPORTNUM = "18989"; private static final long MAX_WAIT = 15000; // 15 sec private static final InputStream SYSIN = System.in; @@ -65,8 +63,7 @@ public class RestInterfaceTest { private static ApexEditorMain editorMain; private static WebTarget target; - private static AxPolicyModel localmodel = null; - private static String localmodelString = null; + private static String localModelString = null; /** * Sets up the tests. @@ -103,10 +100,7 @@ public class RestInterfaceTest { target = c.target(new ApexEditorParameters().getBaseUri()); // load a test model locally - localmodel = new ApexModelReader<>(AxPolicyModel.class, false) - .read(ResourceUtils.getResourceAsStream(TESTMODELFILE)); - localmodelString = new ApexModelStringWriter(false).writeJsonString(localmodel, - AxPolicyModel.class); + localModelString = ResourceUtils.getResourceAsString(TESTMODELFILE); // initialize a session ID createNewSession(); @@ -159,8 +153,8 @@ public class RestInterfaceTest { } /** - * Create a new session, Upload a test policy model, then get a policy, parse - * it, and compare it to the same policy in the original model. + * Create a new session, Upload a test policy model, then get a policy, parse it, and compare it to the same policy + * in the original model. * * @throws ApexException if there is an Apex Error * @throws JAXBException if there is a JaxB Error @@ -170,7 +164,7 @@ public class RestInterfaceTest { final int sessionId = createNewSession(); - uploadPolicy(sessionId, localmodelString); + uploadPolicy(sessionId, localModelString); final ApexApiResult responseMsg = target.path("editor/" + sessionId + "/Policy/Get") .queryParam("name", "policy").queryParam("version", "0.0.1").request().get(ApexApiResult.class); @@ -180,29 +174,10 @@ public class RestInterfaceTest { // object. Lets parse it final String returnedPolicyAsString = responseMsg.getMessages().get(0); ApexModelReader apexPolicyReader = new ApexModelReader<>(AxPolicy.class, false); - final AxPolicy returnedpolicy = apexPolicyReader.read(returnedPolicyAsString); - // AxPolicy returnedpolicy = - // RestUtils.getConceptFromJSON(returnedPolicyAsString, AxPolicy.class); - - // Extract the local copy of that policy from the local Apex Policy Model - final AxPolicy localpolicy = localmodel.getPolicies().get("policy", "0.0.1"); - - // Write that local copy of the AxPolicy object to a Json String, ten parse it - // again - final ApexModelStringWriter apexModelWriter = new ApexModelStringWriter<>(false); - final String localPolicyString = apexModelWriter.writeJsonString(localpolicy, AxPolicy.class); - apexPolicyReader = new ApexModelReader<>(AxPolicy.class, false); - final AxPolicy localpolicyReparsed = apexPolicyReader.read(localPolicyString); - // AxPolicy localpolicy_reparsed = - // RestUtils.getConceptFromJSON(returnedPolicyAsString, AxPolicy.class); - - assertNotNull(returnedpolicy); - assertNotNull(localpolicy); - assertNotNull(localpolicyReparsed); - assertEquals(localpolicy, localpolicyReparsed); - assertEquals(localpolicy, returnedpolicy); - } - - // TODO Full unit testing of REST interface + final AxPolicy returnedPolicy = apexPolicyReader.read(returnedPolicyAsString); + assertNotNull(returnedPolicy); + assertEquals("state", returnedPolicy.getFirstState()); + assertEquals(1, returnedPolicy.getStateMap().size()); + } } diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/UploadPluginConfigParametersTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/UploadPluginConfigParametersTest.java deleted file mode 100644 index 3f743a7..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/UploadPluginConfigParametersTest.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 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.gui.editors.apex.rest; - - -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.Optional; -import org.junit.Test; -import org.onap.policy.gui.editors.apex.rest.handling.config.PolicyUploadPluginConfigKey; - -public class UploadPluginConfigParametersTest { - - @Test - public void setupPropertiesTest() { - final String expectedUrl = "aUrl"; - final boolean expectedEnabled = true; - System.setProperty(PolicyUploadPluginConfigKey.URL.getKey(), expectedUrl); - System.setProperty(PolicyUploadPluginConfigKey.ENABLE.getKey(), String.valueOf(expectedEnabled)); - final UploadPluginConfigParameters uploadPluginConfigParameters = new UploadPluginConfigParameters(); - final String url = uploadPluginConfigParameters.getUrl(); - final Boolean isEnabled = uploadPluginConfigParameters.isEnabled(); - assertThat(url).isEqualTo(expectedUrl); - assertThat(isEnabled).isEqualTo(expectedEnabled); - } - - @Test - public void testGetValue() { - final String expectedUrl = "aUrl"; - final boolean expectedEnabled = true; - System.setProperty(PolicyUploadPluginConfigKey.URL.getKey(), expectedUrl); - System.setProperty(PolicyUploadPluginConfigKey.ENABLE.getKey(), String.valueOf(expectedEnabled)); - UploadPluginConfigParameters uploadPluginConfigParameters = new UploadPluginConfigParameters(); - Optional actualUrl = uploadPluginConfigParameters.getValue(PolicyUploadPluginConfigKey.URL); - assertThat(actualUrl).isPresent().contains(expectedUrl); - Optional actualEnabled = uploadPluginConfigParameters.getValue(PolicyUploadPluginConfigKey.ENABLE); - assertThat(actualEnabled).isPresent().contains(expectedEnabled); - - System.clearProperty(PolicyUploadPluginConfigKey.URL.getKey()); - uploadPluginConfigParameters = new UploadPluginConfigParameters(); - actualUrl = uploadPluginConfigParameters.getValue(PolicyUploadPluginConfigKey.URL); - assertThat(actualUrl).isNotPresent(); - - System.clearProperty(PolicyUploadPluginConfigKey.ENABLE.getKey()); - uploadPluginConfigParameters = new UploadPluginConfigParameters(); - actualEnabled = uploadPluginConfigParameters.getValue(PolicyUploadPluginConfigKey.ENABLE); - assertThat(actualEnabled).isPresent(); - assertThat(actualEnabled.get()).isFalse(); - } - - @Test - public void testValidate() { - final String expectedUrl = "aUrl"; - final boolean expectedEnabled = true; - System.setProperty(PolicyUploadPluginConfigKey.URL.getKey(), expectedUrl); - System.setProperty(PolicyUploadPluginConfigKey.ENABLE.getKey(), String.valueOf(expectedEnabled)); - UploadPluginConfigParameters uploadPluginConfigParameters = new UploadPluginConfigParameters(); - assertThat(uploadPluginConfigParameters.isValid()).isTrue(); - - System.clearProperty(PolicyUploadPluginConfigKey.URL.getKey()); - uploadPluginConfigParameters = new UploadPluginConfigParameters(); - assertThat(uploadPluginConfigParameters.isValid()).isFalse(); - - System.clearProperty(PolicyUploadPluginConfigKey.ENABLE.getKey()); - uploadPluginConfigParameters = new UploadPluginConfigParameters(); - assertThat(uploadPluginConfigParameters.isValid()).isTrue(); - } -} \ No newline at end of file diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java index 9b0ce32..6e9dca4 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java @@ -398,7 +398,7 @@ public class ApexEditorRestResourceTest extends JerseyTest { .queryParam("version", (String) null).request().get(ApexApiResult.class); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.yaml"); Entity modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ConfigurationRestResourceTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ConfigurationRestResourceTest.java deleted file mode 100644 index 3820240..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ConfigurationRestResourceTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 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.gui.editors.apex.rest.handling; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertEquals; - -import javax.ws.rs.core.Application; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.test.JerseyTest; -import org.junit.Test; -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; -import org.onap.policy.common.parameters.ParameterService; -import org.onap.policy.gui.editors.apex.rest.UploadPluginConfigParameters; -import org.onap.policy.gui.editors.apex.rest.handling.config.PolicyUploadPluginConfigKey; - -public class ConfigurationRestResourceTest extends JerseyTest { - - private String anUrl; - private Boolean isEnabled; - - @Override - protected Application configure() { - anUrl = "url"; - isEnabled = true; - System.setProperty(PolicyUploadPluginConfigKey.URL.getKey(), anUrl); - System.setProperty(PolicyUploadPluginConfigKey.ENABLE.getKey(), String.valueOf(isEnabled)); - final UploadPluginConfigParameters uploadPluginConfigParameters = new UploadPluginConfigParameters(); - ParameterService.clear(); - ParameterService.register(uploadPluginConfigParameters); - return new ResourceConfig(ConfigurationRestResource.class); - } - - @Test - public void testShowSuccess() { - final Response response = target("/editor/config").request().get(); - assertEquals(Status.OK.getStatusCode(), response.getStatus()); - final ApexApiResult apexApiResult = response.readEntity(ApexApiResult.class); - assertEquals(Result.SUCCESS, apexApiResult.getResult()); - final String message = apexApiResult.getMessage(); - assertThat(message).contains(String.format("\"%s\":\"%s\"", PolicyUploadPluginConfigKey.URL.getKey(), anUrl)) - .contains(String.format("\"%s\":%s", PolicyUploadPluginConfigKey.ENABLE.getKey(), isEnabled)); - } -} \ No newline at end of file diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ApexConfigProcessorTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ApexConfigProcessorTest.java deleted file mode 100644 index 0842b1b..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ApexConfigProcessorTest.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 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.gui.editors.apex.rest.handling.converter.tosca; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.is; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ApexConfigProcessor.ErrorMessage.INVALID_APEX_CONFIG; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ApexConfigProcessor.ErrorMessage.INVALID_ENTRY; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ApexConfigProcessor.ErrorMessage.MISSING_ENTRY; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.ENGINE_SERVICE_PARAMETERS; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.List; -import org.junit.Test; -import org.onap.policy.common.utils.coder.StandardCoder; - -public class ApexConfigProcessorTest { - - private final ApexConfigProcessor apexConfigProcessor = new ApexConfigProcessor(new StandardCoder()); - private final Path testResourcesPath = Paths.get("src", "test", "resources", "processor"); - - @Test - public void testProcessSuccess() throws IOException { - final String fileName = "ApexConfig.json"; - final ProcessedTemplate process; - try (final FileInputStream fileInputStream = readFileAsStream(fileName)) { - process = apexConfigProcessor.process(fileInputStream); - } - assertThat("Template should be valid", process.isValid(), is(true)); - final String expectedContent = readFileAsString(fileName); - assertThat("Content should be the same", process.getContent(), is(expectedContent)); - } - - @Test - public void testProcessMissingPoliciesEntry() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream( - "ApexConfig-missing-engineServiceParameters.json")) { - processedTemplate = apexConfigProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, - List.of(MISSING_ENTRY.getMessage(ENGINE_SERVICE_PARAMETERS.getKey()))); - } - - @Test - public void testProcessInvalidToscaTemplate() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ApexConfig-invalid.jsonbad")) { - processedTemplate = apexConfigProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, List.of(INVALID_APEX_CONFIG.getMessage())); - } - - @Test - public void testProcessInvalidEngineServiceParameters() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream( - "ApexConfig-invalid-engineServiceParameters.json")) { - processedTemplate = apexConfigProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, - List.of(INVALID_ENTRY.getMessage(ENGINE_SERVICE_PARAMETERS.getKey()))); - } - - private void assertProcessedTemplate(final ProcessedTemplate process, boolean isValid, - final List expectedErrorList) { - - assertThat("Template should be valid", process.isValid(), is(isValid)); - if (isValid || expectedErrorList == null) { - return; - } - assertThat("Should contains the expected quantity of errors", process.getErrorSet().size(), - is(expectedErrorList.size())); - expectedErrorList.forEach(errorMsg -> assertThat("Should contains a specific error message", - process.getErrorSet(), contains(errorMsg))); - } - - private FileInputStream readFileAsStream(final String fileName) throws FileNotFoundException { - final Path path = Paths.get(testResourcesPath.toString(), fileName); - return new FileInputStream(path.toFile()); - } - - private String readFileAsString(final String fileName) throws IOException { - final Path path = Paths.get(testResourcesPath.toString(), fileName); - return Files.readString(path); - } - -} \ No newline at end of file diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyToscaConverterTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyToscaConverterTest.java deleted file mode 100644 index ecf896e..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyToscaConverterTest.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 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.gui.editors.apex.rest.handling.converter.tosca; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doThrow; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.ENGINE_SERVICE_PARAMETERS; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.POLICIES; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.POLICY_TYPE_IMPL; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.PROPERTIES; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.TOPOLOGY_TEMPLATE; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.TOSCA_DEFINITIONS_VERSION; - -import com.google.gson.JsonObject; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import org.junit.Before; -import org.junit.Test; -import org.mockito.InjectMocks; -import org.mockito.MockitoAnnotations; -import org.mockito.Spy; -import org.onap.policy.common.utils.coder.CoderException; -import org.onap.policy.common.utils.coder.StandardCoder; -import org.onap.policy.common.utils.coder.StandardYamlCoder; -import org.onap.policy.common.utils.coder.YamlJsonTranslator; -import org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.exception.PolicyToscaConverterException; - -public class PolicyToscaConverterTest { - - @Spy - private final StandardCoder standardCoder = new StandardCoder(); - @Spy - private final YamlJsonTranslator yamlJsonTranslator = new YamlJsonTranslator(); - @InjectMocks - private PolicyToscaConverter policyToscaConverter; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - } - - @Test - public void testConvertSuccess() throws IOException, PolicyToscaConverterException, CoderException { - final String apexConfig = readResourceFileToString(Paths.get("converter", "ApexConfig.json")); - final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json")); - final String toscaTemplate = readResourceFileToString(Paths.get("converter", "ToscaTemplate.json")); - final Optional convert = policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate); - assertTrue(convert.isPresent()); - final String convertedYaml = convert.get(); - final StandardYamlCoder standardYamlCoder = new StandardYamlCoder(); - @SuppressWarnings("unchecked") final Map yamlAsMap = - standardYamlCoder.decode(convertedYaml, Map.class); - assertThat(yamlAsMap).containsKeys(TOSCA_DEFINITIONS_VERSION.getKey(), TOPOLOGY_TEMPLATE.getKey()); - @SuppressWarnings("unchecked") final Map topology_template = - (Map) yamlAsMap.get(TOPOLOGY_TEMPLATE.getKey()); - assertThat(topology_template).containsKey(POLICIES.getKey()); - @SuppressWarnings("unchecked") final List policies = - (List) topology_template.get(POLICIES.getKey()); - assertEquals(1, policies.size()); - @SuppressWarnings("unchecked") final Map firstPolicyMap = (Map) policies.get(0); - assertEquals(1, firstPolicyMap.keySet().size()); - @SuppressWarnings("unchecked") final Map firstPolicy = - (Map) firstPolicyMap.get(firstPolicyMap.keySet().iterator().next()); - assertThat(firstPolicy).containsKey(PROPERTIES.getKey()); - @SuppressWarnings("unchecked") final Map propertiesMap = - (Map) firstPolicy.get(PROPERTIES.getKey()); - assertThat(propertiesMap).containsKey(ENGINE_SERVICE_PARAMETERS.getKey()); - @SuppressWarnings("unchecked") final Map engineServiceParametersProperty = - (Map) propertiesMap.get(ENGINE_SERVICE_PARAMETERS.getKey()); - assertThat(engineServiceParametersProperty).containsKey(POLICY_TYPE_IMPL.getKey()); - } - - @Test - public void testConvertInvalidJsonDecode() throws CoderException { - final String invalidJson = "this is an invalid JSON"; - doThrow(CoderException.class).when(standardCoder).decode(eq(invalidJson), eq(JsonObject.class)); - - final String expectedMsg = String.format("Could not convert JSON string to JSON:\n%s", invalidJson); - assertThatThrownBy(() -> policyToscaConverter.convert(invalidJson, invalidJson, invalidJson)) - .isInstanceOf(PolicyToscaConverterException.class) - .hasMessage(expectedMsg); - } - - @Test - public void testConvertInvalidJsonEncodeToString() throws IOException { - final String apexConfig = readResourceFileToString(Paths.get("converter", "ApexConfig.json")); - final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json")); - final String toscaTemplate = readResourceFileToString(Paths.get("converter", "ToscaTemplate.json")); - - doThrow(RuntimeException.class).when(yamlJsonTranslator).toYaml(any(JsonObject.class)); - - assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate)) - .isInstanceOf(PolicyToscaConverterException.class) - .hasMessageContaining("Could not convert JSON Object to YAML:"); - } - - @Test - public void testCouldNotReadFirstPolicy() throws IOException { - final String apexConfig = readResourceFileToString(Paths.get("converter", "ApexConfig.json")); - final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json")); - final String toscaTemplate1 = - readResourceFileToString(Paths.get("processor", "ToscaTemplate-missing-policies.json")); - final String expectedError = - String.format("Could not read the first policy in the '%s' entry under '%s'", - POLICIES.getKey(), TOPOLOGY_TEMPLATE.getKey()); - - assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate1)) - .isInstanceOf(PolicyToscaConverterException.class) - .hasMessage(expectedError); - final String toscaTemplate2 = - readResourceFileToString(Paths.get("processor", "ToscaTemplate-missing-policy.json")); - - assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate2)) - .isInstanceOf(PolicyToscaConverterException.class) - .hasMessage(expectedError); - } - - @Test - public void testCouldNotReadPolicyProperties() throws IOException { - final String apexConfig = readResourceFileToString(Paths.get("converter", "ApexConfig.json")); - final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json")); - final String toscaTemplate = - readResourceFileToString(Paths.get("processor", "ToscaTemplate-missing-properties.json")); - assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate)) - .isInstanceOf(PolicyToscaConverterException.class) - .hasMessage(String.format("Could not read the policy '%s' entry", PROPERTIES.getKey())); - } - - @Test - public void testCouldNotReadEngineServiceParameters() throws IOException { - final String apexConfig = - readResourceFileToString(Paths.get("converter", "ApexConfig-engineServiceParameters-notAnObject.json")); - final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json")); - final String toscaTemplate = - readResourceFileToString(Paths.get("converter", "ToscaTemplate.json")); - assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate)) - .isInstanceOf(PolicyToscaConverterException.class) - .hasMessage( - String.format("Could not read the '%s' in the Apex Config", ENGINE_SERVICE_PARAMETERS.getKey())); - } - - @Test - public void testCouldNotReadTopologyTemplate() throws IOException { - final String apexConfig = readResourceFileToString(Paths.get("converter", "ApexConfig.json")); - final String apexPolicy = readResourceFileToString(Paths.get("converter", "APEXgRPCPolicy.json")); - final String toscaTemplate = - readResourceFileToString(Paths.get("processor", "ToscaTemplate-missing-topology-template.json")); - assertThatThrownBy(() -> policyToscaConverter.convert(apexPolicy, apexConfig, toscaTemplate)) - .isInstanceOf(PolicyToscaConverterException.class) - .hasMessage( - String.format("Could not read the '%s' entry in the Tosca Template", TOPOLOGY_TEMPLATE.getKey())); - } - - private String readResourceFileToString(final Path filePathFromResources) throws IOException { - final Path resourceDirectory = Paths.get("src", "test", "resources"); - final Path converter = Paths.get(resourceDirectory.toString(), filePathFromResources.toString()); - return Files.readString(converter); - } - -} \ No newline at end of file diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyUploadHandlerTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyUploadHandlerTest.java deleted file mode 100644 index 6ec5eef..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/PolicyUploadHandlerTest.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 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.gui.editors.apex.rest.handling.converter.tosca; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import javax.ws.rs.core.Response; -import org.junit.Before; -import org.junit.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; -import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo; -import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation; -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.onap.policy.apex.model.modelapi.ApexModel; -import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; -import org.onap.policy.gui.editors.apex.rest.UploadPluginConfigParameters; -import org.onap.policy.gui.editors.apex.rest.handling.PolicyUploadHandler; -import org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.exception.PolicyToscaConverterException; -import org.onap.policy.gui.editors.apex.rest.handling.plugin.upload.UploadPluginClient; -import org.onap.policy.gui.editors.apex.rest.handling.plugin.upload.UploadPolicyRequestDto; - -public class PolicyUploadHandlerTest { - - private static final String USER_ID = "cs0008"; - @Mock - private PolicyToscaConverter policyToscaConverter; - @Mock - private ToscaTemplateProcessor toscaTemplateProcessor; - @Mock - private ApexConfigProcessor apexConfigProcessor; - @Mock - private UploadPluginClient uploadPluginClient; - @Mock - private UploadPluginConfigParameters config; - - @InjectMocks - private PolicyUploadHandler policyUploadHandler; - - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - when(config.isEnabled()).thenReturn(true); - } - - @Test - public void doUploadResponseSuccessAndFail() throws PolicyToscaConverterException, IOException { - final ApexModel apexModel = mockApexModel(); - final ProcessedTemplate processedToscaTemplate = new ProcessedTemplate(); - processedToscaTemplate.setContent("tosca"); - final ProcessedTemplate processedApexConfig = new ProcessedTemplate(); - processedApexConfig.setContent("apexConfig"); - when(toscaTemplateProcessor.process(any(InputStream.class))).thenReturn(processedToscaTemplate); - when(apexConfigProcessor.process(any(InputStream.class))).thenReturn(processedApexConfig); - when(policyToscaConverter.convert(eq("policy\n"), eq("apexConfig"), eq("tosca"))) - .thenReturn(Optional.of("test")); - when(uploadPluginClient.upload(any(UploadPolicyRequestDto.class))) - .thenReturn(Response.ok().status(201).build()); - - ApexApiResult apexApiResult = policyUploadHandler - .doUpload(apexModel, mock(InputStream.class), mock(InputStream.class), USER_ID); - - assertThat("Response should be ok", apexApiResult.isOk(), is(true)); - String expectedSuccessMsg = - String.format("Policy '%s' uploaded successfully", apexModel.getPolicyModel().getId()); - assertThat("Response message should be as expected", - apexApiResult.getMessage(), is(expectedSuccessMsg + "\n")); - - when(uploadPluginClient.upload(any(UploadPolicyRequestDto.class))) - .thenReturn(Response.serverError().build()); - - apexApiResult = policyUploadHandler - .doUpload(apexModel, mock(InputStream.class), mock(InputStream.class), USER_ID); - - assertThat("Response should not be ok", apexApiResult.isNok(), is(true)); - expectedSuccessMsg = - String.format("An error has occurred while uploading the Policy '%s'. Status was %s", - apexModel.getPolicyModel().getId(), 500); - assertThat("Response message should be as expected", - apexApiResult.getMessage(), is(expectedSuccessMsg + "\n")); - } - - @Test - public void doUploadPluginDisabled() throws IOException { - when(config.isEnabled()).thenReturn(false); - - final ProcessedTemplate processedToscaTemplate = new ProcessedTemplate(); - final ProcessedTemplate processedApexConfig = new ProcessedTemplate(); - when(toscaTemplateProcessor.process(any(InputStream.class))).thenReturn(processedToscaTemplate); - when(apexConfigProcessor.process(any(InputStream.class))).thenReturn(processedApexConfig); - final ApexApiResult apexApiResult = policyUploadHandler - .doUpload(mock(ApexModel.class), mock(InputStream.class), mock(InputStream.class), USER_ID); - - assertThat("Response should not be ok", apexApiResult.isNok(), is(true)); - assertThat("Response message should be as expected", - apexApiResult.getMessage(), is("Upload feature is disabled\n")); - } - - @Test - public void doUploadInvalidToscaTemplate() throws IOException { - when(config.isEnabled()).thenReturn(false); - - final ProcessedTemplate processedToscaTemplate = new ProcessedTemplate(); - final String errorMsg = "an error"; - processedToscaTemplate.addToErrors(Collections.singleton(errorMsg)); - when(toscaTemplateProcessor.process(any(InputStream.class))).thenReturn(processedToscaTemplate); - final ApexApiResult apexApiResult = policyUploadHandler - .doUpload(mock(ApexModel.class), mock(InputStream.class), mock(InputStream.class), USER_ID); - - assertThat("Response should not be ok", apexApiResult.isNok(), is(true)); - assertThat("Response message should be as expected", - apexApiResult.getMessage(), is(errorMsg + "\n")); - } - - @Test - public void doUploadInvalidApexConfigTemplate() throws IOException { - when(config.isEnabled()).thenReturn(false); - - when(toscaTemplateProcessor.process(any(InputStream.class))).thenReturn(new ProcessedTemplate()); - final ProcessedTemplate processedApexConfig = new ProcessedTemplate(); - final String errorMsg = "an error"; - processedApexConfig.addToErrors(Collections.singleton(errorMsg)); - when(apexConfigProcessor.process(any(InputStream.class))).thenReturn(processedApexConfig); - final ApexApiResult apexApiResult = policyUploadHandler - .doUpload(mock(ApexModel.class), mock(InputStream.class), mock(InputStream.class), USER_ID); - - assertThat("Response should not be ok", apexApiResult.isNok(), is(true)); - assertThat("Response message should be as expected", - apexApiResult.getMessage(), is(errorMsg + "\n")); - } - - @Test - public void doUploadConversionFailed() throws PolicyToscaConverterException, IOException { - final ApexModel apexModel = mockApexModel(); - final ProcessedTemplate processedToscaTemplate = new ProcessedTemplate(); - processedToscaTemplate.setContent("tosca"); - final ProcessedTemplate processedApexConfig = new ProcessedTemplate(); - processedApexConfig.setContent("apexConfig"); - when(toscaTemplateProcessor.process(any(InputStream.class))).thenReturn(processedToscaTemplate); - when(apexConfigProcessor.process(any(InputStream.class))).thenReturn(processedApexConfig); - when(policyToscaConverter.convert(eq("policy\n"), eq("apexConfig"), eq("tosca"))) - .thenThrow(PolicyToscaConverterException.class); - when(uploadPluginClient.upload(any(UploadPolicyRequestDto.class))) - .thenReturn(Response.ok().status(201).build()); - - final ApexApiResult apexApiResult = policyUploadHandler - .doUpload(apexModel, mock(InputStream.class), mock(InputStream.class), USER_ID); - - assertThat("Response should not be ok", apexApiResult.isNok(), is(true)); - final String expectedErrorMsg = String - .format("An error has occurred while uploading the converting the Policy '%s' to YAML.", - apexModel.getPolicyModel().getId()); - assertThat("Response message should be as expected", - apexApiResult.getMessage(), is(expectedErrorMsg + "\n")); - } - - private ApexModel mockApexModel() { - final ApexModel apexModel = mock(ApexModel.class); - final ApexApiResult listModelApexApiResult = new ApexApiResult(); - listModelApexApiResult.addMessage("policy"); - when(apexModel.listModel()).thenReturn(listModelApexApiResult); - final AxPolicyModel axPolicyModel = new AxPolicyModel(); - final AxArtifactKey axArtifactKey = new AxArtifactKey("policyKey", "1.0.0"); - final Map keyInfoMap = new HashMap<>(); - keyInfoMap.put(axArtifactKey, new AxKeyInfo(axArtifactKey)); - final AxKeyInformation axKeyInformation = new AxKeyInformation(axArtifactKey, keyInfoMap); - axPolicyModel.setKeyInformation(axKeyInformation); - when(apexModel.getPolicyModel()).thenReturn(axPolicyModel); - return apexModel; - } -} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ToscaTemplateProcessorTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ToscaTemplateProcessorTest.java deleted file mode 100644 index 7166621..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/converter/tosca/ToscaTemplateProcessorTest.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 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.gui.editors.apex.rest.handling.converter.tosca; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.is; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.POLICIES; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.PROPERTIES; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.TOPOLOGY_TEMPLATE; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.PolicyToscaConverter.ToscaKey.TOSCA_DEFINITIONS_VERSION; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.INVALID_ENTRY; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.INVALID_POLICY; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.INVALID_TOSCA_TEMPLATE; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.MISSING_ENTRY; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.MISSING_POLICY; -import static org.onap.policy.gui.editors.apex.rest.handling.converter.tosca.ToscaTemplateProcessor.ErrorMessage.ONLY_ONE_POLICY_ALLOWED; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.List; -import org.junit.Test; -import org.onap.policy.common.utils.coder.StandardCoder; - -public class ToscaTemplateProcessorTest { - - private final ToscaTemplateProcessor toscaTemplateProcessor = new ToscaTemplateProcessor(new StandardCoder()); - private final Path testResourcesPath = Paths.get("src", "test", "resources", "processor"); - - @Test - public void testProcessSuccess() throws IOException { - final String fileName = "ToscaTemplate.json"; - final ProcessedTemplate process; - try (final FileInputStream fileInputStream = readFileAsStream(fileName)) { - process = toscaTemplateProcessor.process(fileInputStream); - } - assertThat("Template should be valid", process.isValid(), is(true)); - final String expectedContent = readFileAsString(fileName); - assertThat("Content should be the same", process.getContent(), is(expectedContent)); - } - - @Test - public void testProcessMissingPoliciesEntry() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-missing-policies.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, List.of(MISSING_ENTRY.getMessage(POLICIES.getKey()))); - } - - @Test - public void testProcessMissingTopologyTemplate() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-missing-topology-template.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, - List.of(MISSING_ENTRY.getMessage(TOPOLOGY_TEMPLATE.getKey()))); - } - - @Test - public void testProcessMissingPolicy() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-missing-policy.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, List.of(MISSING_POLICY.getMessage())); - } - - @Test - public void testProcessMissingToscaDefinitionsVersion() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream( - "ToscaTemplate-missing-tosca-definitions-version.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, - List.of(MISSING_ENTRY.getMessage(TOSCA_DEFINITIONS_VERSION.getKey()))); - } - - @Test - public void testProcessMissingProperties() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-missing-properties.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, List.of(MISSING_ENTRY.getMessage(PROPERTIES.getKey()))); - } - - @Test - public void testProcessMoreThanOnePolicy() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-more-than-one-policy.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, List.of(ONLY_ONE_POLICY_ALLOWED.getMessage())); - } - - @Test - public void testProcessInvalidToscaTemplate() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-invalid.jsonbad")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, List.of(INVALID_TOSCA_TEMPLATE.getMessage())); - } - - @Test - public void testProcessInvalidEntryToscaDefinitionsVersion() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-invalid-toscaDefinitions.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, - List.of(INVALID_ENTRY.getMessage(TOSCA_DEFINITIONS_VERSION.getKey()))); - } - - @Test - public void testProcessInvalidEntryTopologyTemplate() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream( - "ToscaTemplate-invalidEntry-topologyTemplate.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, - List.of(INVALID_ENTRY.getMessage(TOPOLOGY_TEMPLATE.getKey()))); - } - - @Test - public void testProcessInvalidEntryPolicies() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-invalidEntry-policies.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, List.of(INVALID_ENTRY.getMessage(POLICIES.getKey()))); - } - - @Test - public void testProcessInvalidPolicy() throws IOException { - ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-invalidPolicy1.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, List.of(INVALID_POLICY.getMessage())); - - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-invalidPolicy2.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, List.of(INVALID_POLICY.getMessage())); - } - - @Test - public void testProcessInvalidEntryProperties() throws IOException { - final ProcessedTemplate processedTemplate; - try (final FileInputStream fileInputStream = readFileAsStream("ToscaTemplate-invalidEntry-properties.json")) { - processedTemplate = toscaTemplateProcessor.process(fileInputStream); - } - assertProcessedTemplate(processedTemplate, false, List.of(INVALID_ENTRY.getMessage(PROPERTIES.getKey()))); - } - - private void assertProcessedTemplate(final ProcessedTemplate process, boolean isValid, - final List expectedErrorList) { - assertThat("Template should be valid", process.isValid(), is(isValid)); - if (isValid || expectedErrorList == null) { - return; - } - assertThat("Should contains the expected quantity of errors", process.getErrorSet().size(), - is(expectedErrorList.size())); - expectedErrorList.forEach(errorMsg -> assertThat("Should contains a specific error message", - process.getErrorSet(), contains(errorMsg))); - } - - private FileInputStream readFileAsStream(final String fileName) throws FileNotFoundException { - final Path path = Paths.get(testResourcesPath.toString(), fileName); - return new FileInputStream(path.toFile()); - } - - private String readFileAsString(final String fileName) throws IOException { - final Path path = Paths.get(testResourcesPath.toString(), fileName); - return Files.readString(path); - } - -} \ No newline at end of file diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPluginClientTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPluginClientTest.java deleted file mode 100644 index ab9445e..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPluginClientTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 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.gui.editors.apex.rest.handling.plugin.upload; - -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import javax.ws.rs.client.Client; -import javax.ws.rs.client.Invocation.Builder; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.onap.policy.gui.editors.apex.rest.UploadPluginConfigParameters; -import org.onap.policy.gui.editors.apex.rest.handling.config.PolicyUploadPluginConfigKey; - -public class UploadPluginClientTest { - - private UploadPluginClient uploadPluginClient; - - @Mock - private Client client; - - private static final String url = "aUrl"; - - /** - * Init the mocks and system properties. - */ - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - System.setProperty(PolicyUploadPluginConfigKey.URL.getKey(), url); - final UploadPluginConfigParameters uploadPluginConfigParameters = new UploadPluginConfigParameters(); - uploadPluginClient = new UploadPluginClient(client, uploadPluginConfigParameters); - } - - @Test - public void upload() { - final Builder mockBuilder = mock(Builder.class); - final WebTarget mockWebTarget = mock(WebTarget.class); - final Response mockResponse = mock(Response.class); - doReturn(mockWebTarget).when(client).target(url); - doReturn(mockBuilder).when(mockWebTarget).request(MediaType.APPLICATION_JSON); - when(mockBuilder.post(any())).thenReturn(mockResponse); - final Response actualResponse = uploadPluginClient.upload(new UploadPolicyRequestDto()); - assertEquals(mockResponse, actualResponse); - } -} \ No newline at end of file diff --git a/gui-editors/gui-editor-apex/src/test/resources/models/PolicyModel.json b/gui-editors/gui-editor-apex/src/test/resources/models/PolicyModel.json index 81c2226..9e3ea51 100644 --- a/gui-editors/gui-editor-apex/src/test/resources/models/PolicyModel.json +++ b/gui-editors/gui-editor-apex/src/test/resources/models/PolicyModel.json @@ -1,708 +1,825 @@ { - "apexPolicyModel" : { - "key" : { - "name" : "PolicyModel", - "version" : "0.0.1" - }, - "keyInformation" : { - "key" : { - "name" : "KeyInfoMapKey", - "version" : "0.0.1" - }, - "keyInfoMap" : { - "entry" : [ { - "key" : { - "name" : "ContextSchemas", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "ContextSchemas", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e000", - "description" : "Generated description for concept referred to by key \"ContextSchemas:0.0.1\"" - } - }, { - "key" : { - "name" : "KeyInfoMapKey", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "KeyInfoMapKey", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e001", - "description" : "Generated description for concept referred to by key \"KeyInfoMapKey:0.0.1\"" - } - }, { - "key" : { - "name" : "MapType", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "MapType", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e002", - "description" : "Generated description for concept referred to by key \"MapType:0.0.1\"" - } - }, { - "key" : { - "name" : "PolicyModel", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "PolicyModel", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e003", - "description" : "Generated description for concept referred to by key \"PolicyModel:0.0.1\"" - } - }, { - "key" : { - "name" : "StringType", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "StringType", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e004", - "description" : "Generated description for concept referred to by key \"StringType:0.0.1\"" - } - }, { - "key" : { - "name" : "context", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "context", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e005", - "description" : "Generated description for concept referred to by key \"context:0.0.1\"" - } - }, { - "key" : { - "name" : "contextAlbum0", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "contextAlbum0", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e006", - "description" : "Generated description for concept referred to by key \"contextAlbum0:0.0.1\"" - } - }, { - "key" : { - "name" : "contextAlbum1", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "contextAlbum1", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e007", - "description" : "Generated description for concept referred to by key \"contextAlbum1:0.0.1\"" - } - }, { - "key" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e008", - "description" : "Generated description for concept referred to by key \"eventContextItem0:0.0.1\"" - } - }, { - "key" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e009", - "description" : "Generated description for concept referred to by key \"eventContextItem1:0.0.1\"" - } - }, { - "key" : { - "name" : "events", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "events", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e010", - "description" : "Generated description for concept referred to by key \"events:0.0.1\"" - } - }, { - "key" : { - "name" : "inEvent", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "inEvent", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e011", - "description" : "Generated description for concept referred to by key \"inEvent:0.0.1\"" - } - }, { - "key" : { - "name" : "outEvent0", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "outEvent0", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e012", - "description" : "Generated description for concept referred to by key \"outEvent0:0.0.1\"" - } - }, { - "key" : { - "name" : "outEvent1", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "outEvent1", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e013", - "description" : "Generated description for concept referred to by key \"outEvent1:0.0.1\"" - } - }, { - "key" : { - "name" : "policies", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "policies", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e014", - "description" : "Generated description for concept referred to by key \"policies:0.0.1\"" - } - }, { - "key" : { - "name" : "policy", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "policy", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e015", - "description" : "Generated description for concept referred to by key \"policy:0.0.1\"" - } - }, { - "key" : { - "name" : "task", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "task", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e016", - "description" : "Generated description for concept referred to by key \"task:0.0.1\"" - } - }, { - "key" : { - "name" : "tasks", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "tasks", - "version" : "0.0.1" - }, - "UUID" : "0ce9168c-e6df-414f-9646-6da464b6e017", - "description" : "Generated description for concept referred to by key \"tasks:0.0.1\"" - } - } ] - } - }, - "policies" : { - "key" : { - "name" : "policies", - "version" : "0.0.1" - }, - "policyMap" : { - "entry" : [ { - "key" : { - "name" : "policy", - "version" : "0.0.1" - }, - "value" : { - "policyKey" : { - "name" : "policy", - "version" : "0.0.1" - }, - "template" : "FREEFORM", - "state" : { - "entry" : [ { - "key" : "state", - "value" : { - "stateKey" : { - "parentKeyName" : "policy", - "parentKeyVersion" : "0.0.1", - "parentLocalName" : "NULL", - "localName" : "state" - }, - "trigger" : { - "name" : "inEvent", - "version" : "0.0.1" - }, - "stateOutputs" : { - "entry" : [ { - "key" : "stateOutput0", - "value" : { - "key" : { - "parentKeyName" : "policy", - "parentKeyVersion" : "0.0.1", - "parentLocalName" : "state", - "localName" : "stateOutput0" + "tosca_definitions_version": "tosca_simple_yaml_1_0_0", + "topology_template": { + "policies": [ + { + "onap.policies.native.apex.Vcpe": { + "type": "onap.policies.native.Apex", + "type_version": "1.0.0", + "properties": { + "engineServiceParameters": { + "name": "MyApexEngine", + "version": "0.0.1", + "id": 45, + "instanceCount": 4, + "deploymentPort": 12561, + "policyModelFileName": "/home/apexuser/examples/models/ONAPvCPE/ONAPvCPEPolicyModel.json", + "engineParameters": { + "executorParameters": { + "JAVASCRIPT": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" + } + }, + "contextParameters": { + "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters", + "schemaParameters": { + "Avro": { + "parameterClassName": "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters" + }, + "Java": { + "parameterClassName": "org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters", + "jsonAdapters": { + "Instant": { + "adaptedClass": "java.time.Instant", + "adaptorClass": "org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter" + } + } + } + } + } + }, + "policy_type_impl": { + "apexPolicyModel": { + "key": { + "name": "PolicyModel", + "version": "0.0.1" }, - "outgoingEvent" : { - "name" : "outEvent0", - "version" : "0.0.1" + "keyInformation": { + "key": { + "name": "KeyInfoMapKey", + "version": "0.0.1" + }, + "keyInfoMap": { + "entry": [ + { + "key": { + "name": "ContextSchemas", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "ContextSchemas", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e000", + "description": "Generated description for concept referred to by key \"ContextSchemas:0.0.1\"" + } + }, + { + "key": { + "name": "KeyInfoMapKey", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "KeyInfoMapKey", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e001", + "description": "Generated description for concept referred to by key \"KeyInfoMapKey:0.0.1\"" + } + }, + { + "key": { + "name": "MapType", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "MapType", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e002", + "description": "Generated description for concept referred to by key \"MapType:0.0.1\"" + } + }, + { + "key": { + "name": "PolicyModel", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "PolicyModel", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e003", + "description": "Generated description for concept referred to by key \"PolicyModel:0.0.1\"" + } + }, + { + "key": { + "name": "StringType", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "StringType", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e004", + "description": "Generated description for concept referred to by key \"StringType:0.0.1\"" + } + }, + { + "key": { + "name": "context", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "context", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e005", + "description": "Generated description for concept referred to by key \"context:0.0.1\"" + } + }, + { + "key": { + "name": "contextAlbum0", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "contextAlbum0", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e006", + "description": "Generated description for concept referred to by key \"contextAlbum0:0.0.1\"" + } + }, + { + "key": { + "name": "contextAlbum1", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "contextAlbum1", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e007", + "description": "Generated description for concept referred to by key \"contextAlbum1:0.0.1\"" + } + }, + { + "key": { + "name": "eventContextItem0", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "eventContextItem0", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e008", + "description": "Generated description for concept referred to by key \"eventContextItem0:0.0.1\"" + } + }, + { + "key": { + "name": "eventContextItem1", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "eventContextItem1", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e009", + "description": "Generated description for concept referred to by key \"eventContextItem1:0.0.1\"" + } + }, + { + "key": { + "name": "events", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "events", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e010", + "description": "Generated description for concept referred to by key \"events:0.0.1\"" + } + }, + { + "key": { + "name": "inEvent", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "inEvent", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e011", + "description": "Generated description for concept referred to by key \"inEvent:0.0.1\"" + } + }, + { + "key": { + "name": "outEvent0", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "outEvent0", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e012", + "description": "Generated description for concept referred to by key \"outEvent0:0.0.1\"" + } + }, + { + "key": { + "name": "outEvent1", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "outEvent1", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e013", + "description": "Generated description for concept referred to by key \"outEvent1:0.0.1\"" + } + }, + { + "key": { + "name": "policies", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "policies", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e014", + "description": "Generated description for concept referred to by key \"policies:0.0.1\"" + } + }, + { + "key": { + "name": "policy", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "policy", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e015", + "description": "Generated description for concept referred to by key \"policy:0.0.1\"" + } + }, + { + "key": { + "name": "task", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "task", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e016", + "description": "Generated description for concept referred to by key \"task:0.0.1\"" + } + }, + { + "key": { + "name": "tasks", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "tasks", + "version": "0.0.1" + }, + "UUID": "0ce9168c-e6df-414f-9646-6da464b6e017", + "description": "Generated description for concept referred to by key \"tasks:0.0.1\"" + } + } + ] + } }, - "nextState" : { - "parentKeyName" : "NULL", - "parentKeyVersion" : "0.0.0", - "parentLocalName" : "NULL", - "localName" : "NULL" - } - } - } ] - }, - "contextAlbumReference" : [ { - "name" : "contextAlbum0", - "version" : "0.0.1" - }, { - "name" : "contextAlbum1", - "version" : "0.0.1" - } ], - "taskSelectionLogic" : { - "key" : "taskSelectionLogic", - "logicFlavour" : "MVEL", - "logic" : "Some TS logic" - }, - "stateFinalizerLogicMap" : { - "entry" : [ ] - }, - "defaultTask" : { - "name" : "task", - "version" : "0.0.1" - }, - "taskReferences" : { - "entry" : [ { - "key" : { - "name" : "task", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "parentKeyName" : "policy", - "parentKeyVersion" : "0.0.1", - "parentLocalName" : "state", - "localName" : "task" + "policies": { + "key": { + "name": "policies", + "version": "0.0.1" + }, + "policyMap": { + "entry": [ + { + "key": { + "name": "policy", + "version": "0.0.1" + }, + "value": { + "policyKey": { + "name": "policy", + "version": "0.0.1" + }, + "template": "FREEFORM", + "state": { + "entry": [ + { + "key": "state", + "value": { + "stateKey": { + "parentKeyName": "policy", + "parentKeyVersion": "0.0.1", + "parentLocalName": "NULL", + "localName": "state" + }, + "trigger": { + "name": "inEvent", + "version": "0.0.1" + }, + "stateOutputs": { + "entry": [ + { + "key": "stateOutput0", + "value": { + "key": { + "parentKeyName": "policy", + "parentKeyVersion": "0.0.1", + "parentLocalName": "state", + "localName": "stateOutput0" + }, + "outgoingEvent": { + "name": "outEvent0", + "version": "0.0.1" + }, + "nextState": { + "parentKeyName": "NULL", + "parentKeyVersion": "0.0.0", + "parentLocalName": "NULL", + "localName": "NULL" + } + } + } + ] + }, + "contextAlbumReference": [ + { + "name": "contextAlbum0", + "version": "0.0.1" + }, + { + "name": "contextAlbum1", + "version": "0.0.1" + } + ], + "taskSelectionLogic": { + "key": "taskSelectionLogic", + "logicFlavour": "MVEL", + "logic": "Some TS logic" + }, + "stateFinalizerLogicMap": { + "entry": [ + ] + }, + "defaultTask": { + "name": "task", + "version": "0.0.1" + }, + "taskReferences": { + "entry": [ + { + "key": { + "name": "task", + "version": "0.0.1" + }, + "value": { + "key": { + "parentKeyName": "policy", + "parentKeyVersion": "0.0.1", + "parentLocalName": "state", + "localName": "task" + }, + "outputType": "DIRECT", + "output": { + "parentKeyName": "policy", + "parentKeyVersion": "0.0.1", + "parentLocalName": "state", + "localName": "stateOutput0" + } + } + } + ] + } + } + } + ] + }, + "firstState": "state" + } + } + ] + } + }, + "tasks": { + "key": { + "name": "tasks", + "version": "0.0.1" + }, + "taskMap": { + "entry": [ + { + "key": { + "name": "task", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "task", + "version": "0.0.1" + }, + "inputFields": { + "entry": [ + { + "key": "IEPAR0", + "value": { + "key": "IEPAR0", + "fieldSchemaKey": { + "name": "eventContextItem0", + "version": "0.0.1" + } + } + }, + { + "key": "IEPAR1", + "value": { + "key": "IEPAR1", + "fieldSchemaKey": { + "name": "eventContextItem1", + "version": "0.0.1" + } + } + } + ] + }, + "outputFields": { + "entry": [ + { + "key": "OE0PAR0", + "value": { + "key": "OE0PAR0", + "fieldSchemaKey": { + "name": "eventContextItem0", + "version": "0.0.1" + } + } + }, + { + "key": "OE0PAR1", + "value": { + "key": "OE0PAR1", + "fieldSchemaKey": { + "name": "eventContextItem1", + "version": "0.0.1" + } + } + }, + { + "key": "OE1PAR0", + "value": { + "key": "OE1PAR0", + "fieldSchemaKey": { + "name": "eventContextItem0", + "version": "0.0.1" + } + } + }, + { + "key": "OE1PAR1", + "value": { + "key": "OE1PAR1", + "fieldSchemaKey": { + "name": "eventContextItem1", + "version": "0.0.1" + } + } + } + ] + }, + "taskParameters": { + "entry": [ + { + "key": "taskParameter0", + "value": { + "key": { + "parentKeyName": "task", + "parentKeyVersion": "0.0.1", + "parentLocalName": "NULL", + "localName": "taskParameter0" + }, + "defaultValue": "Task parameter 0 value" + } + }, + { + "key": "taskParameter1", + "value": { + "key": { + "parentKeyName": "task", + "parentKeyVersion": "0.0.1", + "parentLocalName": "NULL", + "localName": "taskParameter1" + }, + "defaultValue": "Task parameter 1 value" + } + } + ] + }, + "contextAlbumReference": [ + { + "name": "contextAlbum0", + "version": "0.0.1" + }, + { + "name": "contextAlbum1", + "version": "0.0.1" + } + ], + "taskLogic": { + "key": "taskLogic", + "logicFlavour": "MVEL", + "logic": "Some task logic" + } + } + } + ] + } + }, + "events": { + "key": { + "name": "events", + "version": "0.0.1" + }, + "eventMap": { + "entry": [ + { + "key": { + "name": "inEvent", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "inEvent", + "version": "0.0.1" + }, + "nameSpace": "org.onap.policy.apex.model.policymodel.events", + "source": "Source", + "target": "Target", + "parameter": { + "entry": [ + { + "key": "IEPAR0", + "value": { + "key": "IEPAR0", + "fieldSchemaKey": { + "name": "eventContextItem0", + "version": "0.0.1" + } + } + }, + { + "key": "IEPAR1", + "value": { + "key": "IEPAR1", + "fieldSchemaKey": { + "name": "eventContextItem1", + "version": "0.0.1" + } + } + } + ] + } + } + }, + { + "key": { + "name": "outEvent0", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "outEvent0", + "version": "0.0.1" + }, + "nameSpace": "org.onap.policy.apex.model.policymodel.events", + "source": "Source", + "target": "Target", + "parameter": { + "entry": [ + { + "key": "OE0PAR0", + "value": { + "key": "OE0PAR0", + "fieldSchemaKey": { + "name": "eventContextItem0", + "version": "0.0.1" + } + } + }, + { + "key": "OE0PAR1", + "value": { + "key": "OE0PAR1", + "fieldSchemaKey": { + "name": "eventContextItem1", + "version": "0.0.1" + } + } + }, + { + "key": "OE1PAR0", + "value": { + "key": "OE1PAR0", + "fieldSchemaKey": { + "name": "eventContextItem0", + "version": "0.0.1" + } + } + }, + { + "key": "OE1PAR1", + "value": { + "key": "OE1PAR1", + "fieldSchemaKey": { + "name": "eventContextItem1", + "version": "0.0.1" + } + } + } + ] + } + } + }, + { + "key": { + "name": "outEvent1", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "outEvent1", + "version": "0.0.1" + }, + "nameSpace": "org.onap.policy.apex.model.policymodel.events", + "source": "Source", + "target": "Target", + "parameter": { + "entry": [ + { + "key": "OE1PAR0", + "value": { + "key": "OE1PAR0", + "fieldSchemaKey": { + "name": "eventContextItem0", + "version": "0.0.1" + } + } + }, + { + "key": "OE1PAR1", + "value": { + "key": "OE1PAR1", + "fieldSchemaKey": { + "name": "eventContextItem1", + "version": "0.0.1" + } + } + } + ] + } + } + } + ] + } + }, + "albums": { + "key": { + "name": "context", + "version": "0.0.1" + }, + "albums": { + "entry": [ + { + "key": { + "name": "contextAlbum0", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "contextAlbum0", + "version": "0.0.1" + }, + "scope": "APPLICATION", + "isWritable": true, + "itemSchema": { + "name": "MapType", + "version": "0.0.1" + } + } + }, + { + "key": { + "name": "contextAlbum1", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "contextAlbum1", + "version": "0.0.1" + }, + "scope": "GLOBAL", + "isWritable": false, + "itemSchema": { + "name": "StringType", + "version": "0.0.1" + } + } + } + ] + } }, - "outputType" : "DIRECT", - "output" : { - "parentKeyName" : "policy", - "parentKeyVersion" : "0.0.1", - "parentLocalName" : "state", - "localName" : "stateOutput0" + "schemas": { + "key": { + "name": "ContextSchemas", + "version": "0.0.1" + }, + "schemas": { + "entry": [ + { + "key": { + "name": "MapType", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "MapType", + "version": "0.0.1" + }, + "schemaFlavour": "Java", + "schemaDefinition": "org.onap.policy.apex.model.policymodel.concepts.TestContextItem00A" + } + }, + { + "key": { + "name": "StringType", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "StringType", + "version": "0.0.1" + }, + "schemaFlavour": "Java", + "schemaDefinition": "org.onap.policy.apex.model.policymodel.concepts.TestContextItem000" + } + }, + { + "key": { + "name": "eventContextItem0", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "eventContextItem0", + "version": "0.0.1" + }, + "schemaFlavour": "Java", + "schemaDefinition": "java.lang.String" + } + }, + { + "key": { + "name": "eventContextItem1", + "version": "0.0.1" + }, + "value": { + "key": { + "name": "eventContextItem1", + "version": "0.0.1" + }, + "schemaFlavour": "Java", + "schemaDefinition": "java.lang.Long" + } + } + ] + } } - } - } ] - } - } - } ] - }, - "firstState" : "state" - } - } ] - } - }, - "tasks" : { - "key" : { - "name" : "tasks", - "version" : "0.0.1" - }, - "taskMap" : { - "entry" : [ { - "key" : { - "name" : "task", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "task", - "version" : "0.0.1" - }, - "inputFields" : { - "entry" : [ { - "key" : "IEPAR0", - "value" : { - "key" : "IEPAR0", - "fieldSchemaKey" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - } - } - }, { - "key" : "IEPAR1", - "value" : { - "key" : "IEPAR1", - "fieldSchemaKey" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - } - } - } ] - }, - "outputFields" : { - "entry" : [ { - "key" : "OE0PAR0", - "value" : { - "key" : "OE0PAR0", - "fieldSchemaKey" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - } - } - }, { - "key" : "OE0PAR1", - "value" : { - "key" : "OE0PAR1", - "fieldSchemaKey" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - } - } - }, { - "key" : "OE1PAR0", - "value" : { - "key" : "OE1PAR0", - "fieldSchemaKey" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - } - } - }, { - "key" : "OE1PAR1", - "value" : { - "key" : "OE1PAR1", - "fieldSchemaKey" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - } - } - } ] - }, - "taskParameters" : { - "entry" : [ { - "key" : "taskParameter0", - "value" : { - "key" : { - "parentKeyName" : "task", - "parentKeyVersion" : "0.0.1", - "parentLocalName" : "NULL", - "localName" : "taskParameter0" - }, - "defaultValue" : "Task parameter 0 value" - } - }, { - "key" : "taskParameter1", - "value" : { - "key" : { - "parentKeyName" : "task", - "parentKeyVersion" : "0.0.1", - "parentLocalName" : "NULL", - "localName" : "taskParameter1" - }, - "defaultValue" : "Task parameter 1 value" - } - } ] - }, - "contextAlbumReference" : [ { - "name" : "contextAlbum0", - "version" : "0.0.1" - }, { - "name" : "contextAlbum1", - "version" : "0.0.1" - } ], - "taskLogic" : { - "key" : "taskLogic", - "logicFlavour" : "MVEL", - "logic" : "Some task logic" - } - } - } ] - } - }, - "events" : { - "key" : { - "name" : "events", - "version" : "0.0.1" - }, - "eventMap" : { - "entry" : [ { - "key" : { - "name" : "inEvent", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "inEvent", - "version" : "0.0.1" - }, - "nameSpace" : "org.onap.policy.apex.model.policymodel.events", - "source" : "Source", - "target" : "Target", - "parameter" : { - "entry" : [ { - "key" : "IEPAR0", - "value" : { - "key" : "IEPAR0", - "fieldSchemaKey" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - } - } - }, { - "key" : "IEPAR1", - "value" : { - "key" : "IEPAR1", - "fieldSchemaKey" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - } - } - } ] - } - } - }, { - "key" : { - "name" : "outEvent0", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "outEvent0", - "version" : "0.0.1" - }, - "nameSpace" : "org.onap.policy.apex.model.policymodel.events", - "source" : "Source", - "target" : "Target", - "parameter" : { - "entry" : [ { - "key" : "OE0PAR0", - "value" : { - "key" : "OE0PAR0", - "fieldSchemaKey" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - } - } - }, { - "key" : "OE0PAR1", - "value" : { - "key" : "OE0PAR1", - "fieldSchemaKey" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - } - } - }, { - "key" : "OE1PAR0", - "value" : { - "key" : "OE1PAR0", - "fieldSchemaKey" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - } - } - }, { - "key" : "OE1PAR1", - "value" : { - "key" : "OE1PAR1", - "fieldSchemaKey" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - } - } - } ] - } - } - }, { - "key" : { - "name" : "outEvent1", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "outEvent1", - "version" : "0.0.1" - }, - "nameSpace" : "org.onap.policy.apex.model.policymodel.events", - "source" : "Source", - "target" : "Target", - "parameter" : { - "entry" : [ { - "key" : "OE1PAR0", - "value" : { - "key" : "OE1PAR0", - "fieldSchemaKey" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - } - } - }, { - "key" : "OE1PAR1", - "value" : { - "key" : "OE1PAR1", - "fieldSchemaKey" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - } + } + } } - } ] - } - } - } ] - } - }, - "albums" : { - "key" : { - "name" : "context", - "version" : "0.0.1" - }, - "albums" : { - "entry" : [ { - "key" : { - "name" : "contextAlbum0", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "contextAlbum0", - "version" : "0.0.1" - }, - "scope" : "APPLICATION", - "isWritable" : true, - "itemSchema" : { - "name" : "MapType", - "version" : "0.0.1" - } - } - }, { - "key" : { - "name" : "contextAlbum1", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "contextAlbum1", - "version" : "0.0.1" - }, - "scope" : "GLOBAL", - "isWritable" : false, - "itemSchema" : { - "name" : "StringType", - "version" : "0.0.1" - } - } - } ] - } - }, - "schemas" : { - "key" : { - "name" : "ContextSchemas", - "version" : "0.0.1" - }, - "schemas" : { - "entry" : [ { - "key" : { - "name" : "MapType", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "MapType", - "version" : "0.0.1" - }, - "schemaFlavour" : "Java", - "schemaDefinition" : "org.onap.policy.apex.model.policymodel.concepts.TestContextItem00A" - } - }, { - "key" : { - "name" : "StringType", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "StringType", - "version" : "0.0.1" - }, - "schemaFlavour" : "Java", - "schemaDefinition" : "org.onap.policy.apex.model.policymodel.concepts.TestContextItem000" - } - }, { - "key" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "eventContextItem0", - "version" : "0.0.1" - }, - "schemaFlavour" : "Java", - "schemaDefinition" : "java.lang.String" - } - }, { - "key" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - }, - "value" : { - "key" : { - "name" : "eventContextItem1", - "version" : "0.0.1" - }, - "schemaFlavour" : "Java", - "schemaDefinition" : "java.lang.Long" - } - } ] - } - } - } -} \ No newline at end of file + } + } + } + ] + } +} diff --git a/gui-editors/gui-editor-apex/src/test/resources/models/PolicyModel.yaml b/gui-editors/gui-editor-apex/src/test/resources/models/PolicyModel.yaml new file mode 100644 index 0000000..201085c --- /dev/null +++ b/gui-editors/gui-editor-apex/src/test/resources/models/PolicyModel.yaml @@ -0,0 +1,538 @@ +--- +tosca_definitions_version: tosca_simple_yaml_1_0_0 +topology_template: + policies: + - onap.policies.native.apex.Vcpe: + type: onap.policies.native.Apex + type_version: 1.0.0 + properties: + engineServiceParameters: + name: MyApexEngine + version: 0.0.1 + id: 45 + instanceCount: 4 + deploymentPort: 12561 + policyModelFileName: "/home/apexuser/examples/models/ONAPvCPE/ONAPvCPEPolicyModel.json" + engineParameters: + executorParameters: + JAVASCRIPT: + parameterClassName: org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters + contextParameters: + parameterClassName: org.onap.policy.apex.context.parameters.ContextParameters + schemaParameters: + Avro: + parameterClassName: org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters + Java: + parameterClassName: org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters + jsonAdapters: + Instant: + adaptedClass: java.time.Instant + adaptorClass: org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter + policy_type_impl: + apexPolicyModel: + key: + name: PolicyModel + version: 0.0.1 + keyInformation: + key: + name: KeyInfoMapKey + version: 0.0.1 + keyInfoMap: + entry: + - key: + name: ContextSchemas + version: 0.0.1 + value: + key: + name: ContextSchemas + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e000 + description: Generated description for concept referred to by + key "ContextSchemas:0.0.1" + - key: + name: KeyInfoMapKey + version: 0.0.1 + value: + key: + name: KeyInfoMapKey + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e001 + description: Generated description for concept referred to by + key "KeyInfoMapKey:0.0.1" + - key: + name: MapType + version: 0.0.1 + value: + key: + name: MapType + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e002 + description: Generated description for concept referred to by + key "MapType:0.0.1" + - key: + name: PolicyModel + version: 0.0.1 + value: + key: + name: PolicyModel + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e003 + description: Generated description for concept referred to by + key "PolicyModel:0.0.1" + - key: + name: StringType + version: 0.0.1 + value: + key: + name: StringType + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e004 + description: Generated description for concept referred to by + key "StringType:0.0.1" + - key: + name: context + version: 0.0.1 + value: + key: + name: context + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e005 + description: Generated description for concept referred to by + key "context:0.0.1" + - key: + name: contextAlbum0 + version: 0.0.1 + value: + key: + name: contextAlbum0 + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e006 + description: Generated description for concept referred to by + key "contextAlbum0:0.0.1" + - key: + name: contextAlbum1 + version: 0.0.1 + value: + key: + name: contextAlbum1 + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e007 + description: Generated description for concept referred to by + key "contextAlbum1:0.0.1" + - key: + name: eventContextItem0 + version: 0.0.1 + value: + key: + name: eventContextItem0 + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e008 + description: Generated description for concept referred to by + key "eventContextItem0:0.0.1" + - key: + name: eventContextItem1 + version: 0.0.1 + value: + key: + name: eventContextItem1 + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e009 + description: Generated description for concept referred to by + key "eventContextItem1:0.0.1" + - key: + name: events + version: 0.0.1 + value: + key: + name: events + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e010 + description: Generated description for concept referred to by + key "events:0.0.1" + - key: + name: inEvent + version: 0.0.1 + value: + key: + name: inEvent + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e011 + description: Generated description for concept referred to by + key "inEvent:0.0.1" + - key: + name: outEvent0 + version: 0.0.1 + value: + key: + name: outEvent0 + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e012 + description: Generated description for concept referred to by + key "outEvent0:0.0.1" + - key: + name: outEvent1 + version: 0.0.1 + value: + key: + name: outEvent1 + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e013 + description: Generated description for concept referred to by + key "outEvent1:0.0.1" + - key: + name: policies + version: 0.0.1 + value: + key: + name: policies + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e014 + description: Generated description for concept referred to by + key "policies:0.0.1" + - key: + name: policy + version: 0.0.1 + value: + key: + name: policy + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e015 + description: Generated description for concept referred to by + key "policy:0.0.1" + - key: + name: task + version: 0.0.1 + value: + key: + name: task + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e016 + description: Generated description for concept referred to by + key "task:0.0.1" + - key: + name: tasks + version: 0.0.1 + value: + key: + name: tasks + version: 0.0.1 + UUID: 0ce9168c-e6df-414f-9646-6da464b6e017 + description: Generated description for concept referred to by + key "tasks:0.0.1" + policies: + key: + name: policies + version: 0.0.1 + policyMap: + entry: + - key: + name: policy + version: 0.0.1 + value: + policyKey: + name: policy + version: 0.0.1 + template: FREEFORM + state: + entry: + - key: state + value: + stateKey: + parentKeyName: policy + parentKeyVersion: 0.0.1 + parentLocalName: 'NULL' + localName: state + trigger: + name: inEvent + version: 0.0.1 + stateOutputs: + entry: + - key: stateOutput0 + value: + key: + parentKeyName: policy + parentKeyVersion: 0.0.1 + parentLocalName: state + localName: stateOutput0 + outgoingEvent: + name: outEvent0 + version: 0.0.1 + nextState: + parentKeyName: 'NULL' + parentKeyVersion: 0.0.0 + parentLocalName: 'NULL' + localName: 'NULL' + contextAlbumReference: + - name: contextAlbum0 + version: 0.0.1 + - name: contextAlbum1 + version: 0.0.1 + taskSelectionLogic: + key: taskSelectionLogic + logicFlavour: MVEL + logic: Some TS logic + stateFinalizerLogicMap: + entry: [] + defaultTask: + name: task + version: 0.0.1 + taskReferences: + entry: + - key: + name: task + version: 0.0.1 + value: + key: + parentKeyName: policy + parentKeyVersion: 0.0.1 + parentLocalName: state + localName: task + outputType: DIRECT + output: + parentKeyName: policy + parentKeyVersion: 0.0.1 + parentLocalName: state + localName: stateOutput0 + firstState: state + tasks: + key: + name: tasks + version: 0.0.1 + taskMap: + entry: + - key: + name: task + version: 0.0.1 + value: + key: + name: task + version: 0.0.1 + inputFields: + entry: + - key: IEPAR0 + value: + key: IEPAR0 + fieldSchemaKey: + name: eventContextItem0 + version: 0.0.1 + - key: IEPAR1 + value: + key: IEPAR1 + fieldSchemaKey: + name: eventContextItem1 + version: 0.0.1 + outputFields: + entry: + - key: OE0PAR0 + value: + key: OE0PAR0 + fieldSchemaKey: + name: eventContextItem0 + version: 0.0.1 + - key: OE0PAR1 + value: + key: OE0PAR1 + fieldSchemaKey: + name: eventContextItem1 + version: 0.0.1 + - key: OE1PAR0 + value: + key: OE1PAR0 + fieldSchemaKey: + name: eventContextItem0 + version: 0.0.1 + - key: OE1PAR1 + value: + key: OE1PAR1 + fieldSchemaKey: + name: eventContextItem1 + version: 0.0.1 + taskParameters: + entry: + - key: taskParameter0 + value: + key: + parentKeyName: task + parentKeyVersion: 0.0.1 + parentLocalName: 'NULL' + localName: taskParameter0 + defaultValue: Task parameter 0 value + - key: taskParameter1 + value: + key: + parentKeyName: task + parentKeyVersion: 0.0.1 + parentLocalName: 'NULL' + localName: taskParameter1 + defaultValue: Task parameter 1 value + contextAlbumReference: + - name: contextAlbum0 + version: 0.0.1 + - name: contextAlbum1 + version: 0.0.1 + taskLogic: + key: taskLogic + logicFlavour: MVEL + logic: Some task logic + events: + key: + name: events + version: 0.0.1 + eventMap: + entry: + - key: + name: inEvent + version: 0.0.1 + value: + key: + name: inEvent + version: 0.0.1 + nameSpace: org.onap.policy.apex.model.policymodel.events + source: Source + target: Target + parameter: + entry: + - key: IEPAR0 + value: + key: IEPAR0 + fieldSchemaKey: + name: eventContextItem0 + version: 0.0.1 + - key: IEPAR1 + value: + key: IEPAR1 + fieldSchemaKey: + name: eventContextItem1 + version: 0.0.1 + - key: + name: outEvent0 + version: 0.0.1 + value: + key: + name: outEvent0 + version: 0.0.1 + nameSpace: org.onap.policy.apex.model.policymodel.events + source: Source + target: Target + parameter: + entry: + - key: OE0PAR0 + value: + key: OE0PAR0 + fieldSchemaKey: + name: eventContextItem0 + version: 0.0.1 + - key: OE0PAR1 + value: + key: OE0PAR1 + fieldSchemaKey: + name: eventContextItem1 + version: 0.0.1 + - key: OE1PAR0 + value: + key: OE1PAR0 + fieldSchemaKey: + name: eventContextItem0 + version: 0.0.1 + - key: OE1PAR1 + value: + key: OE1PAR1 + fieldSchemaKey: + name: eventContextItem1 + version: 0.0.1 + - key: + name: outEvent1 + version: 0.0.1 + value: + key: + name: outEvent1 + version: 0.0.1 + nameSpace: org.onap.policy.apex.model.policymodel.events + source: Source + target: Target + parameter: + entry: + - key: OE1PAR0 + value: + key: OE1PAR0 + fieldSchemaKey: + name: eventContextItem0 + version: 0.0.1 + - key: OE1PAR1 + value: + key: OE1PAR1 + fieldSchemaKey: + name: eventContextItem1 + version: 0.0.1 + albums: + key: + name: context + version: 0.0.1 + albums: + entry: + - key: + name: contextAlbum0 + version: 0.0.1 + value: + key: + name: contextAlbum0 + version: 0.0.1 + scope: APPLICATION + isWritable: true + itemSchema: + name: MapType + version: 0.0.1 + - key: + name: contextAlbum1 + version: 0.0.1 + value: + key: + name: contextAlbum1 + version: 0.0.1 + scope: GLOBAL + isWritable: false + itemSchema: + name: StringType + version: 0.0.1 + schemas: + key: + name: ContextSchemas + version: 0.0.1 + schemas: + entry: + - key: + name: MapType + version: 0.0.1 + value: + key: + name: MapType + version: 0.0.1 + schemaFlavour: Java + schemaDefinition: org.onap.policy.apex.model.policymodel.concepts.TestContextItem00A + - key: + name: StringType + version: 0.0.1 + value: + key: + name: StringType + version: 0.0.1 + schemaFlavour: Java + schemaDefinition: org.onap.policy.apex.model.policymodel.concepts.TestContextItem000 + - key: + name: eventContextItem0 + version: 0.0.1 + value: + key: + name: eventContextItem0 + version: 0.0.1 + schemaFlavour: Java + schemaDefinition: java.lang.String + - key: + name: eventContextItem1 + version: 0.0.1 + value: + key: + name: eventContextItem1 + version: 0.0.1 + schemaFlavour: Java + schemaDefinition: java.lang.Long -- cgit 1.2.3-korg