2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.clamp.acm.runtime.supervision;
23 import static org.mockito.ArgumentMatchers.any;
24 import static org.mockito.ArgumentMatchers.anyBoolean;
25 import static org.mockito.ArgumentMatchers.anyInt;
26 import static org.mockito.Mockito.mock;
27 import static org.mockito.Mockito.timeout;
28 import static org.mockito.Mockito.times;
29 import static org.mockito.Mockito.verify;
30 import static org.mockito.Mockito.when;
31 import static org.onap.policy.clamp.acm.runtime.util.CommonTestData.TOSCA_SERVICE_TEMPLATE_YAML;
34 import java.util.Optional;
35 import java.util.UUID;
36 import org.junit.jupiter.api.Test;
37 import org.onap.policy.clamp.acm.runtime.instantiation.InstantiationUtils;
38 import org.onap.policy.clamp.acm.runtime.main.utils.EncryptionUtils;
39 import org.onap.policy.clamp.acm.runtime.supervision.comm.AcElementPropertiesPublisher;
40 import org.onap.policy.clamp.acm.runtime.supervision.comm.AcPreparePublisher;
41 import org.onap.policy.clamp.acm.runtime.supervision.comm.AutomationCompositionDeployPublisher;
42 import org.onap.policy.clamp.acm.runtime.supervision.comm.AutomationCompositionMigrationPublisher;
43 import org.onap.policy.clamp.acm.runtime.supervision.comm.AutomationCompositionStateChangePublisher;
44 import org.onap.policy.clamp.acm.runtime.util.CommonTestData;
45 import org.onap.policy.clamp.models.acm.concepts.AcElementDeployAck;
46 import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
47 import org.onap.policy.clamp.models.acm.concepts.AutomationComposition;
48 import org.onap.policy.clamp.models.acm.concepts.DeployState;
49 import org.onap.policy.clamp.models.acm.concepts.LockState;
50 import org.onap.policy.clamp.models.acm.concepts.StateChangeResult;
51 import org.onap.policy.clamp.models.acm.messages.kafka.participant.AutomationCompositionDeployAck;
52 import org.onap.policy.clamp.models.acm.messages.kafka.participant.ParticipantMessageType;
53 import org.onap.policy.clamp.models.acm.persistence.provider.AutomationCompositionProvider;
54 import org.onap.policy.clamp.models.acm.persistence.provider.MessageProvider;
56 class SupervisionAcHandlerTest {
57 private static final String AC_INSTANTIATION_CREATE_JSON = "src/test/resources/rest/acm/AutomationComposition.json";
58 private static final UUID IDENTIFIER = UUID.randomUUID();
61 void testAutomationCompositionDeployAckValidation() {
62 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
63 var messageProvider = mock(MessageProvider.class);
64 var handler = new SupervisionAcHandler(automationCompositionProvider,
65 mock(AutomationCompositionDeployPublisher.class), mock(AutomationCompositionStateChangePublisher.class),
66 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
67 mock(AcPreparePublisher.class), messageProvider, mock(EncryptionUtils.class));
69 var automationComposition =
70 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Crud");
71 automationComposition.setInstanceId(IDENTIFIER);
72 var automationCompositionAckMessage =
73 getAutomationCompositionDeployAck(ParticipantMessageType.AUTOMATION_COMPOSITION_STATECHANGE_ACK,
74 automationComposition, DeployState.DEPLOYED, LockState.UNLOCKED);
75 automationCompositionAckMessage.setStateChangeResult(null);
76 handler.handleAutomationCompositionStateChangeAckMessage(automationCompositionAckMessage);
78 automationCompositionAckMessage.setStateChangeResult(StateChangeResult.TIMEOUT);
79 handler.handleAutomationCompositionStateChangeAckMessage(automationCompositionAckMessage);
81 automationCompositionAckMessage.setStateChangeResult(StateChangeResult.NO_ERROR);
82 automationCompositionAckMessage.setAutomationCompositionId(null);
83 handler.handleAutomationCompositionStateChangeAckMessage(automationCompositionAckMessage);
85 automationCompositionAckMessage.setAutomationCompositionId(automationComposition.getInstanceId());
86 handler.handleAutomationCompositionStateChangeAckMessage(automationCompositionAckMessage);
88 automationCompositionAckMessage =
89 getAutomationCompositionDeployAck(ParticipantMessageType.AUTOMATION_COMPOSITION_STATECHANGE_ACK,
90 automationComposition, DeployState.DEPLOYING, LockState.UNLOCKED);
91 handler.handleAutomationCompositionStateChangeAckMessage(automationCompositionAckMessage);
93 verify(messageProvider, times(0)).save(any(AutomationCompositionDeployAck.class));
95 when(automationCompositionProvider.findAutomationComposition(IDENTIFIER))
96 .thenReturn(Optional.of(automationComposition));
97 automationCompositionAckMessage.setAutomationCompositionResultMap(null);
98 handler.handleAutomationCompositionStateChangeAckMessage(automationCompositionAckMessage);
99 verify(messageProvider, times(0)).save(any(AutomationCompositionDeployAck.class));
103 void testHandleAcMigrationWithStage() {
104 var automationComposition =
105 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Crud");
106 automationComposition.setInstanceId(IDENTIFIER);
107 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
108 when(automationCompositionProvider.findAutomationComposition(IDENTIFIER))
109 .thenReturn(Optional.of(automationComposition));
110 var messageProvider = mock(MessageProvider.class);
112 var handler = new SupervisionAcHandler(automationCompositionProvider,
113 mock(AutomationCompositionDeployPublisher.class), mock(AutomationCompositionStateChangePublisher.class),
114 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
115 mock(AcPreparePublisher.class), messageProvider, mock(EncryptionUtils.class));
117 var automationCompositionAckMessage =
118 getAutomationCompositionDeployAck(ParticipantMessageType.AUTOMATION_COMPOSITION_STATECHANGE_ACK,
119 automationComposition, DeployState.MIGRATING, LockState.LOCKED);
120 automationCompositionAckMessage.setStage(1);
121 handler.handleAutomationCompositionStateChangeAckMessage(automationCompositionAckMessage);
123 verify(messageProvider).save(any(AutomationCompositionDeployAck.class));
127 void testHandleAutomationCompositionStateChangeAckMessage() {
128 var automationComposition =
129 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Crud");
130 automationComposition.setInstanceId(IDENTIFIER);
131 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
132 when(automationCompositionProvider.findAutomationComposition(IDENTIFIER))
133 .thenReturn(Optional.of(automationComposition));
134 var messageProvider = mock(MessageProvider.class);
136 var handler = new SupervisionAcHandler(automationCompositionProvider,
137 mock(AutomationCompositionDeployPublisher.class), mock(AutomationCompositionStateChangePublisher.class),
138 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
139 mock(AcPreparePublisher.class), messageProvider, mock(EncryptionUtils.class));
141 var automationCompositionAckMessage =
142 getAutomationCompositionDeployAck(ParticipantMessageType.AUTOMATION_COMPOSITION_STATECHANGE_ACK,
143 automationComposition, DeployState.DEPLOYED, LockState.UNLOCKED);
144 handler.handleAutomationCompositionStateChangeAckMessage(automationCompositionAckMessage);
146 verify(messageProvider).save(any(AutomationCompositionDeployAck.class));
149 private AutomationCompositionDeployAck getAutomationCompositionDeployAck(ParticipantMessageType messageType,
150 AutomationComposition automationComposition, DeployState deployState, LockState lockState) {
151 var automationCompositionAckMessage = new AutomationCompositionDeployAck(messageType);
152 for (var elementEntry : automationComposition.getElements().entrySet()) {
153 var acElementDeployAck = new AcElementDeployAck(deployState, lockState, "", "", Map.of(), true, "");
154 automationCompositionAckMessage.getAutomationCompositionResultMap().put(elementEntry.getKey(),
157 automationCompositionAckMessage.setAutomationCompositionId(automationComposition.getInstanceId());
158 automationCompositionAckMessage.setParticipantId(CommonTestData.getParticipantId());
159 automationCompositionAckMessage.setStateChangeResult(StateChangeResult.NO_ERROR);
160 return automationCompositionAckMessage;
164 void testHandleAutomationCompositionUpdateAckMessage() {
165 var automationComposition =
166 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Crud");
167 automationComposition.setInstanceId(IDENTIFIER);
168 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
169 when(automationCompositionProvider.findAutomationComposition(IDENTIFIER))
170 .thenReturn(Optional.of(automationComposition));
171 var messageProvider = mock(MessageProvider.class);
173 var automationCompositionAckMessage =
174 getAutomationCompositionDeployAck(ParticipantMessageType.AUTOMATION_COMPOSITION_DEPLOY_ACK,
175 automationComposition, DeployState.DEPLOYED, LockState.LOCKED);
176 automationCompositionAckMessage.setParticipantId(CommonTestData.getParticipantId());
178 var handler = new SupervisionAcHandler(automationCompositionProvider,
179 mock(AutomationCompositionDeployPublisher.class), mock(AutomationCompositionStateChangePublisher.class),
180 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
181 mock(AcPreparePublisher.class), messageProvider, mock(EncryptionUtils.class));
183 handler.handleAutomationCompositionUpdateAckMessage(automationCompositionAckMessage);
185 verify(messageProvider).save(any(AutomationCompositionDeployAck.class));
189 void testHandleAcUpdateAckFailedMessage() {
190 var automationComposition =
191 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Crud");
192 automationComposition.setDeployState(DeployState.DEPLOYING);
193 automationComposition.setStateChangeResult(StateChangeResult.NO_ERROR);
194 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
195 when(automationCompositionProvider.findAutomationComposition(IDENTIFIER))
196 .thenReturn(Optional.of(automationComposition));
198 var automationCompositionAckMessage =
199 new AutomationCompositionDeployAck(ParticipantMessageType.AUTOMATION_COMPOSITION_DEPLOY_ACK);
200 automationCompositionAckMessage.setStateChangeResult(StateChangeResult.NO_ERROR);
201 for (var element : automationComposition.getElements().values()) {
202 element.setDeployState(DeployState.DEPLOYED);
204 var elementEntry = automationComposition.getElements().entrySet().iterator().next();
205 elementEntry.getValue().setDeployState(DeployState.DEPLOYING);
206 var acElementDeployAck =
207 new AcElementDeployAck(DeployState.UNDEPLOYED, LockState.NONE, "", "", Map.of(), true, "Error");
208 automationCompositionAckMessage
209 .setAutomationCompositionResultMap(Map.of(elementEntry.getKey(), acElementDeployAck));
211 automationCompositionAckMessage.setParticipantId(CommonTestData.getParticipantId());
212 automationCompositionAckMessage.setAutomationCompositionId(IDENTIFIER);
214 var automationCompositionStateChangePublisher = mock(AutomationCompositionStateChangePublisher.class);
215 var messageProvider = mock(MessageProvider.class);
217 var handler = new SupervisionAcHandler(automationCompositionProvider,
218 mock(AutomationCompositionDeployPublisher.class), automationCompositionStateChangePublisher,
219 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
220 mock(AcPreparePublisher.class), messageProvider, mock(EncryptionUtils.class));
222 handler.handleAutomationCompositionUpdateAckMessage(automationCompositionAckMessage);
224 verify(messageProvider).save(any(AutomationCompositionDeployAck.class));
228 void testDeployFailed() {
229 var automationCompositionDeployPublisher = mock(AutomationCompositionDeployPublisher.class);
230 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
231 var handler = new SupervisionAcHandler(automationCompositionProvider,
232 automationCompositionDeployPublisher, mock(AutomationCompositionStateChangePublisher.class),
233 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
234 mock(AcPreparePublisher.class), mock(MessageProvider.class), mock(EncryptionUtils.class));
236 var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
237 var acDefinition = CommonTestData.createAcDefinition(serviceTemplate, AcTypeState.PRIMED);
238 var automationComposition =
239 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Deploy");
240 automationComposition.setStateChangeResult(StateChangeResult.FAILED);
241 handler.deploy(automationComposition, acDefinition);
242 verify(automationCompositionProvider).updateAutomationComposition(automationComposition);
243 verify(automationCompositionDeployPublisher, timeout(1000)).send(automationComposition, 0, true);
247 void testUndeploy() {
248 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
249 var acStateChangePublisher = mock(AutomationCompositionStateChangePublisher.class);
250 var handler = new SupervisionAcHandler(automationCompositionProvider,
251 mock(AutomationCompositionDeployPublisher.class), acStateChangePublisher,
252 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
253 mock(AcPreparePublisher.class), mock(MessageProvider.class), mock(EncryptionUtils.class));
254 var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
255 var acDefinition = CommonTestData.createAcDefinition(serviceTemplate, AcTypeState.PRIMED);
256 var automationComposition =
257 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Undeploy");
258 handler.undeploy(automationComposition, acDefinition);
260 verify(automationCompositionProvider).updateAutomationComposition(any(AutomationComposition.class));
261 verify(acStateChangePublisher, timeout(1000)).send(any(AutomationComposition.class), anyInt(), anyBoolean());
265 void testUndeployFailed() {
266 var acStateChangePublisher = mock(AutomationCompositionStateChangePublisher.class);
267 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
268 var handler = new SupervisionAcHandler(automationCompositionProvider,
269 mock(AutomationCompositionDeployPublisher.class), acStateChangePublisher,
270 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
271 mock(AcPreparePublisher.class), mock(MessageProvider.class), mock(EncryptionUtils.class));
273 var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
274 var acDefinition = CommonTestData.createAcDefinition(serviceTemplate, AcTypeState.PRIMED);
275 var automationComposition =
276 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "UnDeploy");
277 automationComposition.setStateChangeResult(StateChangeResult.FAILED);
278 automationComposition.getElements().values()
279 .forEach(element -> element.setDeployState(DeployState.UNDEPLOYING));
280 handler.undeploy(automationComposition, acDefinition);
281 verify(automationCompositionProvider).updateAutomationComposition(automationComposition);
282 verify(acStateChangePublisher, timeout(1000)).send(any(AutomationComposition.class), anyInt(), anyBoolean());
287 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
288 var acStateChangePublisher = mock(AutomationCompositionStateChangePublisher.class);
289 var handler = new SupervisionAcHandler(automationCompositionProvider,
290 mock(AutomationCompositionDeployPublisher.class), acStateChangePublisher,
291 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
292 mock(AcPreparePublisher.class), mock(MessageProvider.class), mock(EncryptionUtils.class));
293 var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
294 var acDefinition = CommonTestData.createAcDefinition(serviceTemplate, AcTypeState.PRIMED);
295 var automationComposition =
296 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "UnLock");
297 handler.unlock(automationComposition, acDefinition);
299 verify(automationCompositionProvider).updateAutomationComposition(any(AutomationComposition.class));
300 verify(acStateChangePublisher, timeout(1000)).send(any(AutomationComposition.class), anyInt(), anyBoolean());
304 void testUnlockFailed() {
305 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
306 var acStateChangePublisher = mock(AutomationCompositionStateChangePublisher.class);
307 var handler = new SupervisionAcHandler(automationCompositionProvider,
308 mock(AutomationCompositionDeployPublisher.class), acStateChangePublisher,
309 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
310 mock(AcPreparePublisher.class), mock(MessageProvider.class), mock(EncryptionUtils.class));
311 var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
312 var acDefinition = CommonTestData.createAcDefinition(serviceTemplate, AcTypeState.PRIMED);
313 var automationComposition =
314 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "UnLock");
315 automationComposition.setStateChangeResult(StateChangeResult.FAILED);
316 automationComposition.getElements().values().forEach(element -> element.setLockState(LockState.UNLOCKING));
317 handler.unlock(automationComposition, acDefinition);
319 verify(automationCompositionProvider).updateAutomationComposition(any(AutomationComposition.class));
320 verify(acStateChangePublisher, timeout(1000)).send(any(AutomationComposition.class), anyInt(), anyBoolean());
325 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
326 var acStateChangePublisher = mock(AutomationCompositionStateChangePublisher.class);
327 var handler = new SupervisionAcHandler(automationCompositionProvider,
328 mock(AutomationCompositionDeployPublisher.class), acStateChangePublisher,
329 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
330 mock(AcPreparePublisher.class), mock(MessageProvider.class), mock(EncryptionUtils.class));
331 var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
332 var acDefinition = CommonTestData.createAcDefinition(serviceTemplate, AcTypeState.PRIMED);
333 var automationComposition =
334 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Lock");
335 handler.lock(automationComposition, acDefinition);
337 verify(automationCompositionProvider).updateAutomationComposition(any(AutomationComposition.class));
338 verify(acStateChangePublisher, timeout(1000)).send(any(AutomationComposition.class), anyInt(), anyBoolean());
342 void testLockFailed() {
343 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
344 var acStateChangePublisher = mock(AutomationCompositionStateChangePublisher.class);
345 var handler = new SupervisionAcHandler(automationCompositionProvider,
346 mock(AutomationCompositionDeployPublisher.class), acStateChangePublisher,
347 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
348 mock(AcPreparePublisher.class), mock(MessageProvider.class), mock(EncryptionUtils.class));
349 var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
350 var acDefinition = CommonTestData.createAcDefinition(serviceTemplate, AcTypeState.PRIMED);
351 var automationComposition =
352 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Lock");
353 automationComposition.setStateChangeResult(StateChangeResult.FAILED);
354 automationComposition.getElements().values().forEach(element -> element.setLockState(LockState.LOCKING));
355 handler.lock(automationComposition, acDefinition);
357 verify(automationCompositionProvider).updateAutomationComposition(any(AutomationComposition.class));
358 verify(acStateChangePublisher, timeout(1000)).send(any(AutomationComposition.class), anyInt(), anyBoolean());
362 void testDeleteAck() {
363 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
364 var automationComposition =
365 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Crud");
366 automationComposition.setDeployState(DeployState.DELETING);
367 when(automationCompositionProvider.findAutomationComposition(IDENTIFIER))
368 .thenReturn(Optional.of(automationComposition));
370 var automationCompositionAckMessage =
371 new AutomationCompositionDeployAck(ParticipantMessageType.AUTOMATION_COMPOSITION_DEPLOY_ACK);
372 automationCompositionAckMessage
373 .setParticipantId(automationComposition.getElements().values().iterator().next().getParticipantId());
374 automationCompositionAckMessage.setAutomationCompositionId(IDENTIFIER);
375 automationCompositionAckMessage.setStateChangeResult(StateChangeResult.NO_ERROR);
376 var messageProvider = mock(MessageProvider.class);
378 var handler = new SupervisionAcHandler(automationCompositionProvider,
379 mock(AutomationCompositionDeployPublisher.class), mock(AutomationCompositionStateChangePublisher.class),
380 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
381 mock(AcPreparePublisher.class), messageProvider, mock(EncryptionUtils.class));
383 handler.handleAutomationCompositionUpdateAckMessage(automationCompositionAckMessage);
385 verify(messageProvider).save(any(AutomationCompositionDeployAck.class));
390 var acElementPropertiesPublisher = mock(AcElementPropertiesPublisher.class);
391 var handler = new SupervisionAcHandler(mock(AutomationCompositionProvider.class),
392 mock(AutomationCompositionDeployPublisher.class),
393 mock(AutomationCompositionStateChangePublisher.class), acElementPropertiesPublisher,
394 mock(AutomationCompositionMigrationPublisher.class),
395 mock(AcPreparePublisher.class), mock(MessageProvider.class), mock(EncryptionUtils.class));
396 var automationComposition =
397 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Lock");
398 handler.update(automationComposition);
399 verify(acElementPropertiesPublisher, timeout(1000)).send(any(AutomationComposition.class));
404 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
405 var acCompositionMigrationPublisher = mock(AutomationCompositionMigrationPublisher.class);
406 var handler = new SupervisionAcHandler(automationCompositionProvider,
407 mock(AutomationCompositionDeployPublisher.class), mock(AutomationCompositionStateChangePublisher.class),
408 mock(AcElementPropertiesPublisher.class), acCompositionMigrationPublisher,
409 mock(AcPreparePublisher.class), mock(MessageProvider.class), mock(EncryptionUtils.class));
410 var automationComposition =
411 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Migrate");
412 assert automationComposition != null;
413 automationComposition.setPhase(0);
414 handler.migrate(automationComposition);
415 verify(acCompositionMigrationPublisher, timeout(1000)).send(any(AutomationComposition.class), anyInt());
419 void testMigratePrecheck() {
420 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
421 var acCompositionMigrationPublisher = mock(AutomationCompositionMigrationPublisher.class);
422 var handler = new SupervisionAcHandler(automationCompositionProvider,
423 mock(AutomationCompositionDeployPublisher.class), mock(AutomationCompositionStateChangePublisher.class),
424 mock(AcElementPropertiesPublisher.class), acCompositionMigrationPublisher,
425 mock(AcPreparePublisher.class), mock(MessageProvider.class), mock(EncryptionUtils.class));
426 var automationComposition =
427 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Migrate");
428 handler.migratePrecheck(automationComposition);
429 verify(acCompositionMigrationPublisher, timeout(1000)).send(any(AutomationComposition.class), anyInt());
434 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
435 var acPreparePublisher = mock(AcPreparePublisher.class);
436 var handler = new SupervisionAcHandler(automationCompositionProvider,
437 mock(AutomationCompositionDeployPublisher.class), mock(AutomationCompositionStateChangePublisher.class),
438 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
439 acPreparePublisher, mock(MessageProvider.class), mock(EncryptionUtils.class));
440 var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
441 var acDefinition = CommonTestData.createAcDefinition(serviceTemplate, AcTypeState.PRIMED);
442 var automationComposition =
443 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Migrate");
444 handler.prepare(automationComposition, acDefinition);
445 verify(acPreparePublisher, timeout(1000)).sendPrepare(any(AutomationComposition.class), anyInt());
450 var automationCompositionProvider = mock(AutomationCompositionProvider.class);
451 var acPreparePublisher = mock(AcPreparePublisher.class);
452 var handler = new SupervisionAcHandler(automationCompositionProvider,
453 mock(AutomationCompositionDeployPublisher.class), mock(AutomationCompositionStateChangePublisher.class),
454 mock(AcElementPropertiesPublisher.class), mock(AutomationCompositionMigrationPublisher.class),
455 acPreparePublisher, mock(MessageProvider.class), mock(EncryptionUtils.class));
456 var automationComposition =
457 InstantiationUtils.getAutomationCompositionFromResource(AC_INSTANTIATION_CREATE_JSON, "Migrate");
458 handler.review(automationComposition);
459 verify(acPreparePublisher, timeout(1000)).sendRevew(any(AutomationComposition.class));