-package org.openecomp.sdc.be.components.impl.version;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.anyList;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-import static org.openecomp.sdc.be.components.impl.utils.TestGenerationUtils.getComponentsUtils;
-
-import java.util.List;
-import java.util.stream.Stream;
+package org.openecomp.sdc.be.components.impl.instance;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
+import org.openecomp.sdc.be.components.impl.policy.PolicyTargetsUpdateHandler;
+import org.openecomp.sdc.be.components.impl.policy.PolicyTargetsUpdater;
import org.openecomp.sdc.be.components.utils.ComponentInstanceBuilder;
import org.openecomp.sdc.be.components.utils.PolicyDefinitionBuilder;
import org.openecomp.sdc.be.components.utils.ResourceBuilder;
import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
+import java.util.List;
+import java.util.stream.Stream;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.anyList;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+import static org.openecomp.sdc.be.components.impl.utils.TestGenerationUtils.getComponentsUtils;
+
@RunWith(MockitoJUnitRunner.class)
public class PolicyTargetsUpdateOperationTest {
@Captor
private ArgumentCaptor<List<PolicyDefinition>> updatedPoliciesCaptor;
- private PolicyDefinition policy1, policy2, policy3;
+ private PolicyDefinition policyWithInstanceTarget1, policyWithInstanceTarget2, policyWithInstanceTarget3;
private Resource container;
@Before
public void setUp() throws Exception {
- policy1 = createPolicyWithCmptInstAsTargets("policy1", "inst1", "inst2");
- policy2 = createPolicyWithCmptInstAsTargets("policy2", "inst1", "inst2", "inst3");
- policy3 = createPolicyWithCmptInstAsTargets("policy3", "inst1", "inst3");
+ policyWithInstanceTarget1 = createPolicyWithCmptInstAsTargets("policy1", "inst1", "inst2");
+ policyWithInstanceTarget2 = createPolicyWithCmptInstAsTargets("policy2", "inst1", "inst2", "inst3");
+ policyWithInstanceTarget3 = createPolicyWithCmptInstAsTargets("policy3", "inst1", "inst3");
container = new ResourceBuilder()
- .addPolicy(policy1)
- .addPolicy(policy2)
- .addPolicy(policy3)
+ .addPolicy(policyWithInstanceTarget1)
+ .addPolicy(policyWithInstanceTarget2)
+ .addPolicy(policyWithInstanceTarget3)
.setUniqueId(CONTAINER_ID)
.build();
- policyTargetsUpdateOperation = new PolicyTargetsUpdateOperation(toscaOperationFacade, getComponentsUtils());
+ PolicyTargetsUpdateHandler policyTargetsUpdateHandler = new PolicyTargetsUpdateHandler(toscaOperationFacade, getComponentsUtils(), new PolicyTargetsUpdater());
+ policyTargetsUpdateOperation = new PolicyTargetsUpdateOperation(policyTargetsUpdateHandler);
}
@Test
- public void whenNoPolicies_returnActionOk() {
+ public void onChangeVersion_whenNoPolicies_returnActionOk() {
Component container = new Resource();
ComponentInstance prevVersion = new ComponentInstanceBuilder().setId("prevVersion").build();
ComponentInstance newVersion = new ComponentInstanceBuilder().setId("newVersion").build();
}
@Test
- public void whenNoCmptInstancePolicies_returnOk() {
+ public void onChangeVersion_whenNoCmptInstancePolicies_returnOk() {
PolicyDefinition policy = PolicyDefinitionBuilder.create().addGroupTarget("someGroup").build();
Component container = new ResourceBuilder().addPolicy(policy).build();
ComponentInstance prevVersion = new ComponentInstanceBuilder().setId("prevVersion").build();
}
@Test
- public void whenNoPoliciesWithPrevInstanceAsTarget_returnActionOk() {
+ public void onChangeVersion_whenNoPoliciesWithPrevInstanceAsTarget_returnActionOk() {
ComponentInstance prevVersion = new ComponentInstanceBuilder().setId("prevVersion").build();
ComponentInstance newVersion = new ComponentInstanceBuilder().setId("newVersion").build();
ActionStatus operationStatus = policyTargetsUpdateOperation.onChangeVersion(container, prevVersion, newVersion);
}
@Test
- public void replacePrevCmptInstanceIdWithNewInstanceIdAndUpdatePolicies() {
+ public void onChangeVersion_replacePrevCmptInstanceIdWithNewInstanceIdAndUpdatePolicies() {
ComponentInstance prevVersion = new ComponentInstanceBuilder().setId("inst2").build();
ComponentInstance newVersion = new ComponentInstanceBuilder().setId("inst2New").build();
when(toscaOperationFacade.updatePoliciesOfComponent(eq(CONTAINER_ID), updatedPoliciesCaptor.capture())).thenReturn(StorageOperationStatus.OK);
ActionStatus updatePoliciesRes = policyTargetsUpdateOperation.onChangeVersion(container, prevVersion, newVersion);
assertThat(updatePoliciesRes).isEqualTo(ActionStatus.OK);
List<PolicyDefinition> updatedPolicies = updatedPoliciesCaptor.getValue();
- verifyUpdatedPolicies(updatedPolicies, policy1, policy2);//policy3 does not have "inst2" as target, no update needed
- verifyUpdatedPolicyTargets(policy1, "inst1", "inst2New");
- verifyUpdatedPolicyTargets(policy2, "inst1", "inst2New", "inst3");
+ verifyUpdatedPolicies(updatedPolicies, policyWithInstanceTarget1, policyWithInstanceTarget2);//policy3 does not have "inst2" as target, no update needed
+ verifyUpdatedPolicyTargets(policyWithInstanceTarget1, "inst1", "inst2New");
+ verifyUpdatedPolicyTargets(policyWithInstanceTarget2, "inst1", "inst2New", "inst3");
}
@Test
- public void whenUpdateOfPoliciesFails_propagateTheFailure() {
+ public void onChangeVersion_whenUpdateOfPoliciesFails_propagateTheFailure() {
ComponentInstance prevVersion = new ComponentInstanceBuilder().setId("inst2").build();
ComponentInstance newVersion = new ComponentInstanceBuilder().setId("inst2New").build();
when(toscaOperationFacade.updatePoliciesOfComponent(eq(CONTAINER_ID), anyList())).thenReturn(StorageOperationStatus.GENERAL_ERROR);
assertThat(updatePoliciesRes).isEqualTo(ActionStatus.GENERAL_ERROR);
}
+ @Test
+ public void onDeleteInstance_whenNoPolicies_returnActionOk() {
+ Component container = new Resource();
+ ActionStatus operationStatus = policyTargetsUpdateOperation.onDelete(container, "instToDel");
+ assertThat(operationStatus).isEqualTo(ActionStatus.OK);
+ verifyZeroInteractions(toscaOperationFacade);
+ }
+
+ @Test
+ public void onDeleteInstance_whenNoCmptInstancePolicies_returnOk() {
+ PolicyDefinition policy = PolicyDefinitionBuilder.create().addGroupTarget("someGroup").build();
+ Component container = new ResourceBuilder().addPolicy(policy).build();
+ ActionStatus operationStatus = policyTargetsUpdateOperation.onDelete(container, "instToDel");
+ assertThat(operationStatus).isEqualTo(ActionStatus.OK);
+ verifyZeroInteractions(toscaOperationFacade);
+ }
+
+ @Test
+ public void onDeleteInstance_whenNoPoliciesWithInstanceAsTarget_returnActionOk() {
+ ActionStatus operationStatus = policyTargetsUpdateOperation.onDelete(container, "instToDel");
+ assertThat(operationStatus).isEqualTo(ActionStatus.OK);
+ verifyZeroInteractions(toscaOperationFacade);
+ }
+
+ @Test
+ public void onDeleteInstance_removeDeletedTargetFromPolicies() {
+ when(toscaOperationFacade.updatePoliciesOfComponent(eq(CONTAINER_ID), updatedPoliciesCaptor.capture())).thenReturn(StorageOperationStatus.OK);
+ ActionStatus operationStatus = policyTargetsUpdateOperation.onDelete(container, "inst2");
+ assertThat(operationStatus).isEqualTo(ActionStatus.OK);
+ List<PolicyDefinition> updatedPolicies = updatedPoliciesCaptor.getValue();
+ verifyUpdatedPolicies(updatedPolicies, policyWithInstanceTarget1, policyWithInstanceTarget2);
+ verifyUpdatedPolicyTargets(policyWithInstanceTarget1, "inst1");
+ verifyUpdatedPolicyTargets(policyWithInstanceTarget2, "inst1", "inst3");
+ }
+
+ @Test
+ public void onDeleteInstance_whenFailingToUpdatePolicies_propagateTheError() {
+ when(toscaOperationFacade.updatePoliciesOfComponent(eq(CONTAINER_ID), anyList())).thenReturn(StorageOperationStatus.GENERAL_ERROR);
+ ActionStatus operationStatus = policyTargetsUpdateOperation.onDelete(container, "inst2");
+ assertThat(operationStatus).isEqualTo(ActionStatus.GENERAL_ERROR);
+ }
+
private void verifyUpdatedPolicyTargets(PolicyDefinition updatedPolicy, String ... expectedCmptInstanceTargetIds) {
assertThat(updatedPolicy.resolveComponentInstanceTargets())
.containsExactlyInAnyOrder(expectedCmptInstanceTargetIds);
Stream.of(instId).forEach(policyDefinitionBuilder::addComponentInstanceTarget);
return policyDefinitionBuilder.setUniqueId(uniqueId).build();
}
+
}
\ No newline at end of file