From 8d28c6fc936eb4bd95ad1ebd013996cff4787e0e Mon Sep 17 00:00:00 2001 From: Ali Hockla Date: Fri, 8 Nov 2019 12:54:02 -0600 Subject: Added support to return status and error if pdp-x failed to load policy Issue-ID: POLICY-2175 Change-Id: I32d2fe78846f58d6e700100dd523732817f1f04d Signed-off-by: Ali Hockla --- .../org/onap/policy/pdpx/main/XacmlStateTest.java | 8 ++++- .../main/comm/XacmlPdpUpdatePublisherTest.java | 39 ++++++++++++++++++++-- 2 files changed, 43 insertions(+), 4 deletions(-) (limited to 'main/src/test') diff --git a/main/src/test/java/org/onap/policy/pdpx/main/XacmlStateTest.java b/main/src/test/java/org/onap/policy/pdpx/main/XacmlStateTest.java index eef1f1be..12d832ac 100644 --- a/main/src/test/java/org/onap/policy/pdpx/main/XacmlStateTest.java +++ b/main/src/test/java/org/onap/policy/pdpx/main/XacmlStateTest.java @@ -23,6 +23,7 @@ package org.onap.policy.pdpx.main; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -154,17 +155,22 @@ public class XacmlStateTest { req.setPdpGroup(GROUP); req.setPdpSubgroup(SUBGROUP); - PdpStatus status = state.updateInternalState(req); + PdpStatus status = state.updateInternalState(req, ""); PdpResponseDetails resp = status.getResponse(); assertNotNull(resp); assertEquals(req.getRequestId(), resp.getResponseTo()); assertEquals(PdpResponseStatus.SUCCESS, resp.getResponseStatus()); + assertNull(resp.getResponseMessage()); // ensure info was saved status = state.genHeartbeat(); assertEquals(GROUP, status.getPdpGroup()); assertEquals(SUBGROUP, status.getPdpSubgroup()); + + status = state.updateInternalState(req, "Failed to load policy: failLoadPolicy1: null"); + assertEquals(status.getResponse().getResponseMessage(), "Failed to load policy: failLoadPolicy1: null"); + assertEquals(status.getResponse().getResponseStatus(), PdpResponseStatus.FAIL); } @Test diff --git a/main/src/test/java/org/onap/policy/pdpx/main/comm/XacmlPdpUpdatePublisherTest.java b/main/src/test/java/org/onap/policy/pdpx/main/comm/XacmlPdpUpdatePublisherTest.java index 31bec51e..c8c6a816 100644 --- a/main/src/test/java/org/onap/policy/pdpx/main/comm/XacmlPdpUpdatePublisherTest.java +++ b/main/src/test/java/org/onap/policy/pdpx/main/comm/XacmlPdpUpdatePublisherTest.java @@ -22,6 +22,8 @@ package org.onap.policy.pdpx.main.comm; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.startsWith; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -38,6 +40,7 @@ import org.onap.policy.common.endpoints.event.comm.client.TopicSinkClient; import org.onap.policy.models.pdp.concepts.PdpStatus; import org.onap.policy.models.pdp.concepts.PdpUpdate; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; +import org.onap.policy.pdp.xacml.application.common.XacmlApplicationException; import org.onap.policy.pdp.xacml.application.common.XacmlApplicationServiceProvider; import org.onap.policy.pdpx.main.XacmlState; import org.onap.policy.pdpx.main.rest.XacmlPdpApplicationManager; @@ -81,9 +84,18 @@ public class XacmlPdpUpdatePublisherTest { @Mock private ToscaPolicy added2; + @Mock + private ToscaPolicy failPolicy1; + + @Mock + private ToscaPolicy failPolicy2; + @Mock private PdpUpdate update; + @Mock + private PdpUpdate failurePdpUpdate; + private XacmlPdpUpdatePublisher publisher; @@ -105,9 +117,12 @@ public class XacmlPdpUpdatePublisherTest { List updatePolicies = Arrays.asList(added1, deployed2, deployed3, added2); when(update.getPolicies()).thenReturn(updatePolicies); + List failureUpdatePolicies = Arrays.asList(added1, deployed2, deployed3, failPolicy1, failPolicy2); + when(failurePdpUpdate.getPolicies()).thenReturn(failureUpdatePolicies); + when(appmgr.getPolicyCount()).thenReturn(NEW_COUNT); - when(state.updateInternalState(update)).thenReturn(status); + when(state.updateInternalState(any(), any())).thenReturn(status); when(client.send(any())).thenReturn(true); @@ -115,7 +130,7 @@ public class XacmlPdpUpdatePublisherTest { } @Test - public void testHandlePdpUpdate() { + public void testHandlePdpUpdate() throws XacmlApplicationException { XacmlPdpStatisticsManager statmgr = new XacmlPdpStatisticsManager(); XacmlPdpStatisticsManager.setCurrent(statmgr); @@ -141,7 +156,25 @@ public class XacmlPdpUpdatePublisherTest { } @Test - public void testHandlePdpUpdate_NullPolicies() { + public void testHandlePdpUpdate_LoadPolicyFailed() throws XacmlApplicationException { + // Set loadPolicy to fail + doThrow(new XacmlApplicationException()).when(appmgr).loadDeployedPolicy(failPolicy1); + doThrow(new XacmlApplicationException()).when(appmgr).loadDeployedPolicy(failPolicy2); + + publisher.handlePdpUpdate(failurePdpUpdate); + + // two removed + verify(appmgr).removeUndeployedPolicy(deployed1); + verify(appmgr).removeUndeployedPolicy(deployed4); + + verify(failurePdpUpdate).setPolicies(any()); + + verify(state).updateInternalState(any(), startsWith("Failed to load policy")); + verify(client).send(status); + } + + @Test + public void testHandlePdpUpdate_NullPolicies() throws XacmlApplicationException { when(update.getPolicies()).thenReturn(null); publisher.handlePdpUpdate(update); -- cgit 1.2.3-korg