diff options
author | 2024-04-08 08:39:50 +0100 | |
---|---|---|
committer | 2024-04-10 10:00:01 +0000 | |
commit | 7c6f474a643730190961f4671004bf1794962e3b (patch) | |
tree | d84747c791dbb7a619e20db66383070f8f284bf7 /participant/participant-intermediary/src/test | |
parent | 261ada4c1c7f581e5480434541ff3ee558518e37 (diff) |
Refactor ACM participant-intermediary
Refactor AutomationCompositionHandler to improve the maintainability.
Issue-ID: POLICY-4959
Change-Id: Id112ade5b786d964d61021fe82689aa9512b4bc3
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
Diffstat (limited to 'participant/participant-intermediary/src/test')
6 files changed, 304 insertions, 193 deletions
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcDefinitionHandlerTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcDefinitionHandlerTest.java new file mode 100644 index 000000000..3bbdc3dbf --- /dev/null +++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcDefinitionHandlerTest.java @@ -0,0 +1,111 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2024 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.acm.participant.intermediary.handler; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +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.api.CompositionDto; +import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantMessagePublisher; +import org.onap.policy.clamp.acm.participant.intermediary.main.parameters.CommonTestData; +import org.onap.policy.clamp.models.acm.concepts.AcTypeState; +import org.onap.policy.clamp.models.acm.concepts.ParticipantDefinition; +import org.onap.policy.clamp.models.acm.messages.kafka.participant.ParticipantPrime; +import org.onap.policy.clamp.models.acm.messages.kafka.participant.ParticipantPrimeAck; +import org.onap.policy.clamp.models.acm.messages.kafka.participant.ParticipantRestart; +import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; + +public class AcDefinitionHandlerTest { + + @Test + void handleComposiotPrimeTest() { + var listener = mock(ThreadHandler.class); + var cacheProvider = mock(CacheProvider.class); + when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId()); + var ach = new AcDefinitionHandler(cacheProvider, mock(ParticipantMessagePublisher.class), listener); + var participantPrimeMsg = new ParticipantPrime(); + participantPrimeMsg.setCompositionId(UUID.randomUUID()); + participantPrimeMsg.setParticipantDefinitionUpdates(List.of(createParticipantDefinition())); + ach.handlePrime(participantPrimeMsg); + verify(cacheProvider).addElementDefinition(any(UUID.class), anyList()); + verify(listener).prime(any(UUID.class), any(CompositionDto.class)); + } + + private ParticipantDefinition createParticipantDefinition() { + var def = new ParticipantDefinition(); + def.setParticipantId(CommonTestData.getParticipantId()); + def.setAutomationCompositionElementDefinitionList( + List.of(CommonTestData.createAutomationCompositionElementDefinition( + new ToscaConceptIdentifier("key", "1.0.0")))); + return def; + } + + @Test + void handleCompositionDeprimeTest() { + var acElementDefinition = CommonTestData.createAutomationCompositionElementDefinition( + new ToscaConceptIdentifier("key", "1.0.0")); + var compositionId = UUID.randomUUID(); + var listener = mock(ThreadHandler.class); + var cacheProvider = mock(CacheProvider.class); + var ach = new AcDefinitionHandler(cacheProvider, mock(ParticipantMessagePublisher.class), listener); + when(cacheProvider.getAcElementsDefinitions()) + .thenReturn(Map.of(compositionId, Map.of(new ToscaConceptIdentifier(), acElementDefinition))); + var participantPrimeMsg = new ParticipantPrime(); + participantPrimeMsg.setCompositionId(compositionId); + ach.handlePrime(participantPrimeMsg); + verify(listener).deprime(any(UUID.class), any(CompositionDto.class)); + } + + @Test + void handleCompositionAlreadyDeprimedTest() { + var compositionId = UUID.randomUUID(); + var participantMessagePublisher = mock(ParticipantMessagePublisher.class); + var ach = new AcDefinitionHandler(mock(CacheProvider.class), participantMessagePublisher, + mock(ThreadHandler.class)); + var participantPrimeMsg = new ParticipantPrime(); + participantPrimeMsg.setCompositionId(compositionId); + ach.handlePrime(participantPrimeMsg); + verify(participantMessagePublisher).sendParticipantPrimeAck(any(ParticipantPrimeAck.class)); + } + + @Test + void restartedTest() { + var participantRestartMsg = new ParticipantRestart(); + participantRestartMsg.setState(AcTypeState.PRIMED); + participantRestartMsg.setCompositionId(UUID.randomUUID()); + participantRestartMsg.getParticipantDefinitionUpdates().add(createParticipantDefinition()); + participantRestartMsg.setAutomationcompositionList(List.of(CommonTestData.createParticipantRestartAc())); + + var cacheProvider = mock(CacheProvider.class); + var listener = mock(ThreadHandler.class); + var ach = new AcDefinitionHandler(cacheProvider, mock(ParticipantMessagePublisher.class), listener); + ach.handleParticipantRestart(participantRestartMsg); + verify(cacheProvider).initializeAutomationComposition(any(UUID.class), any()); + verify(cacheProvider).addElementDefinition(any(), any()); + } +} diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcLockHandlerTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcLockHandlerTest.java new file mode 100644 index 000000000..ebc9c8da3 --- /dev/null +++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AcLockHandlerTest.java @@ -0,0 +1,112 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2024 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +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.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.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.AutomationCompositionElementDefinition; +import org.onap.policy.clamp.models.acm.concepts.DeployState; +import org.onap.policy.clamp.models.acm.concepts.LockState; +import org.onap.policy.clamp.models.acm.messages.kafka.participant.AutomationCompositionStateChange; +import org.onap.policy.clamp.models.acm.messages.rest.instantiation.DeployOrder; +import org.onap.policy.clamp.models.acm.messages.rest.instantiation.LockOrder; +import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; + +class AcLockHandlerTest { + + @Test + void handleAcStateChangeNullTest() { + var cacheProvider = mock(CacheProvider.class); + var ach = new AcLockHandler(cacheProvider, mock(ThreadHandler.class)); + + var automationCompositionStateChange = new AutomationCompositionStateChange(); + assertDoesNotThrow(() -> ach.handleAutomationCompositionStateChange(automationCompositionStateChange)); + + var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next(); + automationCompositionStateChange.setAutomationCompositionId(automationComposition.getInstanceId()); + assertDoesNotThrow(() -> ach.handleAutomationCompositionStateChange(automationCompositionStateChange)); + } + + @Test + void handleAcStateChangeLockTest() { + var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next(); + automationComposition.setDeployState(DeployState.DEPLOYED); + automationComposition.setLockState(LockState.UNLOCKED); + var cacheProvider = mock(CacheProvider.class); + when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId())) + .thenReturn(automationComposition); + when(cacheProvider.getCommonProperties(any(UUID.class), any(UUID.class))).thenReturn(Map.of()); + + var listener = mock(ThreadHandler.class); + var ach = new AcLockHandler(cacheProvider, listener); + Map<ToscaConceptIdentifier, AutomationCompositionElementDefinition> map = new HashMap<>(); + for (var element : automationComposition.getElements().values()) { + map.put(element.getDefinition(), new AutomationCompositionElementDefinition()); + } + when(cacheProvider.getAcElementsDefinitions()) + .thenReturn(Map.of(automationComposition.getCompositionId(), map)); + var automationCompositionStateChange = CommonTestData.getStateChange(CommonTestData.getParticipantId(), + automationComposition.getInstanceId(), DeployOrder.NONE, LockOrder.LOCK); + ach.handleAutomationCompositionStateChange(automationCompositionStateChange); + verify(listener, times(automationComposition.getElements().size())).lock(any(), any(), any()); + for (var element : automationComposition.getElements().values()) { + assertEquals(LockState.LOCKING, element.getLockState()); + } + } + + @Test + void handleAcStateChangeUnlockTest() { + var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next(); + automationComposition.setDeployState(DeployState.DEPLOYED); + automationComposition.setLockState(LockState.LOCKED); + var cacheProvider = mock(CacheProvider.class); + when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId())) + .thenReturn(automationComposition); + when(cacheProvider.getCommonProperties(any(UUID.class), any(UUID.class))).thenReturn(Map.of()); + + var listener = mock(ThreadHandler.class); + var ach = new AcLockHandler(cacheProvider, listener); + Map<ToscaConceptIdentifier, AutomationCompositionElementDefinition> map = new HashMap<>(); + for (var element : automationComposition.getElements().values()) { + map.put(element.getDefinition(), new AutomationCompositionElementDefinition()); + } + when(cacheProvider.getAcElementsDefinitions()) + .thenReturn(Map.of(automationComposition.getCompositionId(), map)); + var automationCompositionStateChange = CommonTestData.getStateChange(CommonTestData.getParticipantId(), + automationComposition.getInstanceId(), DeployOrder.NONE, LockOrder.UNLOCK); + ach.handleAutomationCompositionStateChange(automationCompositionStateChange); + verify(listener, times(automationComposition.getElements().size())).unlock(any(), any(), any()); + for (var element : automationComposition.getElements().values()) { + assertEquals(LockState.UNLOCKING, element.getLockState()); + } + } +} 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 b8fd3b42d..40e3b1eec 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 @@ -29,33 +29,24 @@ 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.junit.jupiter.api.extension.ExtendWith; -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.main.parameters.CommonTestData; import org.onap.policy.clamp.models.acm.concepts.AcElementDeploy; -import org.onap.policy.clamp.models.acm.concepts.AcTypeState; import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition; import org.onap.policy.clamp.models.acm.concepts.DeployState; -import org.onap.policy.clamp.models.acm.concepts.LockState; import org.onap.policy.clamp.models.acm.concepts.ParticipantDeploy; import org.onap.policy.clamp.models.acm.messages.kafka.participant.AutomationCompositionDeploy; import org.onap.policy.clamp.models.acm.messages.kafka.participant.AutomationCompositionDeployAck; import org.onap.policy.clamp.models.acm.messages.kafka.participant.AutomationCompositionMigration; import org.onap.policy.clamp.models.acm.messages.kafka.participant.AutomationCompositionStateChange; -import org.onap.policy.clamp.models.acm.messages.kafka.participant.ParticipantPrimeAck; import org.onap.policy.clamp.models.acm.messages.kafka.participant.PropertiesUpdate; import org.onap.policy.clamp.models.acm.messages.rest.instantiation.DeployOrder; import org.onap.policy.clamp.models.acm.messages.rest.instantiation.LockOrder; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; -import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@ExtendWith(SpringExtension.class) class AutomationCompositionHandlerTest { @Test @@ -109,58 +100,6 @@ class AutomationCompositionHandlerTest { } @Test - void handleAutomationCompositionStateChangeLockTest() { - var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next(); - var cacheProvider = mock(CacheProvider.class); - when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId())) - .thenReturn(automationComposition); - when(cacheProvider.getCommonProperties(any(UUID.class), any(UUID.class))).thenReturn(Map.of()); - - var participantMessagePublisher = mock(ParticipantMessagePublisher.class); - var listener = mock(ThreadHandler.class); - var ach = new AutomationCompositionHandler(cacheProvider, participantMessagePublisher, listener); - Map<ToscaConceptIdentifier, AutomationCompositionElementDefinition> map = new HashMap<>(); - for (var element : automationComposition.getElements().values()) { - map.put(element.getDefinition(), new AutomationCompositionElementDefinition()); - } - when(cacheProvider.getAcElementsDefinitions()) - .thenReturn(Map.of(automationComposition.getCompositionId(), map)); - var automationCompositionStateChange = CommonTestData.getStateChange(CommonTestData.getParticipantId(), - automationComposition.getInstanceId(), DeployOrder.NONE, LockOrder.LOCK); - ach.handleAutomationCompositionStateChange(automationCompositionStateChange); - verify(listener, times(automationComposition.getElements().size())).lock(any(), any(), any()); - for (var element : automationComposition.getElements().values()) { - assertEquals(LockState.LOCKING, element.getLockState()); - } - } - - @Test - void handleAutomationCompositionStateChangeUnlockTest() { - var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next(); - var cacheProvider = mock(CacheProvider.class); - when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId())) - .thenReturn(automationComposition); - when(cacheProvider.getCommonProperties(any(UUID.class), any(UUID.class))).thenReturn(Map.of()); - - var participantMessagePublisher = mock(ParticipantMessagePublisher.class); - var listener = mock(ThreadHandler.class); - var ach = new AutomationCompositionHandler(cacheProvider, participantMessagePublisher, listener); - Map<ToscaConceptIdentifier, AutomationCompositionElementDefinition> map = new HashMap<>(); - for (var element : automationComposition.getElements().values()) { - map.put(element.getDefinition(), new AutomationCompositionElementDefinition()); - } - when(cacheProvider.getAcElementsDefinitions()) - .thenReturn(Map.of(automationComposition.getCompositionId(), map)); - var automationCompositionStateChange = CommonTestData.getStateChange(CommonTestData.getParticipantId(), - automationComposition.getInstanceId(), DeployOrder.NONE, LockOrder.UNLOCK); - ach.handleAutomationCompositionStateChange(automationCompositionStateChange); - verify(listener, times(automationComposition.getElements().size())).unlock(any(), any(), any()); - for (var element : automationComposition.getElements().values()) { - assertEquals(LockState.UNLOCKING, element.getLockState()); - } - } - - @Test void handleAutomationCompositionStateChangeDeleteTest() { var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next(); var cacheProvider = mock(CacheProvider.class); @@ -257,74 +196,6 @@ class AutomationCompositionHandlerTest { } @Test - void handleComposiotPrimeTest() { - var acElementDefinition = new AutomationCompositionElementDefinition(); - acElementDefinition.setAcElementDefinitionId(new ToscaConceptIdentifier("key", "1.0.0")); - var toscaNodeTemplate = new ToscaNodeTemplate(); - toscaNodeTemplate.setProperties(Map.of()); - acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(toscaNodeTemplate); - var list = List.of(acElementDefinition); - var compositionId = UUID.randomUUID(); - var messageId = UUID.randomUUID(); - var listener = mock(ThreadHandler.class); - var ach = new AutomationCompositionHandler(mock(CacheProvider.class), mock(ParticipantMessagePublisher.class), - listener); - ach.prime(messageId, compositionId, list); - verify(listener).prime(any(UUID.class), any(CompositionDto.class)); - } - - @Test - void handleCompositionDeprimeTest() { - var acElementDefinition = new AutomationCompositionElementDefinition(); - acElementDefinition.setAcElementDefinitionId(new ToscaConceptIdentifier("key", "1.0.0")); - var toscaNodeTemplate = new ToscaNodeTemplate(); - toscaNodeTemplate.setProperties(Map.of()); - acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(toscaNodeTemplate); - var compositionId = UUID.randomUUID(); - var listener = mock(ThreadHandler.class); - var cacheProvider = mock(CacheProvider.class); - var ach = new AutomationCompositionHandler(cacheProvider, mock(ParticipantMessagePublisher.class), - listener); - when(cacheProvider.getAcElementsDefinitions()) - .thenReturn(Map.of(compositionId, Map.of(new ToscaConceptIdentifier(), acElementDefinition))); - var messageId = UUID.randomUUID(); - ach.deprime(messageId, compositionId); - verify(listener).deprime(any(UUID.class), any(CompositionDto.class)); - } - - @Test - void handleCompositionAlreadyDeprimedTest() { - var messageId = UUID.randomUUID(); - var compositionId = UUID.randomUUID(); - var participantMessagePublisher = mock(ParticipantMessagePublisher.class); - var ach = new AutomationCompositionHandler(mock(CacheProvider.class), participantMessagePublisher, - mock(ThreadHandler.class)); - ach.deprime(messageId, compositionId); - verify(participantMessagePublisher).sendParticipantPrimeAck(any(ParticipantPrimeAck.class)); - } - - @Test - void restartedTest() { - var acElementDefinition = new AutomationCompositionElementDefinition(); - acElementDefinition.setAcElementDefinitionId(new ToscaConceptIdentifier("key", "1.0.0")); - var toscaNodeTemplate = new ToscaNodeTemplate(); - toscaNodeTemplate.setProperties(Map.of()); - acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(toscaNodeTemplate); - var list = List.of(acElementDefinition); - var state = AcTypeState.PRIMED; - var participantRestartAc = CommonTestData.createParticipantRestartAc(); - var automationCompositionList = List.of(participantRestartAc); - var listener = mock(ThreadHandler.class); - var cacheProvider = mock(CacheProvider.class); - var ach = new AutomationCompositionHandler(cacheProvider, mock(ParticipantMessagePublisher.class), listener); - var compositionId = UUID.randomUUID(); - var messageId = UUID.randomUUID(); - ach.restarted(messageId, compositionId, list, state, automationCompositionList); - verify(cacheProvider).initializeAutomationComposition(compositionId, participantRestartAc); - verify(listener).restarted(any(), any(), any(), any()); - } - - @Test void handleAutomationCompositionMigrationTest() { var listener = mock(ThreadHandler.class); var cacheProvider = mock(CacheProvider.class); diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProviderTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProviderTest.java index d5fe5785b..9451f0138 100644 --- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProviderTest.java +++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProviderTest.java @@ -96,6 +96,10 @@ class CacheProviderTest { var commonProperties = cacheProvider.getCommonProperties(automationComposition.getInstanceId(), element.getId()); assertEquals("value", commonProperties.get("key")); + + commonProperties = cacheProvider + .getCommonProperties(automationComposition.getCompositionId(), element.getDefinition()); + assertEquals("value", commonProperties.get("key")); } assertEquals(automationComposition.getInstanceId(), @@ -165,4 +169,21 @@ class CacheProviderTest { assertEquals(element.getOutProperties(), acElementRestart.getOutProperties()); } } + + @Test + void testCreateCompositionElementDto() { + var parameter = CommonTestData.getParticipantParameters(); + var cacheProvider = new CacheProvider(parameter); + var compositionId = UUID.randomUUID(); + var automationComposition = + CommonTestData.getTestAutomationCompositions().getAutomationCompositionList().get(0); + automationComposition.setCompositionId(compositionId); + cacheProvider.addElementDefinition(compositionId, + CommonTestData.createAutomationCompositionElementDefinitionList(automationComposition)); + for (var element : automationComposition.getElements().values()) { + var result = cacheProvider.createCompositionElementDto(compositionId, element, Map.of()); + assertEquals(compositionId, result.compositionId()); + assertEquals(element.getDefinition(), result.elementDefinitionId()); + } + } } diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandlerTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandlerTest.java index 4b58ae177..8aac93138 100644 --- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandlerTest.java +++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandlerTest.java @@ -34,8 +34,6 @@ import org.junit.jupiter.api.Test; import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantMessagePublisher; import org.onap.policy.clamp.acm.participant.intermediary.main.parameters.CommonTestData; import org.onap.policy.clamp.models.acm.concepts.AcTypeState; -import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition; -import org.onap.policy.clamp.models.acm.concepts.ParticipantDefinition; import org.onap.policy.clamp.models.acm.concepts.ParticipantSupportedElementType; import org.onap.policy.clamp.models.acm.messages.kafka.participant.AutomationCompositionDeploy; import org.onap.policy.clamp.models.acm.messages.kafka.participant.AutomationCompositionMigration; @@ -52,6 +50,8 @@ import org.onap.policy.clamp.models.acm.messages.kafka.participant.ParticipantRe import org.onap.policy.clamp.models.acm.messages.kafka.participant.ParticipantStatus; import org.onap.policy.clamp.models.acm.messages.kafka.participant.ParticipantStatusReq; import org.onap.policy.clamp.models.acm.messages.kafka.participant.PropertiesUpdate; +import org.onap.policy.clamp.models.acm.messages.rest.instantiation.DeployOrder; +import org.onap.policy.clamp.models.acm.messages.rest.instantiation.LockOrder; class ParticipantHandlerTest { @@ -59,8 +59,8 @@ class ParticipantHandlerTest { void handleParticipantStatusReqTest() { var publisher = mock(ParticipantMessagePublisher.class); var cacheProvider = mock(CacheProvider.class); - var participantHandler = - new ParticipantHandler(mock(AutomationCompositionHandler.class), publisher, cacheProvider); + var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class), + mock(AcLockHandler.class), mock(AcDefinitionHandler.class), publisher, cacheProvider); participantHandler.handleParticipantStatusReq(new ParticipantStatusReq()); verify(publisher).sendParticipantStatus(any(ParticipantStatus.class)); } @@ -68,8 +68,8 @@ class ParticipantHandlerTest { @Test void handleAutomationCompositionDeployTest() { var acHandler = mock(AutomationCompositionHandler.class); - var participantHandler = - new ParticipantHandler(acHandler, mock(ParticipantMessagePublisher.class), mock(CacheProvider.class)); + var participantHandler = new ParticipantHandler(acHandler, mock(AcLockHandler.class), + mock(AcDefinitionHandler.class), mock(ParticipantMessagePublisher.class), mock(CacheProvider.class)); var automationCompositionDeploy = new AutomationCompositionDeploy(); participantHandler.handleAutomationCompositionDeploy(automationCompositionDeploy); verify(acHandler).handleAutomationCompositionDeploy(automationCompositionDeploy); @@ -78,18 +78,27 @@ class ParticipantHandlerTest { @Test void handleAutomationCompositionStateChangeTest() { var acHandler = mock(AutomationCompositionHandler.class); - var participantHandler = - new ParticipantHandler(acHandler, mock(ParticipantMessagePublisher.class), mock(CacheProvider.class)); + var acLockHandler = mock(AcLockHandler.class); + var participantHandler = new ParticipantHandler(acHandler, acLockHandler, mock(AcDefinitionHandler.class), + mock(ParticipantMessagePublisher.class), mock(CacheProvider.class)); var acStateChange = new AutomationCompositionStateChange(); + + acStateChange.setDeployOrderedState(DeployOrder.DEPLOY); + acStateChange.setLockOrderedState(LockOrder.NONE); participantHandler.handleAutomationCompositionStateChange(acStateChange); verify(acHandler).handleAutomationCompositionStateChange(acStateChange); + + acStateChange.setDeployOrderedState(DeployOrder.NONE); + acStateChange.setLockOrderedState(LockOrder.LOCK); + participantHandler.handleAutomationCompositionStateChange(acStateChange); + verify(acLockHandler).handleAutomationCompositionStateChange(acStateChange); } @Test void handleAutomationCompositionMigrationTest() { var acHandler = mock(AutomationCompositionHandler.class); - var participantHandler = - new ParticipantHandler(acHandler, mock(ParticipantMessagePublisher.class), mock(CacheProvider.class)); + var participantHandler = new ParticipantHandler(acHandler, mock(AcLockHandler.class), + mock(AcDefinitionHandler.class), mock(ParticipantMessagePublisher.class), mock(CacheProvider.class)); var migrationMsg = new AutomationCompositionMigration(); participantHandler.handleAutomationCompositionMigration(migrationMsg); verify(acHandler).handleAutomationCompositionMigration(migrationMsg); @@ -98,8 +107,8 @@ class ParticipantHandlerTest { @Test void handleAcPropertyUpdateTest() { var acHandler = mock(AutomationCompositionHandler.class); - var participantHandler = - new ParticipantHandler(acHandler, mock(ParticipantMessagePublisher.class), mock(CacheProvider.class)); + var participantHandler = new ParticipantHandler(acHandler, mock(AcLockHandler.class), + mock(AcDefinitionHandler.class), mock(ParticipantMessagePublisher.class), mock(CacheProvider.class)); var propertyUpdateMsg = new PropertiesUpdate(); participantHandler.handleAcPropertyUpdate(propertyUpdateMsg); verify(acHandler).handleAcPropertyUpdate(propertyUpdateMsg); @@ -110,7 +119,8 @@ class ParticipantHandlerTest { var cacheProvider = mock(CacheProvider.class); when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId()); var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class), - mock(ParticipantMessagePublisher.class), cacheProvider); + mock(AcLockHandler.class), mock(AcDefinitionHandler.class), mock(ParticipantMessagePublisher.class), + cacheProvider); var participantAckMsg = new ParticipantAckMessage(ParticipantMessageType.AUTOMATION_COMPOSITION_DEPLOY); assertTrue(participantHandler.appliesTo(participantAckMsg)); @@ -128,8 +138,8 @@ class ParticipantHandlerTest { var cacheProvider = mock(CacheProvider.class); when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId()); when(cacheProvider.getSupportedAcElementTypes()).thenReturn(List.of(new ParticipantSupportedElementType())); - var participantHandler = - new ParticipantHandler(mock(AutomationCompositionHandler.class), publisher, cacheProvider); + var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class), + mock(AcLockHandler.class), mock(AcDefinitionHandler.class), publisher, cacheProvider); participantHandler.sendParticipantRegister(); verify(publisher).sendParticipantRegister(any(ParticipantRegister.class)); @@ -140,8 +150,8 @@ class ParticipantHandlerTest { var publisher = mock(ParticipantMessagePublisher.class); var cacheProvider = mock(CacheProvider.class); when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId()); - var participantHandler = - new ParticipantHandler(mock(AutomationCompositionHandler.class), publisher, cacheProvider); + var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class), + mock(AcLockHandler.class), mock(AcDefinitionHandler.class), publisher, cacheProvider); participantHandler.handleParticipantRegisterAck(new ParticipantRegisterAck()); verify(publisher).sendParticipantStatus(any(ParticipantStatus.class)); @@ -152,8 +162,8 @@ class ParticipantHandlerTest { var publisher = mock(ParticipantMessagePublisher.class); var cacheProvider = mock(CacheProvider.class); when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId()); - var participantHandler = - new ParticipantHandler(mock(AutomationCompositionHandler.class), publisher, cacheProvider); + var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class), + mock(AcLockHandler.class), mock(AcDefinitionHandler.class), publisher, cacheProvider); participantHandler.sendParticipantDeregister(); verify(publisher).sendParticipantDeregister(any(ParticipantDeregister.class)); @@ -162,28 +172,25 @@ class ParticipantHandlerTest { @Test void handleParticipantDeregisterAckTest() { var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class), - mock(ParticipantMessagePublisher.class), mock(CacheProvider.class)); + mock(AcLockHandler.class), mock(AcDefinitionHandler.class), mock(ParticipantMessagePublisher.class), + mock(CacheProvider.class)); var participantDeregisterAck = new ParticipantDeregisterAck(); assertDoesNotThrow(() -> participantHandler.handleParticipantDeregisterAck(participantDeregisterAck)); } @Test void handleParticipantPrimeTest() { - var cacheProvider = mock(CacheProvider.class); - when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId()); - var participantPrime = new ParticipantPrime(); participantPrime.setCompositionId(UUID.randomUUID()); participantPrime.setMessageId(UUID.randomUUID()); - participantPrime.setParticipantDefinitionUpdates(List.of(createParticipantDefinition())); - var publisher = mock(ParticipantMessagePublisher.class); - var acHandler = mock(AutomationCompositionHandler.class); - var participantHandler = new ParticipantHandler(acHandler, publisher, cacheProvider); + var acHandler = mock(AcDefinitionHandler.class); + var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class), + mock(AcLockHandler.class), acHandler, mock(ParticipantMessagePublisher.class), + mock(CacheProvider.class)); participantHandler.handleParticipantPrime(participantPrime); - verify(cacheProvider).addElementDefinition(any(), any()); - verify(acHandler).prime(any(), any(), any()); + verify(acHandler).handlePrime(participantPrime); } @Test @@ -191,32 +198,15 @@ class ParticipantHandlerTest { var participantRestartMsg = new ParticipantRestart(); participantRestartMsg.setState(AcTypeState.PRIMED); participantRestartMsg.setCompositionId(UUID.randomUUID()); - participantRestartMsg.getParticipantDefinitionUpdates().add(new ParticipantDefinition()); var cacheProvider = mock(CacheProvider.class); var publisher = mock(ParticipantMessagePublisher.class); - var acHandler = mock(AutomationCompositionHandler.class); - var participantHandler = new ParticipantHandler(acHandler, publisher, cacheProvider); + var acHandler = mock(AcDefinitionHandler.class); + var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class), + mock(AcLockHandler.class), acHandler, publisher, cacheProvider); participantHandler.handleParticipantRestart(participantRestartMsg); - verify(cacheProvider).addElementDefinition(any(), any()); - verify(acHandler).restarted(any(), any(), any(), any(), any()); - } - - @Test - void handleParticipantDeprimeTest() { - var cacheProvider = mock(CacheProvider.class); - when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId()); - var publisher = mock(ParticipantMessagePublisher.class); - var acHandler = mock(AutomationCompositionHandler.class); - var participantHandler = new ParticipantHandler(acHandler, publisher, cacheProvider); - var participantPrime = new ParticipantPrime(); - var compositionId = UUID.randomUUID(); - participantPrime.setCompositionId(compositionId); - var messageId = UUID.randomUUID(); - participantPrime.setMessageId(messageId); - participantHandler.handleParticipantPrime(participantPrime); - verify(acHandler).deprime(messageId, compositionId); + verify(acHandler).handleParticipantRestart(participantRestartMsg); } @Test @@ -226,16 +216,11 @@ class ParticipantHandlerTest { when(cacheProvider.getAutomationCompositions()).thenReturn(CommonTestData.getTestAutomationCompositionMap()); var publisher = mock(ParticipantMessagePublisher.class); when(publisher.isActive()).thenReturn(true); - var participantHandler = - new ParticipantHandler(mock(AutomationCompositionHandler.class), publisher, cacheProvider); + var acHandler = mock(AcDefinitionHandler.class); + var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class), + mock(AcLockHandler.class), acHandler, publisher, cacheProvider); participantHandler.sendHeartbeat(); verify(publisher).sendHeartbeat(any(ParticipantStatus.class)); } - private ParticipantDefinition createParticipantDefinition() { - var def = new ParticipantDefinition(); - def.setParticipantId(CommonTestData.getParticipantId()); - def.setAutomationCompositionElementDefinitionList(List.of(new AutomationCompositionElementDefinition())); - return def; - } } diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java index 168bfaf83..3011c91f5 100644 --- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java +++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java @@ -277,13 +277,24 @@ public class CommonTestData { createAutomationCompositionElementDefinitionList(AutomationComposition automationComposition) { List<AutomationCompositionElementDefinition> definitions = new ArrayList<>(); for (var element : automationComposition.getElements().values()) { - var acElementDefinition = new AutomationCompositionElementDefinition(); - acElementDefinition.setAcElementDefinitionId(element.getDefinition()); - var nodeTemplate = new ToscaNodeTemplate(); - nodeTemplate.setProperties(Map.of("key", "value")); - acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(nodeTemplate); - definitions.add(acElementDefinition); + definitions.add(createAutomationCompositionElementDefinition(element.getDefinition())); } return definitions; } + + /** + * create a new example of AutomationCompositionElementDefinition. + * + * @param definition the composition definition element id + * @return the AutomationCompositionElementDefinition + */ + public static AutomationCompositionElementDefinition createAutomationCompositionElementDefinition( + ToscaConceptIdentifier definition) { + var acElementDefinition = new AutomationCompositionElementDefinition(); + acElementDefinition.setAcElementDefinitionId(definition); + var nodeTemplate = new ToscaNodeTemplate(); + nodeTemplate.setProperties(Map.of("key", "value")); + acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(nodeTemplate); + return acElementDefinition; + } } |