TOSCA Compliant Guard Policies
[policy/models.git] / models-tosca / src / test / java / org / onap / policy / models / tosca / authorative / concepts / ToscaPolicyTypeFilterTest.java
index e0143e6..6304091 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -48,21 +49,31 @@ import org.yaml.snakeyaml.Yaml;
  * @author Liam Fallon (liam.fallon@est.tech)
  */
 public class ToscaPolicyTypeFilterTest {
+    private static final String VERSION_100 = "1.0.0";
+
+    private static final String VERSION_000 = "0.0.0";
+
     // Logger for this class
     private static final Logger LOGGER = LoggerFactory.getLogger(ToscaPolicyTypeFilterTest.class);
 
     // @formatter:off
     private static final String[] policyTypeResourceNames = {
+        "policytypes/onap.policies.controlloop.Operational.yaml",
+        "policytypes/onap.policies.optimization.resource.DistancePolicy.yaml",
+        "policytypes/onap.policies.optimization.resource.VnfPolicy.yaml",
+        "policytypes/onap.policies.optimization.resource.PciPolicy.yaml",
+        "policytypes/onap.policies.optimization.resource.OptimizationPolicy.yaml",
+        "policytypes/onap.policies.controlloop.guard.common.Blacklist.yaml",
         "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml",
-        "policytypes/onap.policies.optimization.AffinityPolicy.yaml",
-        "policytypes/onap.policies.optimization.DistancePolicy.yaml",
-        "policytypes/onap.policies.optimization.HpaPolicy.yaml",
-        "policytypes/onap.policies.optimization.OptimizationPolicy.yaml",
-        "policytypes/onap.policies.optimization.PciPolicy.yaml",
-        "policytypes/onap.policies.optimization.QueryPolicy.yaml",
-        "policytypes/onap.policies.optimization.SubscriberPolicy.yaml",
-        "policytypes/onap.policies.optimization.Vim_fit.yaml",
-        "policytypes/onap.policies.optimization.VnfPolicy.yaml",
+        "policytypes/onap.policies.optimization.resource.HpaPolicy.yaml",
+        "policytypes/onap.policies.optimization.resource.Vim_fit.yaml",
+        "policytypes/onap.policies.optimization.service.SubscriberPolicy.yaml",
+        "policytypes/onap.policies.optimization.resource.AffinityPolicy.yaml",
+        "policytypes/onap.policies.optimization.service.QueryPolicy.yaml",
+        "policytypes/onap.policies.controlloop.guard.common.MinMax.yaml",
+        "policytypes/onap.policies.controlloop.guard.common.FrequencyLimiter.yaml",
+        "policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml",
+        "policytypes/onap.policies.Optimization.yaml",
         "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml"
     };
     // @formatter:on
@@ -85,20 +96,7 @@ public class ToscaPolicyTypeFilterTest {
                     new StandardCoder().decode(yamlAsJsonString, ToscaServiceTemplate.class);
             assertNotNull(serviceTemplate);
 
-            for (Map<String, ToscaPolicyType> foundPolicyTypeMap : serviceTemplate.getPolicyTypes()) {
-                for (Entry<String, ToscaPolicyType> policyTypeEntry : foundPolicyTypeMap.entrySet()) {
-                    ToscaPolicyType policyType = policyTypeEntry.getValue();
-                    if (policyType.getName() == null) {
-                        policyType.setName(policyTypeEntry.getKey());
-                    }
-                    if (policyType.getVersion() == null) {
-                        policyType.setVersion(PfKey.NULL_KEY_VERSION);
-                    }
-                    if (!typeList.contains(policyType)) {
-                        typeList.add(policyType);
-                    }
-                }
-            }
+            addPolicyTypes(serviceTemplate.getPolicyTypes());
         }
 
         for (ToscaPolicyType type : typeList) {
@@ -106,13 +104,28 @@ public class ToscaPolicyTypeFilterTest {
         }
     }
 
+    private static void addPolicyTypes(Map<String, ToscaPolicyType> foundPolicyTypeMap) {
+        for (Entry<String, ToscaPolicyType> policyTypeEntry : foundPolicyTypeMap.entrySet()) {
+            ToscaPolicyType policyType = policyTypeEntry.getValue();
+            if (policyType.getName() == null) {
+                policyType.setName(policyTypeEntry.getKey());
+            }
+            if (policyType.getVersion() == null) {
+                policyType.setVersion(PfKey.NULL_KEY_VERSION);
+            }
+            if (!typeList.contains(policyType)) {
+                typeList.add(policyType);
+            }
+        }
+    }
+
     @Test
     public void testNullList() {
         ToscaPolicyTypeFilter filter = ToscaPolicyTypeFilter.builder().build();
 
         assertThatThrownBy(() -> {
             filter.filter(null);
-        }).hasMessage("originalList is marked @NonNull but is null");
+        }).hasMessageMatching("originalList is marked .*on.*ull but is null");
     }
 
     @Test
@@ -129,28 +142,36 @@ public class ToscaPolicyTypeFilterTest {
                 ToscaPolicyTypeFilter.builder().version(ToscaPolicyTypeFilter.LATEST_VERSION).build();
 
         List<ToscaPolicyType> filteredList = filter.filter(typeList);
-        assertEquals(13, filteredList.size());
-        assertEquals("1.0.0", filteredList.get(0).getVersion());
-        assertEquals("0.0.0", filteredList.get(4).getVersion());
+        assertEquals(20, filteredList.size());
+        assertEquals(VERSION_100, filteredList.get(0).getVersion());
+        assertEquals(VERSION_100, filteredList.get(11).getVersion());
 
         typeList.get(12).setVersion("2.0.0");
         filteredList = filter.filter(typeList);
-        assertEquals(13, filteredList.size());
-        assertEquals("2.0.0", filteredList.get(0).getVersion());
-        assertEquals("0.0.0", filteredList.get(4).getVersion());
-
-        typeList.get(12).setVersion("1.0.0");
+        assertEquals(20, filteredList.size());
+        //
+        // This seems to change around as to where this policy type
+        // got changed - perhaps we change this test to find a specific name
+        // to test for vs an index which never remains consistent?
+        //
+        assertEquals("2.0.0", filteredList.get(18).getVersion());
+        //
+        // And now this index changes again??
+        //
+        assertEquals(VERSION_100, filteredList.get(17).getVersion());
+
+        typeList.get(12).setVersion(VERSION_100);
         filteredList = filter.filter(typeList);
-        assertEquals(13, filteredList.size());
-        assertEquals("1.0.0", filteredList.get(0).getVersion());
-        assertEquals("0.0.0", filteredList.get(4).getVersion());
+        assertEquals(20, filteredList.size());
+        assertEquals(VERSION_100, filteredList.get(0).getVersion());
+        assertEquals(VERSION_100, filteredList.get(18).getVersion());
     }
 
     @Test
     public void testFilterNameVersion() {
         ToscaPolicyTypeFilter filter = ToscaPolicyTypeFilter.builder().name("onap.policies.Monitoring").build();
         List<ToscaPolicyType> filteredList = filter.filter(typeList);
-        assertEquals(2, filteredList.size());
+        assertEquals(1, filteredList.size());
 
         filter = ToscaPolicyTypeFilter.builder().name("onap.policies.monitoring.cdap.tca.hi.lo.app").build();
         filteredList = filter.filter(typeList);
@@ -160,13 +181,14 @@ public class ToscaPolicyTypeFilterTest {
         filteredList = filter.filter(typeList);
         assertEquals(0, filteredList.size());
 
-        filter = ToscaPolicyTypeFilter.builder().version("0.0.0").build();
+        filter = ToscaPolicyTypeFilter.builder().version(VERSION_100).build();
         filteredList = filter.filter(typeList);
-        assertEquals(9, filteredList.size());
+        assertEquals(20, filteredList.size());
 
-        filter = ToscaPolicyTypeFilter.builder().name("onap.policies.optimization.Vim_fit").version("0.0.0").build();
+        filter = ToscaPolicyTypeFilter.builder().name("onap.policies.optimization.Vim_fit").version(VERSION_000)
+                .build();
         filteredList = filter.filter(typeList);
-        assertEquals(1, filteredList.size());
+        assertEquals(0, filteredList.size());
 
         filter = ToscaPolicyTypeFilter.builder().name("onap.policies.optimization.Vim_fit").version("0.0.1").build();
         filteredList = filter.filter(typeList);