Merge "JUnit additions for PDP,PDP-REST,SDK,XACML"
authorPamela Dragosh <pdragosh@research.att.com>
Tue, 3 Apr 2018 12:32:48 +0000 (12:32 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 3 Apr 2018 12:32:48 +0000 (12:32 +0000)
ONAP-REST/src/test/java/org/onap/policy/rest/util/MSModelUtilsTest.java
ONAP-REST/src/test/resources/policy_tosca_tca-v1707.yml [moved from POLICY-SDK-APP/src/test/resources/policy_tosca_tca_v1707.yml with 100% similarity]
POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateOptimizationController.java
POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DCAEMicroServicePolicyController.js
POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/OptimizationPolicyController.js
POLICY-SDK-APP/src/test/java/org/onap/policy/controller/CreateOptimizationControllerTest.java
POLICY-SDK-APP/src/test/resources/policy_tosca_tca-v1707.yml [new file with mode: 0644]
docs/platform/modAmsterTemplate.rst
packages/base/pom.xml
packages/base/src/files/install/mysql/data/180601_upgrade_script.sql

index 83a82f9..aa41429 100644 (file)
@@ -22,6 +22,7 @@ package org.onap.policy.rest.util;
 import static org.junit.Assert.*;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -30,10 +31,12 @@ import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
 import org.junit.Test;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.rest.util.MSModelUtils.MODEL_TYPE;
 
 public class MSModelUtilsTest {
-       
+       private static Logger logger = FlexLogger.getLogger(MSModelUtilsTest.class);    
        @Test
        public void testMSModelUtils(){
                HashMap<String, MSAttributeObject> classMap = new HashMap<>();
@@ -49,4 +52,84 @@ public class MSModelUtilsTest {
                String subAttribute = utils.createSubAttributes(dependency, classMap, "StandardDeviationThreshold");
                assertTrue(subAttribute != null);
        }
-}
+       
+       
+       /**
+        * Run the void stringBetweenDots(String, String) method test
+        */
+       
+        @Test
+       public void testStringBetweenDots() {
+
+               //expect: uniqueKeys should contain a string value 
+                MSModelUtils controllerA = new MSModelUtils();
+               String str = "testing\\.byCorrectWay\\.OfDATA";
+               assertEquals(1, controllerA.stringBetweenDots(str));
+               
+               //expect: uniqueKeys should not contain a string value 
+               str = "testing\byWrongtWay.\\OfDATA";
+               MSModelUtils controllerB = new MSModelUtils();
+           assertEquals(0, controllerB.stringBetweenDots(str));
+       }
+
+       /**
+        * Run the Map<String,String> load(String) method test
+        */
+       
+       @Test
+       public void testLoad() {
+               
+               boolean isLocalTesting = true;
+               MSModelUtils controller = new MSModelUtils();
+               String fileName = null;
+               Map<String,String> result = null;
+               try {
+                       ClassLoader classLoader = getClass().getClassLoader();
+                       fileName = new File(classLoader.getResource("policy_tosca_tca-v1707.yml").getFile()).getAbsolutePath();
+               } catch (Exception e1) {
+                       logger.error("Exception Occured while loading file"+e1);
+               }
+               if(isLocalTesting){
+                       try {
+                               result = controller.load(fileName);
+                       } catch (IOException e) {
+                               logger.error("testLoad", e);
+                               result = null;
+                       }
+                       
+                       assertTrue(result != null && !result.isEmpty());                                
+                       logger.debug("result : " + result);
+               }
+
+               logger.debug("testLoad: exit");
+       }
+       
+       /**
+        * Run the void parseTosca(String) method test
+        */
+       
+       @Test
+       public void testParseTosca() {
+               
+               logger.debug("testParseTosca: enter");
+               boolean isLocalTesting = true;
+               String fileName = null;
+               try {
+                       ClassLoader classLoader = getClass().getClassLoader();
+                       fileName = new File(classLoader.getResource("policy_tosca_tca-v1707.yml").getFile()).getAbsolutePath();
+               } catch (Exception e1) {
+                       logger.error("Exception Occured while loading file"+e1);
+               }
+               
+               MSModelUtils controller = new MSModelUtils();
+        if(isLocalTesting){
+                       try {
+                           controller.parseTosca(fileName);
+                       }catch (Exception e) {
+                               fail("parseTosca caused error: " + e);
+                       }
+        }
+               logger.debug("testParseTosca: exit");
+       }
+
+}
\ No newline at end of file
index 4ae1344..a45bfed 100644 (file)
@@ -97,10 +97,6 @@ public class CreateOptimizationController extends RestrictedBaseController {
                return commonClassDao;
        }
 
-       public static void setCommonClassDao(CommonClassDao commonClassDao) {
-               CreateOptimizationController.commonClassDao = commonClassDao;
-       }
-
        private OptimizationModels newModel;
        private String newFile;
        private String directory;
@@ -130,6 +126,10 @@ public class CreateOptimizationController extends RestrictedBaseController {
        
        @Autowired
        private CreateOptimizationController(CommonClassDao commonClassDao){
+               setCommonClassDao(commonClassDao);
+       }
+       
+       public static void setCommonClassDao(CommonClassDao commonClassDao) {
                CreateOptimizationController.commonClassDao = commonClassDao;
        }
 
@@ -595,7 +595,7 @@ public class CreateOptimizationController extends RestrictedBaseController {
        }
        
        @RequestMapping(value={"/oof_dictionary/set_ModelData"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
-       public void SetModelData(HttpServletRequest request, HttpServletResponse response) throws IOException, FileUploadException{
+       public void setModelData(HttpServletRequest request, HttpServletResponse response) throws IOException, FileUploadException{
                modelList = new ArrayList<>();
                dirDependencyList = new ArrayList<>();
                classMap = new LinkedHashMap<>();
index 79f8fdd..1b43370 100644 (file)
@@ -1115,11 +1115,13 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind
                var star = "";
                var required = null;
                if(lablInfo){
-                       if(lablInfo.includes("required-true")){
-                               star = " *";
-                               required = true;
-                       }else if (lablInfo.includes("required-false")){
-                               required = false
+                       if(typeof lablInfo === 'string' ){
+                          if(lablInfo.includes("required-true")){
+                                  star = " *";
+                                  required = true;
+                           }else if (lablInfo.includes("required-false")){
+                                  required = false
+                           }
                        }
                }
                
index e499c9f..cbd011f 100644 (file)
@@ -73,7 +73,7 @@ angular.module('abs').controller('optimizationController', ['$scope', '$window',
                console.log("failed");
        });
 
-       PolicyAppService.getData('get_PriorityValues').then(function (data) {
+       PolicyAppService.getData('get_DCAEPriorityValues').then(function (data) {
                var j = data;
                $scope.data = JSON.parse(j.data);
                console.log($scope.data);
index af573c6..35395a8 100644 (file)
@@ -386,8 +386,10 @@ public class CreateOptimizationControllerTest {
        public void testSetModelData() {                
                
                logger.debug("testSetModelData: enter");
-
+               
+               CreateOptimizationController controller = new CreateOptimizationController();
            HttpServletRequest request = createMock(HttpServletRequest.class);
+               MockHttpServletResponse response =  new MockHttpServletResponse();
            expect(request.getContentType()).andReturn("multipart/form-data; boundary=----WebKitFormBoundaryWcRUaIbC8kXgjr3p");
            expect(request.getMethod()).andReturn("post");
            expect(request.getHeader("Content-length")).andReturn("7809");
@@ -407,12 +409,14 @@ public class CreateOptimizationControllerTest {
                    expect(request.getCharacterEncoding()).andReturn("UTF-8");
                    expect(request.getContentLength()).andReturn(1024);
                    replay(request);
-                       
+                   controller.setModelData(request, response);
+
                } catch (Exception e) {
                        logger.error("testSetModelData" + e);
                        e.printStackTrace();
                }
                        
+           
                logger.debug("testSetModelData: exit");
        }
 
diff --git a/POLICY-SDK-APP/src/test/resources/policy_tosca_tca-v1707.yml b/POLICY-SDK-APP/src/test/resources/policy_tosca_tca-v1707.yml
new file mode 100644 (file)
index 0000000..0c30cee
--- /dev/null
@@ -0,0 +1,65 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+
+node_types: 
+    # policy root node
+    policy.nodes.Root:
+        derived_from: tosca.nodes.Root
+        properties:
+            policyName:
+                type: string
+                required: true
+            policyVersion:
+                type: string
+                required: true
+            policyScope:
+                type: string
+                required: true
+            policyDescription:
+                type: string
+                required: false
+
+    # virtual policy node for string matcher
+    policy.nodes.tca:
+        derived_from: policy.nodes.Root
+        properties:
+            functionalRole:
+                type: string
+                required: true
+                default: "ClosedLoop_F5-d925ed73-8231-4d02-9545-db4e101f88f8" 
+            policyName:
+                type: string
+                required: true
+                default: "configuration.dcae.microservice.tca.xml"
+            policyVersion:
+                type: string
+                required: true
+                default: "v0.0.1"
+            threshholds:
+                type: list
+                entry_schema:
+                    - type:policy.data.Threshold                    
+            
+data_types:
+    policy.data.Threshold:
+        derived_from: tosca.nodes.Root
+        properties:
+            closedLoopControlName:
+                type: string
+                required: true
+            version:
+                type: string
+                required: true
+                default: "1.0.2"
+            fieldPath:
+                type: string
+                required: true
+            thresholdValue:
+                type: integer
+                required: true
+            direction:
+                type: string
+                required: true
+            severity:
+                type: string
+                required: true
+            
index 67892eb..4456f29 100644 (file)
@@ -33,33 +33,33 @@ Installing the Archetype Project in Eclipse
 
 **STEP 5:** Add a Remote and/or a Local catalog
 
-**STEP 5.1:** Add a Remote Catalog to find the ONAP staged drools-applications
+   **STEP 5.1:** Add a Remote Catalog to find the ONAP staged drools-applications
 
-**STEP 5.1.1:** Click "Add Remote Catalog..."
+      **STEP 5.1.1:** Click "Add Remote Catalog..."
 
-    .. image:: mat_add_local_catalog.JPG
+          .. image:: mat_add_local_catalog.JPG
 
-**STEP 5.1.2:** Add the ONAP Staging repository archetype-catalog.xml with a description if desired. Click "OK" then "Apply", then "OK".
+      **STEP 5.1.2:** Add the ONAP Staging repository archetype-catalog.xml with a description if desired. Click "OK" then "Apply", then "OK".
 
-    .. image:: mat_nexus_catalog.JPG
+          .. image:: mat_nexus_catalog.JPG
 
-**STEP 5.1.3:** The ONAP staging archetypes are now an option:
+      **STEP 5.1.3:** The ONAP staging archetypes are now an option:
 
-    .. image:: mat_archetypes.JPG
+          .. image:: mat_archetypes.JPG
 
-**STEP 5.2:** Add a Local Catalog to find a local drools-applications in your .m2 local repository
+   **STEP 5.2:** Add a Local Catalog to find a local drools-applications in your .m2 local repository
 
-**STEP 5.2.1:** Click "Add Local Catalog..."
+      **STEP 5.2.1:** Click "Add Local Catalog..."
 
-    .. image:: mat_add_local_catalog.JPG
+          .. image:: mat_add_local_catalog.JPG
 
-**STEP 5.2.2:** Browse to or type in the path to your .m2 repository, give it a name and click "OK"
+      **STEP 5.2.2:** Browse to or type in the path to your .m2 repository, give it a name and click "OK"
 
-    .. image:: mat_nexus_local_catalog.png
+          .. image:: mat_nexus_local_catalog.png
 
-**STEP 5.2.3:** The new local repository appears on the catalog list, click "Apply and Close"
+      **STEP 5.2.3:** The new local repository appears on the catalog list, click "Apply and Close"
 
-    .. image:: mat_local_archetypes.png
+          .. image:: mat_local_archetypes.png
 
 **STEP 6:** If you wish to use a snapshot version of drools-applications, make sure to check the "Include snapshot archetypes" box. Highlight the option with the Artifact Id "archetype-cl-amsterdam" and click next. 
 
index 3b753b2..a08307d 100755 (executable)
                                                                <artifactItem>
                                                                        <groupId>org.apache.tomcat</groupId>
                                                                        <artifactId>tomcat</artifactId>
-                                                                       <version>8.0.23</version>
+                                                                       <version>8.0.50</version>
                                                                        <type>tar.gz</type>
-                                                                       <destFileName>apache-tomcat-8.0.23.tar.gz</destFileName>
+                                                                       <destFileName>apache-tomcat-8.0.50.tar.gz</destFileName>
                                                                </artifactItem>
                                                        </artifactItems>
                                                </configuration>
index 070feee..1b1fb76 100644 (file)
@@ -51,3 +51,6 @@ CREATE TABLE `onap_sdk`.`MicroServiceHeaderDefaults` (
 
 ALTER TABLE `onap_sdk`.`microservicemodels` 
 ADD COLUMN `dataOrderInfo` VARCHAR(2000) NULL DEFAULT 'Null' AFTER `enumValues`;
+
+INSERT INTO `onap_sdk`.`optimizationmodels` (`modelname`, `description`, `dependency`, `imported_by`, `attributes`, `ref_attributes`, `sub_attributes`, `version`, `annotation`, `enumValues`, `dataOrderInfo`) VALUES ('hpaPolicy', 'CSIT Tests Model', '[]', 'demo', 'identity=string:defaultValue-null:required-true:MANY-false,resources=string:defaultValue-null:required-true:MANY-false', 'policyScope=MANY-true,policyType=POLICYTYPE:MANY-false,flavorFeatures=flavorFeatures-properties:MANY-true', '{\"flavorProperties-properties\":{\"score\":\"string:defaultValue-null:required-true:MANY-false\",\"featureAttributes\":\"featureAttributes-properties:required-false:MANY-true\",\"mandatory\":\"string:defaultValue-null:required-true:MANY-false\",\"hpaFeature\":\"string:defaultValue-null:required-true:MANY-false\",\"architecture\":\"string:defaultValue-null:required-true:MANY-false\"},\"flavorFeatures-properties\":{\"flavorProperties\":\"flavorProperties-properties:required-false:MANY-true\",\"flavorLabel\":\"string:defaultValue-null:required-true:MANY-false\"},\"featureAttributes-properties\":{\"unit\":\"string:defaultValue-null:required-true:MANY-false\",\"attribute\":\"string:defaultValue-null:required-true:MANY-false\",\"value\":\"string:defaultValue-null:required-true:MANY-false\",\"operator\":\"OPERATOR:required-true:MANY-false\"}}\n', 'CSIT', 'policyScope=matching-true', 'OPERATOR=[<,<equal-sign,>,>equal-sign,equal-sign,!equal-sign,any,all,subset,], POLICYTYPE=[hpaPolicy,]', '\"[resources,identity,policyScope,policyType,flavorFeatures,flavorLabel,flavorProperties,architecture,hpaFeature,mandatory,score,featureAttributes,attribute,operator,unit,value]\"');
+