TOSCA Compliant Guard Policies
[policy/models.git] / models-tosca / src / test / java / org / onap / policy / models / tosca / authorative / concepts / ToscaPolicyFilterTest.java
index f7c9c7e..9ee3ec8 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
- *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2019-2020 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.
@@ -21,6 +21,7 @@
 
 package org.onap.policy.models.tosca.authorative.concepts;
 
+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.assertNotNull;
@@ -49,6 +50,10 @@ import org.yaml.snakeyaml.Yaml;
  * @author Liam Fallon (liam.fallon@est.tech)
  */
 public class ToscaPolicyFilterTest {
+    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(ToscaPolicyFilterTest.class);
 
@@ -58,12 +63,11 @@ public class ToscaPolicyFilterTest {
         "policies/vCPE.policy.monitoring.input.tosca.json",
         "policies/vCPE.policy.monitoring.input.tosca.yaml",
         "policies/vCPE.policy.operational.input.tosca.yaml",
-        "policies/vDNS.policy.guard.frequency.input.tosca.json",
-        "policies/vDNS.policy.guard.frequency.input.tosca.yaml",
-        "policies/vDNS.policy.guard.minmax.input.tosca.yaml",
         "policies/vDNS.policy.monitoring.input.tosca.json",
         "policies/vDNS.policy.monitoring.input.tosca.yaml",
         "policies/vDNS.policy.operational.input.tosca.yaml",
+        "policies/vDNS.policy.guard.frequencylimiter.input.tosca.yaml",
+        "policies/vDNS.policy.guard.minmaxvnfs.input.tosca.yaml",
         "policies/vFirewall.policy.monitoring.input.tosca.json",
         "policies/vFirewall.policy.monitoring.input.tosca.yaml",
         "policies/vFirewall.policy.operational.input.tosca.json",
@@ -83,6 +87,7 @@ public class ToscaPolicyFilterTest {
         for (String policyResourceName : policyResourceNames) {
             String policyString = ResourceUtils.getResourceAsString(policyResourceName);
             if (policyResourceName.endsWith("yaml")) {
+                LOGGER.info("loading {}", policyResourceName);
                 Object yamlObject = new Yaml().load(policyString);
                 policyString = new GsonBuilder().setPrettyPrinting().create().toJson(yamlObject);
             }
@@ -91,22 +96,7 @@ public class ToscaPolicyFilterTest {
             assertNotNull(serviceTemplate);
 
             for (Map<String, ToscaPolicy> foundPolicyMap : serviceTemplate.getToscaTopologyTemplate().getPolicies()) {
-                for (Entry<String, ToscaPolicy> policyEntry : foundPolicyMap.entrySet()) {
-                    ToscaPolicy policy = policyEntry.getValue();
-                    if (policy.getName() == null) {
-                        policy.setName(policyEntry.getKey());
-                    }
-
-                    if (policy.getVersion() == null) {
-                        policy.setVersion(PfKey.NULL_KEY_VERSION);
-                    }
-                    if (policy.getTypeVersion() == null) {
-                        policy.setTypeVersion(PfKey.NULL_KEY_VERSION);
-                    }
-                    if (!policyList.contains(policy)) {
-                        policyList.add(policy);
-                    }
-                }
+                addPolicies(foundPolicyMap);
             }
         }
 
@@ -116,13 +106,32 @@ public class ToscaPolicyFilterTest {
         }
     }
 
+    private static void addPolicies(Map<String, ToscaPolicy> foundPolicyMap) {
+        for (Entry<String, ToscaPolicy> policyEntry : foundPolicyMap.entrySet()) {
+            ToscaPolicy policy = policyEntry.getValue();
+            if (policy.getName() == null) {
+                policy.setName(policyEntry.getKey());
+            }
+
+            if (policy.getVersion() == null) {
+                policy.setVersion(PfKey.NULL_KEY_VERSION);
+            }
+            if (policy.getTypeVersion() == null) {
+                policy.setTypeVersion(PfKey.NULL_KEY_VERSION);
+            }
+            if (!policyList.contains(policy)) {
+                policyList.add(policy);
+            }
+        }
+    }
+
     @Test
     public void testNullList() {
         ToscaPolicyFilter filter = ToscaPolicyFilter.builder().build();
 
         assertThatThrownBy(() -> {
             filter.filter(null);
-        }).hasMessage("originalList is marked @NonNull but is null");
+        }).hasMessageMatching("originalList is marked .*on.*ull but is null");
     }
 
     @Test
@@ -138,53 +147,98 @@ public class ToscaPolicyFilterTest {
         ToscaPolicyFilter filter = ToscaPolicyFilter.builder().version(ToscaPolicyFilter.LATEST_VERSION).build();
 
         List<ToscaPolicy> filteredList = filter.filter(policyList);
-        assertEquals(15, filteredList.size());
-        assertEquals("1.0.0", filteredList.get(7).getVersion());
-        assertEquals("1.0.0", filteredList.get(12).getVersion());
-
-        assertEquals(17, policyList.size());
-        assertEquals(15, filteredList.size());
-
-        policyList.get(10).setVersion("2.0.0");
-        policyList.get(16).setVersion("3.4.5");
+        assertEquals(22, filteredList.size());
+        assertEquals(VERSION_100, filteredList.get(7).getVersion());
+        assertEquals(VERSION_100, filteredList.get(12).getVersion());
+
+        assertEquals(22, policyList.size());
+        assertEquals(22, filteredList.size());
+
+        //
+        // Change versions to a couple of policies
+        //
+        policyList.forEach(policy -> {
+            if ("onap.vfirewall.tca".equals(policy.getName())) {
+                policy.setVersion("2.0.0");
+            } else if ("operational.modifyconfig".equals(policy.getName())) {
+                policy.setVersion("3.4.5");
+            }
+        });
+        //
+        // We'll still get back the same number of policies
+        //
         filteredList = filter.filter(policyList);
-        assertEquals(15, filteredList.size());
-        assertEquals("2.0.0", filteredList.get(7).getVersion());
-        assertEquals("3.4.5", filteredList.get(12).getVersion());
-
-        policyList.get(10).setVersion("1.0.0");
-        policyList.get(16).setVersion("1.0.0");
+        assertEquals(22, filteredList.size());
+        //
+        // Assert that the correct versions are returned
+        //
+        policyList.forEach(policy -> {
+            if ("onap.vfirewall.tca".equals(policy.getName())) {
+                assertThat(policy.getVersion()).isEqualTo("2.0.0");
+            } else if ("operational.modifyconfig".equals(policy.getName())) {
+                assertThat(policy.getVersion()).isEqualTo("3.4.5");
+            } else if ("operational.scaleout".equals(policy.getName())) {
+                assertThat(policy.getVersion()).isEqualTo(VERSION_000);
+            } else {
+                assertThat(policy.getVersion()).isEqualTo(VERSION_100);
+            }
+        });
+
+        //
+        // Change versions back
+        //
+        policyList.forEach(policy -> {
+            if ("onap.vfirewall.tca".equals(policy.getName())) {
+                policy.setVersion(VERSION_100);
+            } else if ("operational.modifyconfig".equals(policy.getName())) {
+                policy.setVersion(VERSION_100);
+            }
+        });
+        //
+        // We'll still get back the same number of policies
+        //
         filteredList = filter.filter(policyList);
-        assertEquals(15, filteredList.size());
-        assertEquals("1.0.0", filteredList.get(7).getVersion());
-        assertEquals("1.0.0", filteredList.get(12).getVersion());
+        assertEquals(22, filteredList.size());
+        //
+        // Assert that the correct versions are returned
+        //
+        policyList.forEach(policy -> {
+            //
+            // Should we fix this to be 1.0.0??
+            //
+            if ("operational.scaleout".equals(policy.getName())) {
+                assertThat(policy.getVersion()).isEqualTo(VERSION_000);
+            } else {
+                assertThat(policy.getVersion()).isEqualTo(VERSION_100);
+            }
+        });
     }
 
     @Test
     public void testFilterNameVersion() {
         ToscaPolicyFilter filter = ToscaPolicyFilter.builder().name("operational.modifyconfig").build();
         List<ToscaPolicy> filteredList = filter.filter(policyList);
-        assertEquals(2, filteredList.size());
+        assertEquals(1, filteredList.size());
 
         filter = ToscaPolicyFilter.builder().name("guard.frequency.scaleout").build();
         filteredList = filter.filter(policyList);
-        assertEquals(2, filteredList.size());
+        assertEquals(1, filteredList.size());
 
         filter = ToscaPolicyFilter.builder().name("guard.frequency.scalein").build();
         filteredList = filter.filter(policyList);
         assertEquals(0, filteredList.size());
 
-        filter = ToscaPolicyFilter.builder().version("1.0.0").build();
+        filter = ToscaPolicyFilter.builder().version(VERSION_100).build();
         filteredList = filter.filter(policyList);
-        assertEquals(17, filteredList.size());
+        assertEquals(21, filteredList.size());
 
-        filter = ToscaPolicyFilter.builder().name("OSDF_CASABLANCA.SubscriberPolicy_v1").version("1.0.0").build();
+        filter = ToscaPolicyFilter.builder().name("OSDF_CASABLANCA.SubscriberPolicy_v1").version(VERSION_100).build();
         filteredList = filter.filter(policyList);
         assertEquals(1, filteredList.size());
 
-        filter = ToscaPolicyFilter.builder().name("operational.modifyconfig").version("1.0.0").build();
+        filter = ToscaPolicyFilter.builder().name("operational.modifyconfig").version(VERSION_100).build();
         filteredList = filter.filter(policyList);
-        assertEquals(2, filteredList.size());
+        assertEquals(1, filteredList.size());
     }
 
     @Test
@@ -192,11 +246,11 @@ public class ToscaPolicyFilterTest {
         // null pattern
         ToscaPolicyFilter filter = ToscaPolicyFilter.builder().versionPrefix(null).build();
         List<ToscaPolicy> filteredList = filter.filter(policyList);
-        assertEquals(17, filteredList.size());
+        assertEquals(22, filteredList.size());
 
         filter = ToscaPolicyFilter.builder().versionPrefix("1.").build();
         filteredList = filter.filter(policyList);
-        assertEquals(17, filteredList.size());
+        assertEquals(20, filteredList.size());
 
         filter = ToscaPolicyFilter.builder().versionPrefix("100.").build();
         filteredList = filter.filter(policyList);
@@ -207,26 +261,36 @@ public class ToscaPolicyFilterTest {
     public void testFilterTypeVersion() {
         ToscaPolicyFilter filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.Operational").build();
         List<ToscaPolicy> filteredList = filter.filter(policyList);
-        assertEquals(4, filteredList.size());
+        assertEquals(0, filteredList.size());
+
+        filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.operational.common.Apex").build();
+        filteredList = filter.filter(policyList);
+        assertEquals(0, filteredList.size());
+
+        filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.operational.common.Drools").build();
+        filteredList = filter.filter(policyList);
+        assertEquals(3, filteredList.size());
 
         filter = ToscaPolicyFilter.builder().type("onap.policies.monitoring.cdap.tca.hi.lo.app").build();
         filteredList = filter.filter(policyList);
-        assertEquals(2, filteredList.size());
+        assertEquals(3, filteredList.size());
 
         filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.NonOperational").build();
         filteredList = filter.filter(policyList);
         assertEquals(0, filteredList.size());
 
-        filter = ToscaPolicyFilter.builder().typeVersion("0.0.0").build();
+        filter = ToscaPolicyFilter.builder().typeVersion(VERSION_000).build();
         filteredList = filter.filter(policyList);
-        assertEquals(17, filteredList.size());
+        assertEquals(0, filteredList.size());
 
-        filter = ToscaPolicyFilter.builder().type("onap.policies.optimization.HpaPolicy").typeVersion("0.0.0").build();
+        filter = ToscaPolicyFilter.builder().type("onap.policies.optimization.resource.HpaPolicy")
+                .typeVersion(VERSION_100).build();
         filteredList = filter.filter(policyList);
-        assertEquals(1, filteredList.size());
+        assertEquals(2, filteredList.size());
 
-        filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.Operational").typeVersion("0.0.0").build();
+        filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.Operational").typeVersion(VERSION_000)
+                .build();
         filteredList = filter.filter(policyList);
-        assertEquals(4, filteredList.size());
+        assertEquals(0, filteredList.size());
     }
 }