cacheProvider.addElementDefinition(participantSyncMsg.getCompositionId(), list,
participantSyncMsg.getRevisionIdComposition());
}
+ } else if (participantSyncMsg.isRestarting()) {
+ checkComposition(participantSyncMsg);
}
for (var automationcomposition : participantSyncMsg.getAutomationcompositionList()) {
}
}
+ private void checkComposition(ParticipantSync participantSyncMsg) {
+ // edge case scenario in migration whit remove/add elements,
+ // when composition or target composition doesn't contain elements from this participant
+ for (var msg : cacheProvider.getMessagesOnHold().values()) {
+ if (participantSyncMsg.getCompositionId().equals(msg.getCompositionTargetId())) {
+ msg.setCompositionTargetId(null);
+ }
+ if (participantSyncMsg.getCompositionId().equals(msg.getCompositionId())) {
+ msg.setCompositionId(null);
+ }
+ }
+ }
+
private void deleteScenario(ParticipantSync participantSyncMsg) {
if (AcTypeState.COMMISSIONED.equals(participantSyncMsg.getState())) {
cacheProvider.removeElementDefinition(participantSyncMsg.getCompositionId());
import org.onap.policy.clamp.acm.participant.intermediary.api.CompositionDto;
import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantMessagePublisher;
import org.onap.policy.clamp.acm.participant.intermediary.handler.cache.AcDefinition;
+import org.onap.policy.clamp.acm.participant.intermediary.handler.cache.AutomationCompositionMsg;
import org.onap.policy.clamp.acm.participant.intermediary.handler.cache.CacheProvider;
import org.onap.policy.clamp.acm.participant.intermediary.main.parameters.CommonTestData;
import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
verify(cacheProvider).removeElementDefinition(participantSyncMsg.getCompositionId());
verify(cacheProvider).removeAutomationComposition(restartAc.getAutomationCompositionId());
}
+
+ @Test
+ void syncDeleteInMigrationTest() {
+ var participantSyncMsg = new ParticipantSync();
+ participantSyncMsg.setState(AcTypeState.PRIMED);
+ participantSyncMsg.setRestarting(true);
+ var compositionId = UUID.randomUUID();
+ participantSyncMsg.setCompositionId(compositionId);
+
+ AutomationCompositionMsg<?> acMsgComposition = mock(AutomationCompositionMsg.class);
+ when(acMsgComposition.getCompositionId()).thenReturn(compositionId);
+
+ AutomationCompositionMsg<?> acMsgCompositionTarget = mock(AutomationCompositionMsg.class);
+ acMsgCompositionTarget.setCompositionId(UUID.randomUUID());
+ when(acMsgCompositionTarget.getCompositionTargetId()).thenReturn(compositionId);
+
+ var cacheProvider = mock(CacheProvider.class);
+ when(cacheProvider.getMessagesOnHold())
+ .thenReturn(Map.of(UUID.randomUUID(), acMsgComposition, UUID.randomUUID(), acMsgCompositionTarget));
+ var ach = new AcDefinitionHandler(cacheProvider, mock(ParticipantMessagePublisher.class),
+ mock(ThreadHandler.class));
+ ach.handleParticipantSync(participantSyncMsg);
+ verify(acMsgComposition).setCompositionId(null);
+ verify(acMsgCompositionTarget).setCompositionTargetId(null);
+ }
}