From b50b70428dbdb59378ec04c1eef0927d29882245 Mon Sep 17 00:00:00 2001 From: xuegao Date: Tue, 8 Oct 2019 14:02:18 +0200 Subject: [PATCH] Fix policy status issue Change the initial status of policy from SENT_AND_DEPLOYED to NOT_SENT. Issue-ID: CLAMP-533 Change-Id: I5daec8e5d02c4db48005fbf25e642ec73df5a20c Signed-off-by: xuegao --- .../loop/components/external/PolicyComponent.java | 2 +- .../org/onap/clamp/loop/PolicyComponentTest.java | 239 +++++++++++++++++++++ 2 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 src/test/java/org/onap/clamp/loop/PolicyComponentTest.java diff --git a/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java b/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java index 9321423a..13ccea5e 100644 --- a/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java +++ b/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java @@ -62,7 +62,7 @@ public class PolicyComponent extends ExternalComponent { * on by one, each time we increase the level we can't decrease it anymore. * That's why it starts with the lowest one SENT_AND_DEPLOYED. */ - super(SENT_AND_DEPLOYED); + super(NOT_SENT); } @Override diff --git a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java new file mode 100644 index 00000000..73bd7f9b --- /dev/null +++ b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java @@ -0,0 +1,239 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2019 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. + * 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. + * ============LICENSE_END============================================ + * =================================================================== + * + */ + +package org.onap.clamp.loop; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; + +import org.apache.camel.Exchange; +import org.apache.camel.Message; +import org.junit.Test; +import org.mockito.Mockito; +import org.onap.clamp.loop.components.external.ExternalComponentState; +import org.onap.clamp.loop.components.external.PolicyComponent; + + +public class PolicyComponentTest { + + /** + * Test the computeState method. + * oldState newState expectedFinalState + * NOT_SENT SENT_AND_DEPLOYED NOT_SENT + * NOT_SENT SENT NOT_SENT + * NOT_SENT NOT_SENT NOT_SENT + * NOT_SENT IN_ERROR IN_ERROR + */ + @Test + public void computeStateTestOriginalStateNotSent() { + Exchange exchange = Mockito.mock(Exchange.class); + Message message = Mockito.mock(Message.class); + Exchange exchange2 = Mockito.mock(Exchange.class); + Mockito.when(exchange.getIn()).thenReturn(message); + Mockito.when(message.getExchange()).thenReturn(exchange2); + + // policy found + deployed + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(true); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(true); + + PolicyComponent policy = new PolicyComponent (); + ExternalComponentState state = policy.computeState(exchange); + + assertThat(state.getStateName()).isEqualTo("NOT_SENT"); + + // policy found + not deployed + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(true); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(false); + ExternalComponentState state2 = policy.computeState(exchange); + + assertThat(state2.getStateName()).isEqualTo("NOT_SENT"); + + // policy not found + not deployed + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(false); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(false); + ExternalComponentState state4 = policy.computeState(exchange); + + assertThat(state4.getStateName()).isEqualTo("NOT_SENT"); + + // policy not found + deployed + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(false); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(true); + ExternalComponentState state3 = policy.computeState(exchange); + + assertThat(state3.getStateName()).isEqualTo("IN_ERROR"); + + } + + /** + * Test the computeState method. + * oldState newState expectedFinalState + * SENT SENT SENT + * SENT SENT_AND_DEPLOYED SENT + * SENT IN_ERROR IN_ERROR + * SENT NOT_SENT NOT_SENT + */ + @Test + public void computeStateTestOriginalStateSent() throws IOException { + Exchange exchange = Mockito.mock(Exchange.class); + Message message = Mockito.mock(Message.class); + Exchange exchange2 = Mockito.mock(Exchange.class); + Mockito.when(exchange.getIn()).thenReturn(message); + Mockito.when(message.getExchange()).thenReturn(exchange2); + + PolicyComponent policy = new PolicyComponent (); + ExternalComponentState SENT = new ExternalComponentState("SENT", + "The policies defined have been created but NOT deployed on the policy engine", 50); + policy.setState(SENT); + + // new policy state SENT + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(true); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(false); + ExternalComponentState state = policy.computeState(exchange); + + assertThat(state.getStateName()).isEqualTo("SENT"); + + // new policy state SENT_AND_DEPLOYED + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(true); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(true); + ExternalComponentState state2 = policy.computeState(exchange); + + assertThat(state2.getStateName()).isEqualTo("SENT"); + + // new policy state IN_ERROR + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(false); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(true); + ExternalComponentState state3 = policy.computeState(exchange); + + assertThat(state3.getStateName()).isEqualTo("IN_ERROR"); + + // new policy state NOT_SENT + policy.setState(SENT); + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(false); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(false); + ExternalComponentState state4 = policy.computeState(exchange); + + assertThat(state4.getStateName()).isEqualTo("NOT_SENT"); + } + + /** + * Test the computeState method. + * oldState newState expectedFinalState + * SENT_AND_DEPLOYED SENT_AND_DEPLOYED SENT_AND_DEPLOYED + * SENT_AND_DEPLOYED SENT SENT + * SENT_AND_DEPLOYED IN_ERROR IN_ERROR + * SENT_AND_DEPLOYED NOT_SENT NOT_SENT + */ + @Test + public void computeStateTestOriginalStateSentAndDeployed() throws IOException { + Exchange exchange = Mockito.mock(Exchange.class); + Message message = Mockito.mock(Message.class); + Exchange exchange2 = Mockito.mock(Exchange.class); + Mockito.when(exchange.getIn()).thenReturn(message); + Mockito.when(message.getExchange()).thenReturn(exchange2); + + PolicyComponent policy = new PolicyComponent (); + ExternalComponentState SENT_AND_DEPLOYED = new ExternalComponentState("SENT_AND_DEPLOYED", + "The policies defined have been created and deployed on the policy engine", 10); + policy.setState(SENT_AND_DEPLOYED); + + // new policy state SENT_AND_DEPLOYED + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(true); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(true); + ExternalComponentState state = policy.computeState(exchange); + + assertThat(state.getStateName()).isEqualTo("SENT_AND_DEPLOYED"); + + // new policy state SENT + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(true); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(false); + ExternalComponentState state2 = policy.computeState(exchange); + + assertThat(state2.getStateName()).isEqualTo("SENT"); + + // new policy state IN_ERROR + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(false); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(true); + ExternalComponentState state3 = policy.computeState(exchange); + + assertThat(state3.getStateName()).isEqualTo("IN_ERROR"); + + // new policy state NOT_SENT + policy.setState(SENT_AND_DEPLOYED); + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(false); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(false); + ExternalComponentState state4 = policy.computeState(exchange); + + assertThat(state4.getStateName()).isEqualTo("NOT_SENT"); + } + + /** + * Test the computeState method. + * oldState newState expectedFinalState + * IN_ERROR SENT_AND_DEPLOYED IN_ERROR + * IN_ERROR SENT IN_ERROR + * IN_ERROR IN_ERROR IN_ERROR + * IN_ERROR NOT_SENT IN_ERROR + */ + @Test + public void computeStateTestOriginalStateInError() throws IOException { + Exchange exchange = Mockito.mock(Exchange.class); + Message message = Mockito.mock(Message.class); + Exchange exchange2 = Mockito.mock(Exchange.class); + Mockito.when(exchange.getIn()).thenReturn(message); + Mockito.when(message.getExchange()).thenReturn(exchange2); + + PolicyComponent policy = new PolicyComponent (); + ExternalComponentState IN_ERROR = new ExternalComponentState("IN_ERROR", + "There was an error during the sending to policy, the policy engine may be corrupted or inconsistent", 100); + policy.setState(IN_ERROR); + + // new policy state SENT_AND_DEPLOYED + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(true); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(true); + ExternalComponentState state = policy.computeState(exchange); + + assertThat(state.getStateName()).isEqualTo("IN_ERROR"); + + // new policy state SENT + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(true); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(false); + ExternalComponentState state2 = policy.computeState(exchange); + + assertThat(state2.getStateName()).isEqualTo("IN_ERROR"); + + // new policy state IN_ERROR + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(false); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(true); + ExternalComponentState state3 = policy.computeState(exchange); + + assertThat(state3.getStateName()).isEqualTo("IN_ERROR"); + + // new policy state NOT_SENT + Mockito.when(exchange2.getProperty("policyFound")).thenReturn(false); + Mockito.when(exchange2.getProperty("policyDeployed")).thenReturn(false); + ExternalComponentState state4 = policy.computeState(exchange); + + assertThat(state4.getStateName()).isEqualTo("IN_ERROR"); + } +} -- 2.16.6