X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=main%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fapi%2Fmain%2Frest%2Fprovider%2FTestLegacyGuardPolicyProvider.java;fp=main%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fapi%2Fmain%2Frest%2Fprovider%2FTestLegacyGuardPolicyProvider.java;h=1f0077db3c1849accf943c33b6a9985b59cf0249;hb=5b4fbae502f73a4ad58135a58ef348b704cc6ad3;hp=6091e1d201f266d8cd8d1c8d84205dfc84b5ff30;hpb=9b4c685930a76acf43bd5cad5bf2a127a38ed656;p=policy%2Fapi.git diff --git a/main/src/test/java/org/onap/policy/api/main/rest/provider/TestLegacyGuardPolicyProvider.java b/main/src/test/java/org/onap/policy/api/main/rest/provider/TestLegacyGuardPolicyProvider.java index 6091e1d2..1f0077db 100644 --- a/main/src/test/java/org/onap/policy/api/main/rest/provider/TestLegacyGuardPolicyProvider.java +++ b/main/src/test/java/org/onap/policy/api/main/rest/provider/TestLegacyGuardPolicyProvider.java @@ -77,7 +77,12 @@ public class TestLegacyGuardPolicyProvider { private static final String POLICY_TYPE_RESOURCE = "policytypes/onap.policies.controlloop.guard.FrequencyLimiter.json"; private static final String POLICY_TYPE_ID = "onap.policies.controlloop.guard.FrequencyLimiter:1.0.0"; + private static final String POLICY_TYPE_NAME = "onap.policies.controlloop.guard.FrequencyLimiter"; + private static final String POLICY_TYPE_VERSION = "1.0.0"; private static final String POLICY_ID = "guard.frequency.scaleout:1.0.0"; + private static final String POLICY_NAME = "guard.frequency.scaleout"; + private static final String POLICY_VERSION = "1"; + private static final String LEGACY_MINOR_PATCH_SUFFIX = ".0.0"; /** * Initializes parameters. @@ -171,6 +176,102 @@ public class TestLegacyGuardPolicyProvider { }).doesNotThrowAnyException(); } + @Test + public void testFetchDeployedGuardPolicies() { + + assertThatThrownBy(() -> { + guardPolicyProvider.fetchDeployedGuardPolicies("dummy"); + }).hasMessage("No policy type defined for dummy"); + + try (PolicyModelsProvider databaseProvider = + new PolicyModelsProviderFactory().createPolicyModelsProvider(providerParams)) { + assertEquals(0, databaseProvider.getPdpGroups("name").size()); + assertEquals(0, databaseProvider.getFilteredPdpGroups(PdpGroupFilter.builder().build()).size()); + + assertNotNull(databaseProvider.createPdpGroups(new ArrayList<>())); + assertNotNull(databaseProvider.updatePdpGroups(new ArrayList<>())); + + PdpGroup pdpGroup = new PdpGroup(); + pdpGroup.setName("group"); + pdpGroup.setVersion("1.2.3"); + pdpGroup.setPdpGroupState(PdpState.ACTIVE); + pdpGroup.setPdpSubgroups(new ArrayList<>()); + List groupList = new ArrayList<>(); + groupList.add(pdpGroup); + + PdpSubGroup pdpSubGroup = new PdpSubGroup(); + pdpSubGroup.setPdpType("type"); + pdpSubGroup.setDesiredInstanceCount(123); + pdpSubGroup.setSupportedPolicyTypes(new ArrayList<>()); + pdpSubGroup.getSupportedPolicyTypes().add(new ToscaPolicyTypeIdentifier( + POLICY_TYPE_NAME, POLICY_TYPE_VERSION)); + pdpGroup.getPdpSubgroups().add(pdpSubGroup); + + Pdp pdp = new Pdp(); + pdp.setInstanceId("type-0"); + pdp.setMessage("Hello"); + pdp.setPdpState(PdpState.ACTIVE); + pdp.setHealthy(PdpHealthStatus.UNKNOWN); + pdpSubGroup.setPdpInstances(new ArrayList<>()); + pdpSubGroup.getPdpInstances().add(pdp); + + // Create Pdp Groups + assertEquals(123, databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0) + .getDesiredInstanceCount()); + assertEquals(1, databaseProvider.getPdpGroups("group").size()); + + // Create Policy Type + assertThatCode(() -> { + String policyTypeString = ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE); + ToscaServiceTemplate policyTypeServiceTemplate = + standardCoder.decode(policyTypeString, ToscaServiceTemplate.class); + policyTypeProvider.createPolicyType(policyTypeServiceTemplate); + }).doesNotThrowAnyException(); + + // Create Policy + assertThatCode(() -> { + String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE); + LegacyGuardPolicyInput policyToCreate = + standardCoder.decode(policyString, LegacyGuardPolicyInput.class); + Map policyCreated = guardPolicyProvider + .createGuardPolicy(policyToCreate); + assertFalse(policyCreated.isEmpty()); + }).doesNotThrowAnyException(); + + // Test fetchDeployedPolicies (deployedPolicyMap.isEmpty())==true + assertThatThrownBy( + () -> { + guardPolicyProvider.fetchDeployedGuardPolicies(POLICY_NAME); + }).hasMessage("could not find policy with ID " + POLICY_NAME + " and type " + + POLICY_TYPE_ID + " deployed in any pdp group"); + + + // Update pdpSubGroup + pdpSubGroup.setPolicies(new ArrayList<>()); + pdpSubGroup.getPolicies().add( + new ToscaPolicyIdentifier(POLICY_NAME, POLICY_VERSION + LEGACY_MINOR_PATCH_SUFFIX)); + assertEquals(1, databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0) + .getPolicies().size()); + + // Test fetchDeployedPolicies + assertThatCode( + () -> { + guardPolicyProvider.fetchDeployedGuardPolicies(POLICY_NAME); + }).doesNotThrowAnyException(); + + // Test validateDeleteEligibility exception path(!pdpGroups.isEmpty()) + assertThatThrownBy( + () -> { + guardPolicyProvider.deleteGuardPolicy( + POLICY_NAME, POLICY_VERSION); + }).hasMessageContaining("policy with ID " + POLICY_NAME + ":" + POLICY_VERSION + + " cannot be deleted as it is deployed in pdp groups"); + } + catch (Exception exc) { + fail("Test should not throw an exception"); + } + } + @Test public void testCreateGuardPolicy() {