aboutsummaryrefslogtreecommitdiffstats
path: root/participant/participant-intermediary/src/test/java
diff options
context:
space:
mode:
authorFrancescoFioraEst <francesco.fiora@est.tech>2024-03-20 16:17:46 +0000
committerFrancesco Fiora <francesco.fiora@est.tech>2024-08-06 10:33:25 +0000
commita2477d552ad3993989a4f8b7a7adac6686719cf3 (patch)
treea7acc256cd3967e85ea091bd3646272def3d3d3d /participant/participant-intermediary/src/test/java
parente1589aa82ddfb58b0d4bcabe1c63cdda29939e6a (diff)
Allow migration to be performed in stages in ACM intermediary
Allow migration to be performed in stages, and replace newElement and removedElement with an Enum in CompositionElementDto and InstanceElementDto. Issue-ID: POLICY-5091 Change-Id: I2d66abc453776fd708fc18fd9019ca248f8d2eee Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
Diffstat (limited to 'participant/participant-intermediary/src/test/java')
-rw-r--r--participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/AcElementListenerV2Test.java2
-rw-r--r--participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcSubStateHandlerTest.java87
-rw-r--r--participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandlerTest.java113
-rw-r--r--participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionOutHandlerTest.java26
-rw-r--r--participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ThreadHandlerTest.java4
5 files changed, 159 insertions, 73 deletions
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/AcElementListenerV2Test.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/AcElementListenerV2Test.java
index be8275ca6..a6cb7b005 100644
--- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/AcElementListenerV2Test.java
+++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/AcElementListenerV2Test.java
@@ -134,7 +134,7 @@ class AcElementListenerV2Test {
var compositionElement = new CompositionElementDto(UUID.randomUUID(), new ToscaConceptIdentifier(),
Map.of(), Map.of());
var instanceElement = new InstanceElementDto(UUID.randomUUID(), UUID.randomUUID(), null, Map.of(), Map.of());
- acElementListenerV2.migrate(compositionElement, compositionElement, instanceElement, instanceElement);
+ acElementListenerV2.migrate(compositionElement, compositionElement, instanceElement, instanceElement, 0);
verify(intermediaryApi).updateAutomationCompositionElementState(instanceElement.instanceId(),
instanceElement.elementId(), DeployState.DEPLOYED, null,
StateChangeResult.NO_ERROR, "Migrated");
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcSubStateHandlerTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcSubStateHandlerTest.java
index 293a4415b..8fad1d22b 100644
--- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcSubStateHandlerTest.java
+++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcSubStateHandlerTest.java
@@ -28,11 +28,13 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.onap.policy.clamp.acm.participant.intermediary.main.parameters.CommonTestData;
import org.onap.policy.clamp.models.acm.concepts.AcElementDeploy;
+import org.onap.policy.clamp.models.acm.concepts.AutomationComposition;
import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition;
import org.onap.policy.clamp.models.acm.concepts.ParticipantDeploy;
import org.onap.policy.clamp.models.acm.messages.kafka.participant.AutomationCompositionMigration;
@@ -64,37 +66,70 @@ class AcSubStateHandlerTest {
@Test
void handleAcMigrationPrecheckTest() {
- var listener = mock(ThreadHandler.class);
- var cacheProvider = mock(CacheProvider.class);
- var ach = new AcSubStateHandler(cacheProvider, listener);
+ var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+ automationComposition.setCompositionId(UUID.randomUUID());
+ automationComposition.setInstanceId(UUID.randomUUID());
+ automationComposition.setCompositionTargetId(UUID.randomUUID());
+ var cacheProvider = new CacheProvider(CommonTestData.getParticipantParameters());
+ var definitions =
+ CommonTestData.createAutomationCompositionElementDefinitionList(automationComposition);
+ cacheProvider.addElementDefinition(automationComposition.getCompositionId(), definitions);
+ cacheProvider.addElementDefinition(automationComposition.getCompositionTargetId(), definitions);
+ var participantDeploy =
+ CommonTestData.createparticipantDeploy(cacheProvider.getParticipantId(), automationComposition);
+ cacheProvider.initializeAutomationComposition(automationComposition.getCompositionId(),
+ automationComposition.getInstanceId(), participantDeploy);
var migrationMsg = new AutomationCompositionMigration();
+ migrationMsg.setStage(0);
+ migrationMsg.setCompositionId(automationComposition.getCompositionId());
+ migrationMsg.setAutomationCompositionId(automationComposition.getInstanceId());
+ migrationMsg.setCompositionTargetId(automationComposition.getCompositionTargetId());
+ migrationMsg.setParticipantUpdatesList(List.of(participantDeploy));
migrationMsg.setPrecheck(true);
- assertDoesNotThrow(() -> ach.handleAcMigrationPrecheck(migrationMsg));
+ var listener = mock(ThreadHandler.class);
+ var ach = new AcSubStateHandler(cacheProvider, listener);
+ ach.handleAcMigrationPrecheck(migrationMsg);
+ verify(listener, times(automationComposition.getElements().size()))
+ .migratePrecheck(any(), any(), any(), any(), any());
+ }
+
+ @Test
+ void handleAcMigrationPrecheckAddRemoveTest() {
var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
- migrationMsg.setCompositionTargetId(UUID.randomUUID());
- migrationMsg.setAutomationCompositionId(automationComposition.getInstanceId());
- assertDoesNotThrow(() -> ach.handleAcMigrationPrecheck(migrationMsg));
- when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
- .thenReturn(automationComposition);
- var participantDeploy = new ParticipantDeploy();
- participantDeploy.setParticipantId(CommonTestData.getParticipantId());
- when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
- migrationMsg.getParticipantUpdatesList().add(participantDeploy);
- Map<ToscaConceptIdentifier, AutomationCompositionElementDefinition> map = new HashMap<>();
- for (var element : automationComposition.getElements().values()) {
- var acElementDeploy = new AcElementDeploy();
- acElementDeploy.setProperties(Map.of());
- acElementDeploy.setId(element.getId());
- acElementDeploy.setDefinition(element.getDefinition());
- participantDeploy.getAcElementList().add(acElementDeploy);
- map.put(element.getDefinition(), new AutomationCompositionElementDefinition());
- }
- when(cacheProvider.getAcElementsDefinitions())
- .thenReturn(Map.of(automationComposition.getCompositionId(), map,
- migrationMsg.getCompositionTargetId(), map));
+ automationComposition.setCompositionId(UUID.randomUUID());
+ automationComposition.setInstanceId(UUID.randomUUID());
+ var cacheProvider = new CacheProvider(CommonTestData.getParticipantParameters());
+ var definitions =
+ CommonTestData.createAutomationCompositionElementDefinitionList(automationComposition);
+ cacheProvider.addElementDefinition(automationComposition.getCompositionId(), definitions);
+ var participantDeploy =
+ CommonTestData.createparticipantDeploy(cacheProvider.getParticipantId(), automationComposition);
+ cacheProvider.initializeAutomationComposition(automationComposition.getCompositionId(),
+ automationComposition.getInstanceId(), participantDeploy);
+
+ var acMigrate = new AutomationComposition(automationComposition);
+ acMigrate.setCompositionTargetId(UUID.randomUUID());
+
+ // replacing first element with new one
+ var element = acMigrate.getElements().values().iterator().next();
+ element.setDefinition(new ToscaConceptIdentifier("policy.clamp.new.element", "1.0.0"));
+ element.setId(UUID.randomUUID());
+
+ var migrateDefinitions =
+ CommonTestData.createAutomationCompositionElementDefinitionList(acMigrate);
+ cacheProvider.addElementDefinition(acMigrate.getCompositionTargetId(), migrateDefinitions);
+ var migrationMsg = new AutomationCompositionMigration();
+ migrationMsg.setStage(0);
+ migrationMsg.setCompositionId(acMigrate.getCompositionId());
+ migrationMsg.setAutomationCompositionId(acMigrate.getInstanceId());
+ migrationMsg.setCompositionTargetId(acMigrate.getCompositionTargetId());
+ var participantMigrate = CommonTestData.createparticipantDeploy(cacheProvider.getParticipantId(), acMigrate);
+ migrationMsg.setParticipantUpdatesList(List.of(participantMigrate));
+ var listener = mock(ThreadHandler.class);
+ var ach = new AcSubStateHandler(cacheProvider, listener);
ach.handleAcMigrationPrecheck(migrationMsg);
- verify(listener, times(automationComposition.getElements().size()))
+ verify(listener, times(acMigrate.getElements().size() + 1))
.migratePrecheck(any(), any(), any(), any(), any());
}
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandlerTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandlerTest.java
index 5973508a8..7f21264b2 100644
--- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandlerTest.java
+++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandlerTest.java
@@ -23,12 +23,14 @@ package org.onap.policy.clamp.acm.participant.intermediary.handler;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.junit.jupiter.api.Test;
@@ -197,57 +199,82 @@ class AutomationCompositionHandlerTest {
}
@Test
- void handleAutomationCompositionMigrationTest() {
- var listener = mock(ThreadHandler.class);
- var cacheProvider = mock(CacheProvider.class);
- var ach = new AutomationCompositionHandler(cacheProvider, mock(ParticipantMessagePublisher.class), listener);
+ void handleMigrationNullTest() {
+ var ach = new AutomationCompositionHandler(
+ mock(CacheProvider.class), mock(ParticipantMessagePublisher.class), mock(ThreadHandler.class));
var migrationMsg = new AutomationCompositionMigration();
+ migrationMsg.setStage(0);
assertDoesNotThrow(() -> ach.handleAutomationCompositionMigration(migrationMsg));
- var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
-
+ migrationMsg.setAutomationCompositionId(UUID.randomUUID());
+ migrationMsg.setCompositionTargetId(UUID.randomUUID());
assertDoesNotThrow(() -> ach.handleAutomationCompositionMigration(migrationMsg));
- when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
- .thenReturn(automationComposition);
- when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
-
- Map<ToscaConceptIdentifier, AutomationCompositionElementDefinition> map = new HashMap<>();
- var participantDeploy = new ParticipantDeploy();
- populateMigrationMsg(automationComposition, migrationMsg, map, participantDeploy);
- when(cacheProvider.getAcElementsDefinitions())
- .thenReturn(Map.of(automationComposition.getCompositionId(), map,
- migrationMsg.getCompositionTargetId(), map));
+ }
+ @Test
+ void handleAutomationCompositionMigrationTest() {
+ var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+ automationComposition.setCompositionId(UUID.randomUUID());
+ automationComposition.setInstanceId(UUID.randomUUID());
+ automationComposition.setCompositionTargetId(UUID.randomUUID());
+ var cacheProvider = new CacheProvider(CommonTestData.getParticipantParameters());
+ var definitions =
+ CommonTestData.createAutomationCompositionElementDefinitionList(automationComposition);
+ cacheProvider.addElementDefinition(automationComposition.getCompositionId(), definitions);
+ cacheProvider.addElementDefinition(automationComposition.getCompositionTargetId(), definitions);
+ var participantDeploy =
+ CommonTestData.createparticipantDeploy(cacheProvider.getParticipantId(), automationComposition);
+ cacheProvider.initializeAutomationComposition(automationComposition.getCompositionId(),
+ automationComposition.getInstanceId(), participantDeploy);
+ var migrationMsg = new AutomationCompositionMigration();
+ migrationMsg.setStage(0);
+ migrationMsg.setCompositionId(automationComposition.getCompositionId());
+ migrationMsg.setAutomationCompositionId(automationComposition.getInstanceId());
+ migrationMsg.setCompositionTargetId(automationComposition.getCompositionTargetId());
+ migrationMsg.setParticipantUpdatesList(List.of(participantDeploy));
+ var listener = mock(ThreadHandler.class);
+ var ach = new AutomationCompositionHandler(cacheProvider, mock(ParticipantMessagePublisher.class), listener);
ach.handleAutomationCompositionMigration(migrationMsg);
- verify(listener, times(automationComposition.getElements().size() + 1))
- .migrate(any(), any(), any(), any(), any());
+ verify(listener, times(automationComposition.getElements().size()))
+ .migrate(any(), any(), any(), any(), any(), anyInt());
}
- private void populateMigrationMsg(AutomationComposition automationComposition,
- AutomationCompositionMigration migrationMsg,
- Map<ToscaConceptIdentifier,
- AutomationCompositionElementDefinition> map,
- ParticipantDeploy participantDeploy) {
+ @Test
+ void handleMigrationAddRemoveTest() {
+ var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+ automationComposition.setCompositionId(UUID.randomUUID());
+ automationComposition.setInstanceId(UUID.randomUUID());
+ var cacheProvider = new CacheProvider(CommonTestData.getParticipantParameters());
+ var definitions =
+ CommonTestData.createAutomationCompositionElementDefinitionList(automationComposition);
+ cacheProvider.addElementDefinition(automationComposition.getCompositionId(), definitions);
+ var participantDeploy =
+ CommonTestData.createparticipantDeploy(cacheProvider.getParticipantId(), automationComposition);
+ cacheProvider.initializeAutomationComposition(automationComposition.getCompositionId(),
+ automationComposition.getInstanceId(), participantDeploy);
- participantDeploy.setParticipantId(CommonTestData.getParticipantId());
- migrationMsg.setCompositionTargetId(UUID.randomUUID());
- migrationMsg.setAutomationCompositionId(automationComposition.getInstanceId());
- migrationMsg.getParticipantUpdatesList().add(participantDeploy);
- for (var element : automationComposition.getElements().values()) {
- var acElementDeploy = new AcElementDeploy();
- acElementDeploy.setProperties(Map.of());
- acElementDeploy.setId(element.getId());
- acElementDeploy.setDefinition(element.getDefinition());
- participantDeploy.getAcElementList().add(acElementDeploy);
- map.put(element.getDefinition(), new AutomationCompositionElementDefinition());
- }
- // remove an element
- participantDeploy.getAcElementList().remove(0);
- // Add a new element
- var acElementDeploy = new AcElementDeploy();
- acElementDeploy.setProperties(Map.of());
- acElementDeploy.setId(UUID.randomUUID());
- acElementDeploy.setDefinition(new ToscaConceptIdentifier("1.2.3", "policy.clamp.new.element"));
- participantDeploy.getAcElementList().add(acElementDeploy);
+ var acMigrate = new AutomationComposition(automationComposition);
+ acMigrate.setCompositionTargetId(UUID.randomUUID());
+
+ // replacing first element with new one
+ var element = acMigrate.getElements().values().iterator().next();
+ element.setDefinition(new ToscaConceptIdentifier("policy.clamp.new.element", "1.0.0"));
+ element.setId(UUID.randomUUID());
+ var migrateDefinitions =
+ CommonTestData.createAutomationCompositionElementDefinitionList(acMigrate);
+ cacheProvider.addElementDefinition(acMigrate.getCompositionTargetId(), migrateDefinitions);
+
+ var migrationMsg = new AutomationCompositionMigration();
+ migrationMsg.setStage(0);
+ migrationMsg.setCompositionId(acMigrate.getCompositionId());
+ migrationMsg.setAutomationCompositionId(acMigrate.getInstanceId());
+ migrationMsg.setCompositionTargetId(acMigrate.getCompositionTargetId());
+ var participantMigrate = CommonTestData.createparticipantDeploy(cacheProvider.getParticipantId(), acMigrate);
+ migrationMsg.setParticipantUpdatesList(List.of(participantMigrate));
+ var listener = mock(ThreadHandler.class);
+ var ach = new AutomationCompositionHandler(cacheProvider, mock(ParticipantMessagePublisher.class), listener);
+ ach.handleAutomationCompositionMigration(migrationMsg);
+ verify(listener, times(acMigrate.getElements().size() + 1))
+ .migrate(any(), any(), any(), any(), any(), anyInt());
}
}
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionOutHandlerTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionOutHandlerTest.java
index 27813988d..dd8747ff4 100644
--- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionOutHandlerTest.java
+++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionOutHandlerTest.java
@@ -65,11 +65,35 @@ class AutomationCompositionOutHandlerTest {
when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
.thenReturn(automationComposition);
assertDoesNotThrow(() -> acOutHandler.updateAutomationCompositionElementState(
- automationComposition.getInstanceId(), UUID.randomUUID(), DeployState.DEPLOYED, null, null, null));
+ automationComposition.getInstanceId(), UUID.randomUUID(), DeployState.DEPLOYED,
+ null, null, null));
var elementId = automationComposition.getElements().values().iterator().next().getId();
assertDoesNotThrow(() -> acOutHandler.updateAutomationCompositionElementState(
automationComposition.getInstanceId(), elementId, null, null, null, null));
+
+ assertDoesNotThrow(() -> acOutHandler.updateAutomationCompositionElementStage(
+ elementId, null, null, 0, null));
+ assertDoesNotThrow(() -> acOutHandler.updateAutomationCompositionElementStage(
+ null, elementId, null, 0, null));
+ assertDoesNotThrow(() -> acOutHandler.updateAutomationCompositionElementStage(
+ UUID.randomUUID(), elementId, null, 0, null));
+ assertDoesNotThrow(() -> acOutHandler.updateAutomationCompositionElementStage(
+ automationComposition.getInstanceId(), UUID.randomUUID(), null, 0, null));
+ }
+
+ @Test
+ void updateAutomationCompositionElementStageTest() {
+ var publisher = mock(ParticipantMessagePublisher.class);
+ var cacheProvider = mock(CacheProvider.class);
+ var acOutHandler = new AutomationCompositionOutHandler(publisher, cacheProvider);
+ var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+ when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
+ .thenReturn(automationComposition);
+ var elementId = automationComposition.getElements().values().iterator().next().getId();
+ acOutHandler.updateAutomationCompositionElementStage(
+ automationComposition.getInstanceId(), elementId, StateChangeResult.NO_ERROR, 0, "OK");
+ verify(publisher).sendAutomationCompositionAck(any(AutomationCompositionDeployAck.class));
}
@Test
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ThreadHandlerTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ThreadHandlerTest.java
index 90d011fac..d05471901 100644
--- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ThreadHandlerTest.java
+++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ThreadHandlerTest.java
@@ -117,7 +117,7 @@ class ThreadHandlerTest {
var compositionElementTarget = new CompositionElementDto(compositionTargetId, new ToscaConceptIdentifier(),
properties, properties);
threadHandler.migrate(messageId, compositionElement, compositionElementTarget,
- instanceElement, instanceElementUpdated);
+ instanceElement, instanceElementUpdated, 0);
verify(listener, timeout(TIMEOUT)).migrate(compositionElement, compositionElementTarget,
instanceElement, instanceElementUpdated, 0);
@@ -170,7 +170,7 @@ class ThreadHandlerTest {
doThrow(new PfModelException(Status.INTERNAL_SERVER_ERROR, "Error")).when(listener)
.migrate(compositionElement, compositionElementTarget, instanceElement, instanceElementUpdated, 0);
threadHandler.migrate(messageId, compositionElement, compositionElementTarget,
- instanceElement, instanceElementUpdated);
+ instanceElement, instanceElementUpdated, 0);
verify(intermediaryApi, timeout(TIMEOUT)).updateAutomationCompositionElementState(instanceId, elementId,
DeployState.DEPLOYED, null, StateChangeResult.FAILED,
"Automation composition element migrate failed");