From ef1c07eb976ff4d8145f40ce4db092591bb78047 Mon Sep 17 00:00:00 2001 From: Pamela Dragosh Date: Tue, 10 Mar 2020 12:41:47 -0400 Subject: [PATCH] Bump monitoring app code coverage Cleaned up some code to remove unnecessary branches. Add more test cases specifically for query parameters. Coverage should be above 90% for this repo. Issue-ID: POLICY-2242 Change-Id: I20a75aacd75f9b8c87abb47e88b81ab8f2d30626 Signed-off-by: Pamela Dragosh --- .../StdCombinedPolicyResultsTranslatorTest.java | 6 +- .../monitoring/MonitoringPdpApplication.java | 40 ++++----- .../monitoring/MonitoringPdpApplicationTest.java | 95 ++++++++++++++++++++-- 3 files changed, 108 insertions(+), 33 deletions(-) diff --git a/applications/common/src/test/java/org/onap/policy/pdp/xacml/application/common/std/StdCombinedPolicyResultsTranslatorTest.java b/applications/common/src/test/java/org/onap/policy/pdp/xacml/application/common/std/StdCombinedPolicyResultsTranslatorTest.java index 93124552..6ff7a7f1 100644 --- a/applications/common/src/test/java/org/onap/policy/pdp/xacml/application/common/std/StdCombinedPolicyResultsTranslatorTest.java +++ b/applications/common/src/test/java/org/onap/policy/pdp/xacml/application/common/std/StdCombinedPolicyResultsTranslatorTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * 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. @@ -123,6 +123,10 @@ public class StdCombinedPolicyResultsTranslatorTest { public void testConvert() throws ToscaPolicyConversionException, CoderException { StdCombinedPolicyResultsTranslator translator = new StdCombinedPolicyResultsTranslator(); + assertThatThrownBy(() -> translator.convertPolicy(null)).isInstanceOf(ToscaPolicyConversionException.class) + .hasMessageContaining("Cannot convert a NULL policy"); + + assertThatThrownBy(() -> translator.convertPolicy( new ToscaPolicy())).isInstanceOf(ToscaPolicyConversionException.class) .hasMessageContaining("missing metadata"); diff --git a/applications/monitoring/src/main/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplication.java b/applications/monitoring/src/main/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplication.java index 27bb24e5..436028fd 100644 --- a/applications/monitoring/src/main/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplication.java +++ b/applications/monitoring/src/main/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplication.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * 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. @@ -51,17 +51,14 @@ import org.slf4j.LoggerFactory; public class MonitoringPdpApplication extends StdXacmlApplicationServiceProvider { private static final Logger LOGGER = LoggerFactory.getLogger(MonitoringPdpApplication.class); - private static final String ONAP_MONITORING_BASE_POLICY_TYPE = "onap.Monitoring"; - private static final String ONAP_MONITORING_CDAP = "onap.policies.monitoring.cdap.tca.hi.lo.app"; - private static final String ONAP_MONITORING_APPSERVER = + public static final String ONAP_MONITORING_BASE_POLICY_TYPE = "onap.Monitoring"; + public static final String ONAP_MONITORING_CDAP = "onap.policies.monitoring.cdap.tca.hi.lo.app"; + public static final String ONAP_MONITORING_APPSERVER = "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server"; - private static final String ONAP_MONITORING_SONHANDLER = "onap.policies.monitoring.docker.sonhandler.app"; - private static final String ONAP_MONITORING_DERIVED_POLICY_TYPE = "onap.policies.monitoring."; - // Note: this requirement is temporary; it will no longer be necessary once the PDPs and PAP - // are updated to use the PDP Group name instead of the supported types. - private static final String ONAP_MONITORING_ALL_DERIVED_POLICY_TYPE = ONAP_MONITORING_DERIVED_POLICY_TYPE + "*"; + public static final String ONAP_MONITORING_SONHANDLER = "onap.policies.monitoring.docker.sonhandler.app"; + public static final String ONAP_MONITORING_DERIVED_POLICY_TYPE = "onap.policies.monitoring."; - private static final String VERSION_100 = "1.0.0"; + public static final String VERSION_100 = "1.0.0"; private StdCombinedPolicyResultsTranslator translator = new StdCombinedPolicyResultsTranslator(); private List supportedPolicyTypes = new ArrayList<>(); @@ -77,9 +74,6 @@ public class MonitoringPdpApplication extends StdXacmlApplicationServiceProvider supportedPolicyTypes.add(new ToscaPolicyTypeIdentifier(ONAP_MONITORING_CDAP, VERSION_100)); supportedPolicyTypes.add(new ToscaPolicyTypeIdentifier(ONAP_MONITORING_APPSERVER, VERSION_100)); supportedPolicyTypes.add(new ToscaPolicyTypeIdentifier(ONAP_MONITORING_SONHANDLER, VERSION_100)); - - // temporary requirement - supportedPolicyTypes.add(new ToscaPolicyTypeIdentifier(ONAP_MONITORING_ALL_DERIVED_POLICY_TYPE, VERSION_100)); } @Override @@ -129,18 +123,18 @@ public class MonitoringPdpApplication extends StdXacmlApplicationServiceProvider // // Abbreviate results if needed // - if (checkAbbreviateResults(requestQueryParams) && decisionResponse.getPolicies() != null - && !decisionResponse.getPolicies().isEmpty()) { + if (checkAbbreviateResults(requestQueryParams) && decisionResponse.getPolicies() != null) { LOGGER.info("Abbreviating decision results {}", decisionResponse); for (Entry entry : decisionResponse.getPolicies().entrySet()) { - if (entry.getValue() instanceof Map) { - @SuppressWarnings("unchecked") - Map policy = (Map) entry.getValue(); - policy.remove("type_version"); - policy.remove("properties"); - policy.remove("name"); - policy.remove("version"); - } + // + // DecisionResponse policies will always be a map + // + @SuppressWarnings("unchecked") + Map policy = (Map) entry.getValue(); + policy.remove("type_version"); + policy.remove("properties"); + policy.remove("name"); + policy.remove("version"); } } return Pair.of(decisionResponse, xacmlResponse); diff --git a/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplicationTest.java b/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplicationTest.java index fcb99f30..bdb8a343 100644 --- a/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplicationTest.java +++ b/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplicationTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * 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. @@ -27,8 +27,10 @@ import static org.assertj.core.api.Assertions.assertThat; import com.att.research.xacml.api.Response; import java.io.File; import java.io.IOException; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Properties; import java.util.ServiceLoader; import org.apache.commons.lang3.tuple.Pair; @@ -140,11 +142,21 @@ public class MonitoringPdpApplicationTest { // Ensure it has the supported policy types and // can support the correct policy types. // - assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier("onap.Monitoring", "1.0.0"))).isTrue(); - assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier("onap.Monitoring", "1.5.0"))).isTrue(); - assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier( + assertThat(service.canSupportPolicyType( + new ToscaPolicyTypeIdentifier(MonitoringPdpApplication.ONAP_MONITORING_CDAP, "1.0.0"))).isTrue(); + assertThat(service.canSupportPolicyType( + new ToscaPolicyTypeIdentifier(MonitoringPdpApplication.ONAP_MONITORING_APPSERVER, "1.0.0"))).isTrue(); + assertThat(service.canSupportPolicyType( + new ToscaPolicyTypeIdentifier(MonitoringPdpApplication.ONAP_MONITORING_SONHANDLER, "1.0.0"))).isTrue(); + assertThat(service.canSupportPolicyType( + new ToscaPolicyTypeIdentifier("onap.Monitoring", "1.0.0"))).isTrue(); + assertThat(service.canSupportPolicyType( + new ToscaPolicyTypeIdentifier("onap.Monitoring", "1.5.0"))).isTrue(); + assertThat(service.canSupportPolicyType( + new ToscaPolicyTypeIdentifier( "onap.policies.monitoring.foobar", "1.0.1"))).isTrue(); - assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier("onap.foobar", "1.0.0"))).isFalse(); + assertThat(service.canSupportPolicyType( + new ToscaPolicyTypeIdentifier("onap.foobar", "1.0.0"))).isFalse(); // // Ensure it supports decisions // @@ -160,9 +172,28 @@ public class MonitoringPdpApplicationTest { LOGGER.info("Decision {}", decision); assertThat(decision.getKey()).isNotNull(); - assertThat(decision.getKey().getPolicies().size()).isEqualTo(0); + assertThat(decision.getKey().getPolicies()).hasSize(0); + // + // Test the branch for query params, and we have no policy anyway + // + Map requestQueryParams = new HashMap<>(); + decision = service.makeDecision(requestSinglePolicy, requestQueryParams); + LOGGER.info("Decision {}", decision); + + assertThat(decision.getKey()).isNotNull(); + assertThat(decision.getKey().getPolicies()).hasSize(0); + // + // Test the branch for query params, and we have no policy anyway + // + requestQueryParams.put("abbrev", new String[] {"false"}); + decision = service.makeDecision(requestSinglePolicy, requestQueryParams); + LOGGER.info("Decision {}", decision); + + assertThat(decision.getKey()).isNotNull(); + assertThat(decision.getKey().getPolicies()).hasSize(0); } + @SuppressWarnings("unchecked") @Test public void test3AddvDnsPolicy() throws IOException, CoderException, XacmlApplicationException { // @@ -182,7 +213,7 @@ public class MonitoringPdpApplicationTest { LOGGER.info("Decision {}", decision); assertThat(decision.getKey()).isNotNull(); - assertThat(decision.getKey().getPolicies().size()).isEqualTo(1); + assertThat(decision.getKey().getPolicies()).hasSize(1); // // Dump it out as Json // @@ -194,7 +225,53 @@ public class MonitoringPdpApplicationTest { LOGGER.info("Decision {}", decision); assertThat(decision.getKey()).isNotNull(); - assertThat(decision.getKey().getPolicies().size()).isEqualTo(1); + assertThat(decision.getKey().getPolicies()).hasSize(1); + Map jsonPolicy = (Map) decision.getKey().getPolicies().get("onap.scaleout.tca"); + assertThat(jsonPolicy).isNotNull(); + assertThat(jsonPolicy.get("properties")).isNotNull(); + // + // Dump it out as Json + // + LOGGER.info(gson.encode(decision.getKey())); + // + // Ask for abbreviated results + // + Map requestQueryParams = new HashMap<>(); + requestQueryParams.put("abbrev", new String[] {"true"}); + decision = service.makeDecision(requestPolicyType, requestQueryParams); + LOGGER.info("Decision {}", decision); + + assertThat(decision.getKey()).isNotNull(); + assertThat(decision.getKey().getPolicies()).hasSize(1); + jsonPolicy = (Map) decision.getKey().getPolicies().get("onap.scaleout.tca"); + assertThat(jsonPolicy).isNotNull(); + assertThat(jsonPolicy).doesNotContainKey("properties"); + // + // Don't Ask for abbreviated results + // + requestQueryParams = new HashMap<>(); + requestQueryParams.put("abbrev", new String[] {"false"}); + decision = service.makeDecision(requestPolicyType, requestQueryParams); + LOGGER.info("Decision {}", decision); + + assertThat(decision.getKey()).isNotNull(); + assertThat(decision.getKey().getPolicies()).hasSize(1); + jsonPolicy = (Map) decision.getKey().getPolicies().get("onap.scaleout.tca"); + assertThat(jsonPolicy).isNotNull(); + assertThat(jsonPolicy.get("properties")).isNotNull(); + // + // Throw an unknown exception + // + requestQueryParams = new HashMap<>(); + requestQueryParams.put("unknown", new String[] {"true"}); + decision = service.makeDecision(requestPolicyType, requestQueryParams); + LOGGER.info("Decision {}", decision); + + assertThat(decision.getKey()).isNotNull(); + assertThat(decision.getKey().getPolicies()).hasSize(1); + jsonPolicy = (Map) decision.getKey().getPolicies().get("onap.scaleout.tca"); + assertThat(jsonPolicy).isNotNull(); + assertThat(jsonPolicy.get("properties")).isNotNull(); // // Dump it out as Json // @@ -213,7 +290,7 @@ public class MonitoringPdpApplicationTest { LOGGER.info("Decision {}", decision.getKey()); assertThat(decision.getKey()).isNotNull(); - assertThat(decision.getKey().getPolicies().size()).isEqualTo(0); + assertThat(decision.getKey().getPolicies()).hasSize(0); } } -- 2.16.6