From: Jorge Hernandez Date: Tue, 9 Apr 2019 14:29:28 +0000 (+0000) Subject: Merge "Parse new model ids from operational policy" X-Git-Tag: 3.0.2-ONAP~27 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=e678e5af567040022f23ed7a1ba1723b82434418;hp=7e63a8833ae226738d858a3ff1aaf715f9b51d6b;p=policy%2Fmodels.git Merge "Parse new model ids from operational policy" --- diff --git a/models-base/src/main/java/org/onap/policy/models/base/PfObjectFilter.java b/models-base/src/main/java/org/onap/policy/models/base/PfObjectFilter.java index 501d9c353..10ce4ea60 100644 --- a/models-base/src/main/java/org/onap/policy/models/base/PfObjectFilter.java +++ b/models-base/src/main/java/org/onap/policy/models/base/PfObjectFilter.java @@ -49,8 +49,8 @@ public interface PfObjectFilter> { * @param pattern the pattern to check against * @return match or not */ - public default boolean filterString(@NonNull final String value, final String pattern) { - return pattern == null || value.equals(pattern); + public default boolean filterString(final String value, final String pattern) { + return value == null || pattern == null || value.equals(pattern); } /** diff --git a/models-base/src/test/java/org/onap/policy/models/base/PfObjectFilterTest.java b/models-base/src/test/java/org/onap/policy/models/base/PfObjectFilterTest.java index 3d16f8e3f..c13140726 100644 --- a/models-base/src/test/java/org/onap/policy/models/base/PfObjectFilterTest.java +++ b/models-base/src/test/java/org/onap/policy/models/base/PfObjectFilterTest.java @@ -84,14 +84,6 @@ public class PfObjectFilterTest { assertFalse(dof.filterString("Hello", "Goodbye")); assertTrue(dof.filterString("Hello", "Hello")); - assertThatThrownBy(() -> { - dof.filterString(null, null); - }).hasMessage("value is marked @NonNull but is null"); - - assertThatThrownBy(() -> { - dof.filterString(null, "hello"); - }).hasMessage("value is marked @NonNull but is null"); - assertEquals(false, dof.filterString("Hello", "Goodbye")); assertEquals(true, dof.filterString("Hello", "Hello")); assertEquals(true, dof.filterString("Hello", null)); diff --git a/models-examples/src/main/resources/policies/vCPE.policies.optimization.input.tosca.yaml b/models-examples/src/main/resources/policies/vCPE.policies.optimization.input.tosca.yaml index 378e8157e..6e32cca28 100644 --- a/models-examples/src/main/resources/policies/vCPE.policies.optimization.input.tosca.yaml +++ b/models-examples/src/main/resources/policies/vCPE.policies.optimization.input.tosca.yaml @@ -1,6 +1,6 @@ tosca_definitions_version: tosca_simple_yaml_1_0_0 topology_template: -policies: + policies: - OSDF_CASABLANCA.Affinity_vCPE_1: type: onap.policies.optimization.AffinityPolicy diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroup.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroup.java index 20e43f0b5..f0ff4a6c2 100644 --- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroup.java +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroup.java @@ -290,12 +290,12 @@ public class JpaPdpSubGroup extends PfConcept implements PfAuthorative getPdpGroups(@NonNull final PfDao dao, final String name, final String version) throws PfModelException { - List foundPdpGroups = dao.getFiltered(JpaPdpGroup.class, name, version); - - if (foundPdpGroups != null) { - return asPdpGroupList(foundPdpGroups); - } else { - String errorMessage = "no PDP groups found for filter " + name + ":" + version; - LOGGER.warn(errorMessage); - throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage); - } - } - - /** - * Get latest PDP Groups, returns PDP groups in all states. - * - * @param dao the DAO to use to access the database - * @param name the name of the PDP group to get, null to get all PDP groups - * @return the PDP groups found - * @throws PfModelException on errors getting policies - */ - public List getLatestPdpGroups(@NonNull final PfDao dao, final String name) throws PfModelException { - List jpaPdpGroupList = new ArrayList<>(); - - if (name == null) { - jpaPdpGroupList.addAll(dao.getAll(JpaPdpGroup.class)); - } else { - jpaPdpGroupList.addAll(dao.getAllVersions(JpaPdpGroup.class, name)); - } - - return asPdpGroupList(jpaPdpGroupList); + return asPdpGroupList(dao.getFiltered(JpaPdpGroup.class, name, version)); } /** @@ -106,8 +78,7 @@ public class PdpProvider { * @return the PDP groups found * @throws PfModelException on errors getting policies */ - public List getFilteredPdpGroups(@NonNull final PfDao dao, @NonNull final PdpGroupFilter filter) - throws PfModelException { + public List getFilteredPdpGroups(@NonNull final PfDao dao, @NonNull final PdpGroupFilter filter) { List jpaPdpGroupList = dao.getAll(JpaPdpGroup.class); @@ -211,10 +182,7 @@ public class PdpProvider { throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage); } - if (dao.update(jpaPdpSubgroup) == null) { - String errorMessage = "update of PDP subgroup \"" + jpaPdpSubgroup.getId() + "\" failed"; - throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage); - } + dao.update(jpaPdpSubgroup); } /** @@ -228,8 +196,7 @@ public class PdpProvider { * @throws PfModelException on errors updating PDP subgroups */ public void updatePdp(@NonNull final PfDao dao, @NonNull final String pdpGroupName, - @NonNull final String pdpGroupVersion, @NonNull final String pdpSubGroup, @NonNull final Pdp pdp) - throws PfModelException { + @NonNull final String pdpGroupVersion, @NonNull final String pdpSubGroup, @NonNull final Pdp pdp) { final PfReferenceKey pdpKey = new PfReferenceKey(pdpGroupName, pdpGroupVersion, pdpSubGroup, pdp.getInstanceId()); @@ -243,10 +210,7 @@ public class PdpProvider { throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage); } - if (dao.update(jpaPdp) == null) { - String errorMessage = "update of PDP \"" + jpaPdp.getId() + "\" failed"; - throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage); - } + dao.update(jpaPdp); } /** @@ -258,8 +222,8 @@ public class PdpProvider { * @return the PDP group deleted * @throws PfModelException on errors deleting PDP groups */ - public PdpGroup deletePdpGroup(@NonNull final PfDao dao, @NonNull final String name, @NonNull final String version) - throws PfModelException { + public PdpGroup deletePdpGroup(@NonNull final PfDao dao, @NonNull final String name, + @NonNull final String version) { PfConceptKey pdpGroupKey = new PfConceptKey(name, version); @@ -298,11 +262,12 @@ public class PdpProvider { * @param pdpGroupVersion the version of the PDP group containing the PDP that the statistics are for * @param pdpType the PDP type of the subgroup containing the PDP that the statistics are for * @param pdpInstanceId the instance ID of the PDP to update statistics for + * @param pdpStatistics the statistics to update * @throws PfModelException on errors updating statistics */ public void updatePdpStatistics(@NonNull final PfDao dao, @NonNull final String pdpGroupName, @NonNull final String pdpGroupVersion, @NonNull final String pdpType, @NonNull final String pdpInstanceId, - @NonNull final PdpStatistics pdppStatistics) throws PfModelException { + @NonNull final PdpStatistics pdpStatistics) throws PfModelException { // Not implemented yet } diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java index 4012eaa1c..bc77e4bb8 100644 --- a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java +++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java @@ -36,14 +36,22 @@ import org.junit.Before; import org.junit.Test; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.models.base.PfModelException; import org.onap.policy.models.dao.DaoParameters; import org.onap.policy.models.dao.PfDao; import org.onap.policy.models.dao.PfDaoFactory; import org.onap.policy.models.dao.impl.DefaultPfDao; import org.onap.policy.models.pdp.concepts.Pdp; import org.onap.policy.models.pdp.concepts.PdpGroup; +import org.onap.policy.models.pdp.concepts.PdpGroupFilter; import org.onap.policy.models.pdp.concepts.PdpGroups; +import org.onap.policy.models.pdp.concepts.PdpStatistics; +import org.onap.policy.models.pdp.concepts.PdpSubGroup; +import org.onap.policy.models.pdp.enums.PdpHealthStatus; +import org.onap.policy.models.pdp.enums.PdpState; import org.onap.policy.models.pdp.persistence.provider.PdpProvider; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; import org.onap.policy.models.tosca.simple.provider.SimpleToscaProvider; /** @@ -123,6 +131,47 @@ public class PdpProviderTest { assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", "")); } + @Test + public void testFilteredPdpGroupGet() throws Exception { + assertThatThrownBy(() -> { + new PdpProvider().getFilteredPdpGroups(null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().getFilteredPdpGroups(null, PdpGroupFilter.builder().build()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().getFilteredPdpGroups(pfDao, null); + }).hasMessage("filter is marked @NonNull but is null"); + + String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroupsForFiltering.json"); + PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class); + + assertEquals(5, new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()).size()); + + List policyTypeList = new ArrayList<>(); + policyTypeList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3")); + + List policyList = new ArrayList<>(); + policyList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6")); + + // @formatter:off + final PdpGroupFilter filter = PdpGroupFilter.builder() + .groupState(PdpState.PASSIVE) + .name("PdpGroup0") + .version("1.2.3") + .matchPoliciesExactly(false) + .matchPolicyTypesExactly(false) + .pdpState(PdpState.PASSIVE) + .pdpType("APEX") + .policyTypeList(policyTypeList) + .policyList(policyList) + .build(); + // @formatter:on + assertEquals(1, new PdpProvider().getFilteredPdpGroups(pfDao, filter).size()); + } + @Test public void testGroupsCreate() throws Exception { assertThatThrownBy(() -> { @@ -150,6 +199,11 @@ public class PdpProviderTest { String gotJson = standardCoder.encode(gotPdpGroups0); assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", "")); + + pdpGroups0.getGroups().get(0).setPdpGroupState(null); + assertThatThrownBy(() -> { + new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()); + }).hasMessageContaining("INVALID:pdpGroupState may not be null"); } @Test @@ -210,6 +264,11 @@ public class PdpProviderTest { List beforePdpInstances = updatePdpGroups0.getGroups().get(0).getPdpSubgroups().get(0).getPdpInstances(); List afterPdpInstances = updatedPdpGroups0.getGroups().get(0).getPdpSubgroups().get(0).getPdpInstances(); assertTrue(beforePdpInstances.containsAll(afterPdpInstances)); + + pdpGroups0.getGroups().get(0).setPdpGroupState(null); + assertThatThrownBy(() -> { + new PdpProvider().updatePdpGroups(pfDao, pdpGroups0.getGroups()); + }).hasMessageContaining("INVALID:pdpGroupState may not be null"); } @Test @@ -222,10 +281,26 @@ public class PdpProviderTest { new PdpProvider().deletePdpGroup(null, null, "version"); }).hasMessage("dao is marked @NonNull but is null"); + assertThatThrownBy(() -> { + new PdpProvider().deletePdpGroup(null, "name", null); + }).hasMessage("dao is marked @NonNull but is null"); + assertThatThrownBy(() -> { new PdpProvider().deletePdpGroup(null, "name", "version"); }).hasMessage("dao is marked @NonNull but is null"); + assertThatThrownBy(() -> { + new PdpProvider().deletePdpGroup(pfDao, null, "version"); + }).hasMessage("name is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().deletePdpGroup(pfDao, "name", null); + }).hasMessage("version is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().deletePdpGroup(pfDao, "name", "version"); + }).hasMessage("delete of PDP group \"name:version\" failed, PDP group does not exist"); + String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json"); PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class); @@ -250,4 +325,539 @@ public class PdpProviderTest { new PdpProvider().deletePdpGroup(pfDao, "PdpGroup0", "1.2.3"); }).hasMessage("delete of PDP group \"PdpGroup0:1.2.3\" failed, PDP group does not exist"); } + + @Test + public void testPdpSubgroupUpdate() throws Exception { + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(null, null, null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(null, null, null, new PdpSubGroup()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(null, null, "version", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(null, null, "version", new PdpSubGroup()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(null, "name", null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(null, "name", null, new PdpSubGroup()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(null, "name", "version", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(null, "name", "version", new PdpSubGroup()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(pfDao, null, null, new PdpSubGroup()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(pfDao, null, "version", null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(pfDao, null, "version", new PdpSubGroup()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(pfDao, "name", null, null); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(pfDao, "name", null, new PdpSubGroup()); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(pfDao, "name", "version", null); + }).hasMessage("pdpSubGroup is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(pfDao, "name", "version", new PdpSubGroup()); + }).hasMessage("parameter \"localName\" is null"); + + String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json"); + PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class); + + PdpGroups createdPdpGroups0 = new PdpGroups(); + createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups())); + String createdJson = standardCoder.encode(createdPdpGroups0); + assertEquals(originalJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", "")); + + PdpGroups gotPdpGroups0 = new PdpGroups(); + gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3")); + + String gotJson = standardCoder.encode(gotPdpGroups0); + assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", "")); + + PdpSubGroup existingSubGroup = gotPdpGroups0.getGroups().get(0).getPdpSubgroups().get(0); + existingSubGroup.setCurrentInstanceCount(10); + existingSubGroup.setDesiredInstanceCount(10); + new PdpProvider().updatePdpSubGroup(pfDao, "PdpGroup0", "1.2.3", existingSubGroup); + + List afterUpdatePdpGroups = new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3"); + assertEquals(10, afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getCurrentInstanceCount()); + assertEquals(10, afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getDesiredInstanceCount()); + + existingSubGroup.setDesiredInstanceCount(-1); + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(pfDao, "PdpGroup0", "1.2.3", existingSubGroup); + }).hasMessageContaining("INVALID:the desired instance count of a PDP sub group may not be negative"); + existingSubGroup.setDesiredInstanceCount(10); + + existingSubGroup.setPdpType("Loooooooooooooooooooooooooooooooooooooooo" + + "ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongKey"); + assertThatThrownBy(() -> { + new PdpProvider().updatePdpSubGroup(pfDao, "PdpGroup0", "1.2.3", existingSubGroup); + }).hasMessageContaining("Value too long for column"); + existingSubGroup.setPdpType("APEX"); + } + + @Test + public void testPdpUpdate() throws Exception { + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, null, null, null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, null, null, null, new Pdp()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, null, null, "TYPE", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, null, null, "TYPE", new Pdp()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, null, "version", null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, null, "version", null, new Pdp()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, null, "version", "TYPE", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, null, "version", "TYPE", new Pdp()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, "name", null, null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, "name", null, null, new Pdp()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, "name", null, "TYPE", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, "name", null, "TYPE", new Pdp()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, "name", "version", null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, "name", "version", null, new Pdp()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, "name", "version", "TYPE", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(null, "name", "version", "TYPE", new Pdp()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, null, null, null, null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, null, null, null, new Pdp()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, null, null, "TYPE", null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, null, null, "TYPE", new Pdp()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, null, "version", null, null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, null, "version", null, new Pdp()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, null, "version", "TYPE", null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, null, "version", "TYPE", new Pdp()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, "name", null, null, null); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, "name", null, null, new Pdp()); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, "name", null, "TYPE", null); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, "name", null, "TYPE", new Pdp()); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, "name", "version", null, null); + }).hasMessage("pdpSubGroup is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, "name", "version", null, new Pdp()); + }).hasMessage("pdpSubGroup is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, "name", "version", "TYPE", null); + }).hasMessage("pdp is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, "name", "version", "TYPE", new Pdp()); + }).hasMessage("parameter \"localName\" is null"); + + String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json"); + PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class); + + PdpGroups createdPdpGroups0 = new PdpGroups(); + createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups())); + String createdJson = standardCoder.encode(createdPdpGroups0); + assertEquals(originalJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", "")); + + PdpGroups gotPdpGroups0 = new PdpGroups(); + gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3")); + + String gotJson = standardCoder.encode(gotPdpGroups0); + assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", "")); + + Pdp existingPdp = gotPdpGroups0.getGroups().get(0).getPdpSubgroups().get(0).getPdpInstances().get(0); + existingPdp.setPdpState(PdpState.TEST); + existingPdp.setHealthy(PdpHealthStatus.TEST_IN_PROGRESS); + new PdpProvider().updatePdp(pfDao, "PdpGroup0", "1.2.3", "APEX", existingPdp); + + List afterUpdatePdpGroups = new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3"); + assertEquals(PdpState.TEST, + afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getPdpInstances().get(0).getPdpState()); + assertEquals(PdpHealthStatus.TEST_IN_PROGRESS, + afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getPdpInstances().get(0).getHealthy()); + + existingPdp.setMessage(""); + assertThatThrownBy(() -> { + new PdpProvider().updatePdp(pfDao, "PdpGroup0", "1.2.3", "APEX", existingPdp); + }).hasMessageContaining("INVALID:message may not be blank"); + existingPdp.setMessage("A Message"); + } + + @Test + public void testGetPdpStatistics() throws PfModelException { + assertThatThrownBy(() -> { + new PdpProvider().getPdpStatistics(null, null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().getPdpStatistics(null, null, "version"); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().getPdpStatistics(null, "name", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertEquals(0, new PdpProvider().getPdpStatistics(pfDao, "name", "version").size()); + } + + @Test + public void testUpdatePdpStatistics() throws PfModelException { + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, null, null, null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, null, null, null, new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, null, null, "inst", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, null, null, "inst", new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, null, "TYPE", null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, null, "TYPE", null, new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, null, "TYPE", "inst", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, null, "TYPE", "inst", new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, "version", null, null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, "version", null, null, new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, "version", null, "inst", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, "version", null, "inst", new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, "version", "TYPE", null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, "version", "TYPE", null, new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, "version", "TYPE", "inst", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, null, "version", "TYPE", "inst", new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", null, null, null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", null, null, null, new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", null, null, "inst", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", null, null, "inst", new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", null, "TYPE", null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", null, "TYPE", null, new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", null, "TYPE", "inst", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", null, "TYPE", "inst", new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", "version", null, null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", "version", null, null, new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", "version", null, "inst", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", "version", null, "inst", new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", "version", "TYPE", null, null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", "version", "TYPE", null, new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", "version", "TYPE", "inst", null); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(null, "name", "version", "TYPE", "inst", new PdpStatistics()); + }).hasMessage("dao is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, null, null, null, null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, null, null, null, new PdpStatistics()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, null, null, "inst", null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, null, null, "inst", new PdpStatistics()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, null, "TYPE", null, null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, null, "TYPE", null, new PdpStatistics()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, null, "TYPE", "inst", null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, null, "TYPE", "inst", new PdpStatistics()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, "version", null, null, null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, "version", null, null, new PdpStatistics()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, "version", null, "inst", null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, "version", null, "inst", new PdpStatistics()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, "version", "TYPE", null, null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, "version", "TYPE", null, new PdpStatistics()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, "version", "TYPE", "inst", null); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, null, "version", "TYPE", "inst", new PdpStatistics()); + }).hasMessage("pdpGroupName is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", null, null, null, null); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", null, null, null, new PdpStatistics()); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", null, null, "inst", null); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", null, null, "inst", new PdpStatistics()); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", null, "TYPE", null, null); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", null, "TYPE", null, new PdpStatistics()); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", null, "TYPE", "inst", null); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", null, "TYPE", "inst", new PdpStatistics()); + }).hasMessage("pdpGroupVersion is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", "version", null, null, null); + }).hasMessage("pdpType is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", "version", null, null, new PdpStatistics()); + }).hasMessage("pdpType is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", "version", null, "inst", null); + }).hasMessage("pdpType is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", "version", null, "inst", new PdpStatistics()); + }).hasMessage("pdpType is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", "version", "TYPE", null, null); + }).hasMessage("pdpInstanceId is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", "version", "TYPE", null, new PdpStatistics()); + }).hasMessage("pdpInstanceId is marked @NonNull but is null"); + + assertThatThrownBy(() -> { + new PdpProvider().updatePdpStatistics(pfDao, "name", "version", "TYPE", "inst", null); + }).hasMessage("pdpStatistics is marked @NonNull but is null"); + + new PdpProvider().updatePdpStatistics(pfDao, "name", "version", "TYPE", "inst", new PdpStatistics()); + } } diff --git a/models-pdp/src/test/resources/testdata/PdpGroupsForFiltering.json b/models-pdp/src/test/resources/testdata/PdpGroupsForFiltering.json index 623ee4e23..f9c822b06 100644 --- a/models-pdp/src/test/resources/testdata/PdpGroupsForFiltering.json +++ b/models-pdp/src/test/resources/testdata/PdpGroupsForFiltering.json @@ -1,22 +1,17 @@ { - "groups": - [ + "groups": [ { "name": "PdpGroup0", "version": "1.2.3", "description": "group description", "pdpGroupState": "PASSIVE", - "properties": - { + "properties": { "groupProperty0": "Value of Group Property 0" }, - - "pdpSubgroups": - [ + "pdpSubgroups": [ { "pdpType": "APEX", - "supportedPolicyTypes": - [ + "supportedPolicyTypes": [ { "name": "policy.type.0", "version": "1.2.3" @@ -30,9 +25,7 @@ "version": "7.8.9" } ], - - "policies": - [ + "policies": [ { "name": "Policy0", "version": "4.5.6" @@ -42,16 +35,12 @@ "version": "4.5.6" } ], - "currentInstanceCount": 123, "desiredInstanceCount": 456, - "properties": - { + "properties": { "subgroupProperty0": "Value of sub Group Property 0" }, - - "pdpInstances": - [ + "pdpInstances": [ { "instanceId": "apex-0", "pdpState": "ACTIVE", @@ -59,19 +48,19 @@ "message": "message from PDP" }, { - "instanceId": "apex-0", + "instanceId": "apex-1", "pdpState": "PASSIVE", "healthy": "NOT_HEALTHY", "message": "message from PDP" }, { - "instanceId": "apex-0", + "instanceId": "apex-2", "pdpState": "SAFE", "healthy": "NOT_HEALTHY", "message": "message from PDP" }, { - "instanceId": "apex-0", + "instanceId": "apex-3", "pdpState": "TEST", "healthy": "NOT_HEALTHY", "message": "message from PDP" @@ -80,23 +69,18 @@ } ] }, - { "name": "PdpGroup0", "version": "1.2.4", "description": "group description", "pdpGroupState": "ACTIVE", - "properties": - { + "properties": { "groupProperty0": "Value of Group Property 0" }, - - "pdpSubgroups": - [ + "pdpSubgroups": [ { "pdpType": "APEX", - "supportedPolicyTypes": - [ + "supportedPolicyTypes": [ { "name": "policy.type.0", "version": "1.2.3" @@ -110,24 +94,18 @@ "version": "0.1.2" } ], - - "policies": - [ + "policies": [ { "name": "Policy2", "version": "4.5.6" } ], - "currentInstanceCount": 123, "desiredInstanceCount": 456, - "properties": - { + "properties": { "subgroupProperty0": "Value of sub Group Property 0" }, - - "pdpInstances": - [ + "pdpInstances": [ { "instanceId": "apex-0", "pdpState": "ACTIVE", @@ -138,23 +116,18 @@ } ] }, - { "name": "PdpGroup0", "version": "1.2.1", "description": "group description", "pdpGroupState": "SAFE", - "properties": - { + "properties": { "groupProperty0": "Value of Group Property 0" }, - - "pdpSubgroups": - [ + "pdpSubgroups": [ { "pdpType": "APEX", - "supportedPolicyTypes": - [ + "supportedPolicyTypes": [ { "name": "policy.type.1", "version": "4.5.6" @@ -164,9 +137,7 @@ "version": "0.1.2" } ], - - "policies": - [ + "policies": [ { "name": "Policy2", "version": "4.5.6" @@ -176,16 +147,12 @@ "version": "1.2.3" } ], - "currentInstanceCount": 123, "desiredInstanceCount": 456, - "properties": - { + "properties": { "subgroupProperty0": "Value of sub Group Property 0" }, - - "pdpInstances": - [ + "pdpInstances": [ { "instanceId": "apex-0", "pdpState": "SAFE", @@ -196,31 +163,24 @@ }, { "pdpType": "DROOLS", - "supportedPolicyTypes": - [ + "supportedPolicyTypes": [ { "name": "policy.type.0", "version": "1.2.3" } ], - - "policies": - [ + "policies": [ { "name": "Policy0", "version": "4.5.6" } ], - "currentInstanceCount": 123, "desiredInstanceCount": 456, - "properties": - { + "properties": { "subgroupProperty0": "Value of sub Group Property 0" }, - - "pdpInstances": - [ + "pdpInstances": [ { "instanceId": "apex-0", "pdpState": "SAFE", @@ -236,17 +196,13 @@ "version": "1.2.1", "description": "group description", "pdpGroupState": "PASSIVE", - "properties": - { + "properties": { "groupProperty0": "Value of Group Property 0" }, - - "pdpSubgroups": - [ + "pdpSubgroups": [ { "pdpType": "APEX", - "supportedPolicyTypes": - [ + "supportedPolicyTypes": [ { "name": "policy.type.1", "version": "4.5.6" @@ -256,24 +212,18 @@ "version": "7.8.9" } ], - - "policies": - [ + "policies": [ { "name": "Policy0", "version": "4.5.6" } ], - "currentInstanceCount": 123, "desiredInstanceCount": 456, - "properties": - { + "properties": { "subgroupProperty0": "Value of sub Group Property 0" }, - - "pdpInstances": - [ + "pdpInstances": [ { "instanceId": "apex-0", "pdpState": "PASSIVE", @@ -284,46 +234,35 @@ } ] }, - { "name": "PdpGroup1", "version": "1.2.3", "description": "group description", "pdpGroupState": "TEST", - "properties": - { + "properties": { "groupProperty0": "Value of Group Property 0" }, - - "pdpSubgroups": - [ + "pdpSubgroups": [ { "pdpType": "APEX", - "supportedPolicyTypes": - [ + "supportedPolicyTypes": [ { "name": "policy.type.0", "version": "1.2.3" } ], - - "policies": - [ + "policies": [ { "name": "Policy0", "version": "4.5.6" } ], - "currentInstanceCount": 123, "desiredInstanceCount": 456, - "properties": - { + "properties": { "subgroupProperty0": "Value of sub Group Property 0" }, - - "pdpInstances": - [ + "pdpInstances": [ { "instanceId": "apex-0", "pdpState": "TEST", @@ -334,31 +273,24 @@ }, { "pdpType": "DROOLS", - "supportedPolicyTypes": - [ + "supportedPolicyTypes": [ { "name": "policy.type.0", "version": "1.2.3" } ], - - "policies": - [ + "policies": [ { "name": "Policy0", "version": "4.5.6" } ], - "currentInstanceCount": 123, "desiredInstanceCount": 456, - "properties": - { + "properties": { "subgroupProperty0": "Value of sub Group Property 0" }, - - "pdpInstances": - [ + "pdpInstances": [ { "instanceId": "apex-0", "pdpState": "PASSIVE", @@ -369,31 +301,24 @@ }, { "pdpType": "XACML", - "supportedPolicyTypes": - [ + "supportedPolicyTypes": [ { "name": "policy.type.0", "version": "1.2.3" } ], - - "policies": - [ + "policies": [ { "name": "Policy0", "version": "4.5.6" } ], - "currentInstanceCount": 123, "desiredInstanceCount": 456, - "properties": - { + "properties": { "subgroupProperty0": "Value of sub Group Property 0" }, - - "pdpInstances": - [ + "pdpInstances": [ { "instanceId": "apex-0", "pdpState": "ACTIVE", @@ -405,4 +330,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java index bf48292fd..8f05244b9 100644 --- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java +++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java @@ -117,7 +117,7 @@ public class PolicyToscaPersistenceTest { } } } catch (Exception exc) { - LOGGER.warn("error processing policies", exc); + LOGGER.warn("error processing policy types", exc); fail("test should not throw an exception"); } } diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java index e89b31635..f5a178a37 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java @@ -54,7 +54,7 @@ public class ToscaEntity implements PfNameVersion { private String description; /** - * Copy COnstructor. + * Copy Constructor. * * @param copyObject object to copy from */ diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java index 75f17ea5b..3a3b1476d 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java @@ -23,10 +23,14 @@ package org.onap.policy.models.tosca.authorative.concepts; +import java.util.LinkedHashMap; import java.util.Map; +import java.util.Map.Entry; + import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import lombok.NonNull; /** * Class to represent TOSCA policy type matching input/output from/to client. @@ -39,6 +43,22 @@ import lombok.NoArgsConstructor; public class ToscaPolicyType extends ToscaEntity implements Comparable { private Map properties; + /** + * Copy Constructor. + * + * @param copyObject object to copy from + */ + public ToscaPolicyType(@NonNull ToscaPolicyType copyObject) { + super(copyObject); + + if (copyObject.properties != null) { + properties = new LinkedHashMap<>(); + for (final Entry propertyEntry : copyObject.properties.entrySet()) { + properties.put(propertyEntry.getKey(), propertyEntry.getValue()); + } + } + } + @Override public int compareTo(final ToscaPolicyType other) { return compareNameVersion(this, other); diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/PojosTest.java similarity index 99% rename from models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java rename to models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/PojosTest.java index 15240665d..d850052b4 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/PojosTest.java @@ -39,7 +39,7 @@ import org.onap.policy.common.utils.validation.ToStringTester; * @author Chenfei Gao (cgao@research.att.com) * */ -public class TestPojos { +public class PojosTest { private static final String POJO_PACKAGE = "org.onap.policy.models.tosca.authorative.concepts"; diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilterTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilterTest.java new file mode 100644 index 000000000..4653296b7 --- /dev/null +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilterTest.java @@ -0,0 +1,214 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 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.models.tosca.authorative.concepts; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import com.google.gson.GsonBuilder; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.models.base.PfKey; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.yaml.snakeyaml.Yaml; + +/** + * Test of the {@link ToscaPolicyFilter} class. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +public class ToscaPolicyFilterTest { + // Logger for this class + private static final Logger LOGGER = LoggerFactory.getLogger(ToscaPolicyFilterTest.class); + + // @formatter:off + private static final String[] policyResourceNames = { + "policies/vCPE.policies.optimization.input.tosca.yaml", + "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/vFirewall.policy.monitoring.input.tosca.json", + "policies/vFirewall.policy.monitoring.input.tosca.yaml", + "policies/vFirewall.policy.operational.input.tosca.json", + "policies/vFirewall.policy.operational.input.tosca.yaml" + }; + // @formatter:on + + private static List policyList = new ArrayList<>(); + + /** + * Set up a Tosca Policy type list for filtering. + * + * @throws CoderException on JSON decoding errors + */ + @BeforeClass + public static void setupTypeList() throws CoderException { + for (String policyResourceName : policyResourceNames) { + String policyString = ResourceUtils.getResourceAsString(policyResourceName); + if (policyResourceName.endsWith("yaml")) { + Object yamlObject = new Yaml().load(policyString); + policyString = new GsonBuilder().setPrettyPrinting().create().toJson(yamlObject); + } + + ToscaServiceTemplate serviceTemplate = new StandardCoder().decode(policyString, ToscaServiceTemplate.class); + assertNotNull(serviceTemplate); + + for (Map foundPolicyMap : serviceTemplate.getToscaTopologyTemplate().getPolicies()) { + for (Entry 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); + } + } + } + } + + for (ToscaPolicy policy : policyList) { + LOGGER.info("using policy-" + policy.getName() + ":" + policy.getVersion() + ", type-" + policy.getType() + + ":" + policy.getTypeVersion()); + } + } + + @Test + public void testNullList() { + ToscaPolicyFilter filter = ToscaPolicyFilter.builder().build(); + + assertThatThrownBy(() -> { + filter.filter(null); + }).hasMessage("originalList is marked @NonNull but is null"); + } + + @Test + public void testFilterNothing() { + ToscaPolicyFilter filter = ToscaPolicyFilter.builder().build(); + + List filteredList = filter.filter(policyList); + assertTrue(filteredList.containsAll(policyList)); + } + + @Test + public void testFilterLatestVersion() { + ToscaPolicyFilter filter = ToscaPolicyFilter.builder().version(ToscaPolicyFilter.LATEST_VERSION).build(); + + List 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"); + 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"); + filteredList = filter.filter(policyList); + assertEquals(15, filteredList.size()); + assertEquals("1.0.0", filteredList.get(7).getVersion()); + assertEquals("1.0.0", filteredList.get(12).getVersion()); + } + + @Test + public void testFilterNameVersion() { + ToscaPolicyFilter filter = ToscaPolicyFilter.builder().name("operational.modifyconfig").build(); + List filteredList = filter.filter(policyList); + assertEquals(2, filteredList.size()); + + filter = ToscaPolicyFilter.builder().name("guard.frequency.scaleout").build(); + filteredList = filter.filter(policyList); + assertEquals(2, 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(); + filteredList = filter.filter(policyList); + assertEquals(17, filteredList.size()); + + filter = ToscaPolicyFilter.builder().name("OSDF_CASABLANCA.SubscriberPolicy_v1").version("1.0.0").build(); + filteredList = filter.filter(policyList); + assertEquals(1, filteredList.size()); + + filter = ToscaPolicyFilter.builder().name("operational.modifyconfig").version("1.0.0").build(); + filteredList = filter.filter(policyList); + assertEquals(2, filteredList.size()); + } + + @Test + public void testFilterTypeVersion() { + ToscaPolicyFilter filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.Operational").build(); + List filteredList = filter.filter(policyList); + assertEquals(4, filteredList.size()); + + filter = ToscaPolicyFilter.builder().type("onap.policies.monitoring.cdap.tca.hi.lo.app").build(); + filteredList = filter.filter(policyList); + assertEquals(2, 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(); + filteredList = filter.filter(policyList); + assertEquals(17, filteredList.size()); + + filter = ToscaPolicyFilter.builder().type("onap.policies.optimization.HpaPolicy").typeVersion("0.0.0").build(); + filteredList = filter.filter(policyList); + assertEquals(1, filteredList.size()); + + filter = ToscaPolicyFilter.builder().type("onap.policies.controlloop.Operational").typeVersion("0.0.0").build(); + filteredList = filter.filter(policyList); + assertEquals(4, filteredList.size()); + } +} diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifierOptVersion.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersionTest.java similarity index 93% rename from models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifierOptVersion.java rename to models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersionTest.java index 999dca565..561b4fb21 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifierOptVersion.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersionTest.java @@ -28,13 +28,13 @@ import static org.junit.Assert.assertTrue; import org.junit.Test; /** - * Test the other constructors, as {@link TestPojos} tests the other methods. + * Test the other constructors, as {@link PojosTest} tests the other methods. */ -public class TestToscaPolicyIdentifierOptVersion extends ToscaIdentifierTestBase { +public class ToscaPolicyIdentifierOptVersionTest extends ToscaIdentifierTestBase { private static final String NAME = "my-name"; private static final String VERSION = "1.2.3"; - public TestToscaPolicyIdentifierOptVersion() { + public ToscaPolicyIdentifierOptVersionTest() { super(ToscaPolicyIdentifierOptVersion.class); } diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifier.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierTest.java similarity index 93% rename from models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifier.java rename to models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierTest.java index 0dc9eb13c..a53af7b1f 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifier.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierTest.java @@ -26,13 +26,13 @@ import static org.junit.Assert.assertEquals; import org.junit.Test; /** - * Test the other constructors, as {@link TestPojos} tests the other methods. + * Test the other constructors, as {@link PojosTest} tests the other methods. */ -public class TestToscaPolicyIdentifier extends ToscaIdentifierTestBase { +public class ToscaPolicyIdentifierTest extends ToscaIdentifierTestBase { private static final String NAME = "my-name"; private static final String VERSION = "1.2.3"; - public TestToscaPolicyIdentifier() { + public ToscaPolicyIdentifierTest() { super(ToscaPolicyIdentifier.class); } diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicy.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTest.java similarity index 71% rename from models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicy.java rename to models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTest.java index 881a69d07..f5be66c4a 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicy.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTest.java @@ -20,17 +20,25 @@ package org.onap.policy.models.tosca.authorative.concepts; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; +import java.util.LinkedHashMap; + import org.junit.Test; /** - * Tests methods not tested by {@link TestPojos}. + * Tests methods not tested by {@link PojosTest}. */ -public class TestToscaPolicy { +public class ToscaPolicyTest { @Test public void testGetIdentifier_testGetTypeIdentifier() { + assertThatThrownBy(() -> { + new ToscaPolicy(null); + }).hasMessage("copyObject is marked @NonNull but is null"); + + ToscaPolicy policy = new ToscaPolicy(); policy.setName("my_name"); @@ -45,5 +53,13 @@ public class TestToscaPolicy { ToscaPolicyTypeIdentifier type = policy.getTypeIdentifier(); assertEquals("my_type", type.getName()); assertEquals("3.2.1", type.getVersion()); + + ToscaPolicy clonedPolicy0 = new ToscaPolicy(policy); + assertEquals(0, policy.compareTo(clonedPolicy0)); + + policy.setProperties(new LinkedHashMap()); + policy.getProperties().put("PropertyKey", "PropertyValue"); + ToscaPolicy clonedPolicy1 = new ToscaPolicy(policy); + assertEquals(0, policy.compareTo(clonedPolicy1)); } } diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilterTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilterTest.java new file mode 100644 index 000000000..12d81ed53 --- /dev/null +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilterTest.java @@ -0,0 +1,175 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 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.models.tosca.authorative.concepts; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import com.google.gson.GsonBuilder; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.models.base.PfKey; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.yaml.snakeyaml.Yaml; + +/** + * Test of the {@link ToscaPolicyTypeFilter} class. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +public class ToscaPolicyTypeFilterTest { + // Logger for this class + private static final Logger LOGGER = LoggerFactory.getLogger(ToscaPolicyTypeFilterTest.class); + + // @formatter:off + private static final String[] policyTypeResourceNames = { + "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.policy.monitoring.cdap.tca.hi.lo.app.yaml" + }; + // @formatter:on + + private static List typeList = new ArrayList<>(); + + /** + * Set up a Tosca Policy type list for filtering. + * + * @throws CoderException on JSON decoding errors + */ + @BeforeClass + public static void setupTypeList() throws CoderException { + for (String policyTypeResourceName : policyTypeResourceNames) { + String policyTypeString = ResourceUtils.getResourceAsString(policyTypeResourceName); + Object yamlObject = new Yaml().load(policyTypeString); + String yamlAsJsonString = new GsonBuilder().setPrettyPrinting().create().toJson(yamlObject); + + ToscaServiceTemplate serviceTemplate = + new StandardCoder().decode(yamlAsJsonString, ToscaServiceTemplate.class); + assertNotNull(serviceTemplate); + + for (Map foundPolicyTypeMap : serviceTemplate.getPolicyTypes()) { + for (Entry 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); + } + } + } + } + + for (ToscaPolicyType type : typeList) { + LOGGER.info("using policy type-" + type.getName() + ":" + type.getVersion()); + } + } + + @Test + public void testNullList() { + ToscaPolicyTypeFilter filter = ToscaPolicyTypeFilter.builder().build(); + + assertThatThrownBy(() -> { + filter.filter(null); + }).hasMessage("originalList is marked @NonNull but is null"); + } + + @Test + public void testFilterNothing() { + ToscaPolicyTypeFilter filter = ToscaPolicyTypeFilter.builder().build(); + + List filteredList = filter.filter(typeList); + assertTrue(filteredList.containsAll(typeList)); + } + + @Test + public void testFilterLatestVersion() { + ToscaPolicyTypeFilter filter = + ToscaPolicyTypeFilter.builder().version(ToscaPolicyTypeFilter.LATEST_VERSION).build(); + + List filteredList = filter.filter(typeList); + assertEquals(13, filteredList.size()); + assertEquals("1.0.0", filteredList.get(0).getVersion()); + assertEquals("0.0.0", filteredList.get(4).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"); + filteredList = filter.filter(typeList); + assertEquals(13, filteredList.size()); + assertEquals("1.0.0", filteredList.get(0).getVersion()); + assertEquals("0.0.0", filteredList.get(4).getVersion()); + } + + @Test + public void testFilterNameVersion() { + ToscaPolicyTypeFilter filter = ToscaPolicyTypeFilter.builder().name("onap.policies.Monitoring").build(); + List filteredList = filter.filter(typeList); + assertEquals(2, filteredList.size()); + + filter = ToscaPolicyTypeFilter.builder().name("onap.policy.monitoring.cdap.tca.hi.lo.app").build(); + filteredList = filter.filter(typeList); + assertEquals(1, filteredList.size()); + + filter = ToscaPolicyTypeFilter.builder().name("onap.policies.optimization.LpaPolicy").build(); + filteredList = filter.filter(typeList); + assertEquals(0, filteredList.size()); + + filter = ToscaPolicyTypeFilter.builder().version("0.0.0").build(); + filteredList = filter.filter(typeList); + assertEquals(9, filteredList.size()); + + filter = ToscaPolicyTypeFilter.builder().name("onap.policies.optimization.Vim_fit").version("0.0.0").build(); + filteredList = filter.filter(typeList); + assertEquals(1, filteredList.size()); + + filter = ToscaPolicyTypeFilter.builder().name("onap.policies.optimization.Vim_fit").version("0.0.1").build(); + filteredList = filter.filter(typeList); + assertEquals(0, filteredList.size()); + } +} diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyTypeIdentifier.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifierTest.java similarity index 93% rename from models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyTypeIdentifier.java rename to models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifierTest.java index 778d60c09..8388f1061 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyTypeIdentifier.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifierTest.java @@ -26,13 +26,13 @@ import static org.junit.Assert.assertEquals; import org.junit.Test; /** - * Test the other constructors, as {@link TestPojos} tests the other methods. + * Test the other constructors, as {@link PojosTest} tests the other methods. */ -public class TestToscaPolicyTypeIdentifier extends ToscaIdentifierTestBase { +public class ToscaPolicyTypeIdentifierTest extends ToscaIdentifierTestBase { private static final String NAME = "my-name"; private static final String VERSION = "1.2.3"; - public TestToscaPolicyTypeIdentifier() { + public ToscaPolicyTypeIdentifierTest() { super(ToscaPolicyTypeIdentifier.class); } diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeTest.java new file mode 100644 index 000000000..59a5a3336 --- /dev/null +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeTest.java @@ -0,0 +1,63 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 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.models.tosca.authorative.concepts; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; + +import java.util.LinkedHashMap; + +import org.junit.Test; + +/** + * Test of the {@link ToscaPolicyType} class. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +public class ToscaPolicyTypeTest { + + @Test + public void testToscaPolicyType() { + assertThatThrownBy(() -> { + new ToscaPolicyType(null); + }).hasMessage("copyObject is marked @NonNull but is null"); + + ToscaPolicyType tpt = new ToscaPolicyType(); + tpt.setName("AType"); + tpt.setVersion("1.2.3"); + tpt.setDerivedFrom("AParentType"); + tpt.setDescription("Desc"); + + ToscaPolicyType clonedTpt0 = new ToscaPolicyType(tpt); + assertEquals(0, tpt.compareTo(clonedTpt0)); + + tpt.setMetadata(new LinkedHashMap<>()); + tpt.setProperties(new LinkedHashMap<>()); + + tpt.getMetadata().put("MetaKey0", "Metavalue 0"); + + ToscaProperty tp = new ToscaProperty(); + tpt.getProperties().put("Property0", tp); + + ToscaPolicyType clonedTpt1 = new ToscaPolicyType(tpt); + assertEquals(0, tpt.compareTo(clonedTpt1)); + } +}