Increase code coverage in runtime-acm 73/131273/1
authorFrancescoFioraEst <francesco.fiora@est.tech>
Wed, 28 Sep 2022 12:24:50 +0000 (13:24 +0100)
committerFrancesco Fiora <francesco.fiora@est.tech>
Wed, 28 Sep 2022 12:27:50 +0000 (12:27 +0000)
Issue-ID: POLICY-4370
Change-Id: If017da7bfe555dcbc9c7be62628751dbf9707623
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionAspectTest.java
runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionHandlerTest.java
runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionScannerTest.java

index 487d411..84b7568 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2021 Nordix Foundation.
+ *  Copyright (C) 2021-2022 Nordix Foundation.
  *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
 package org.onap.policy.clamp.acm.runtime.supervision;
 
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 
+import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.junit.jupiter.api.Test;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantRegister;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantStatus;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantUpdateAck;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
 
 class SupervisionAspectTest {
 
+    private static final ToscaConceptIdentifier PARTICIPANT_ID =
+            new ToscaConceptIdentifier("org.onap.PM_Policy", "1.0.0");
+
+    private static final ToscaConceptIdentifier PARTICIPANT_TYPE =
+            new ToscaConceptIdentifier("org.onap.policy.clamp.acm.PolicyParticipant", "1.0.0");
+
     @Test
     void testSchedule() throws Exception {
-        var supervisionScanner = spy(mock(SupervisionScanner.class));
+        var supervisionScanner = mock(SupervisionScanner.class);
         try (var supervisionAspect = new SupervisionAspect(supervisionScanner)) {
             supervisionAspect.schedule();
             verify(supervisionScanner, timeout(500)).run(true);
@@ -43,7 +51,7 @@ class SupervisionAspectTest {
 
     @Test
     void testDoCheck() throws Exception {
-        var supervisionScanner = spy(mock(SupervisionScanner.class));
+        var supervisionScanner = mock(SupervisionScanner.class);
         try (var supervisionAspect = new SupervisionAspect(supervisionScanner)) {
             supervisionAspect.doCheck();
             supervisionAspect.doCheck();
@@ -53,14 +61,41 @@ class SupervisionAspectTest {
 
     @Test
     void testHandleParticipantStatus() throws Exception {
-        var supervisionScanner = spy(mock(SupervisionScanner.class));
         var participantStatusMessage = new ParticipantStatus();
-        var identifier = new ToscaConceptIdentifier("abc", "1.0.0");
-        participantStatusMessage.setParticipantId(identifier);
+        participantStatusMessage.setParticipantId(PARTICIPANT_ID);
 
+        var supervisionScanner = mock(SupervisionScanner.class);
         try (var supervisionAspect = new SupervisionAspect(supervisionScanner)) {
             supervisionAspect.handleParticipantStatus(participantStatusMessage);
-            verify(supervisionScanner, timeout(500)).handleParticipantStatus(identifier);
+            verify(supervisionScanner, timeout(500)).handleParticipantStatus(PARTICIPANT_ID);
+        }
+    }
+
+    @Test
+    void testHandleParticipantUpdateAck() throws Exception {
+        var updateAckMessage = new ParticipantUpdateAck();
+        updateAckMessage.setParticipantId(PARTICIPANT_ID);
+        updateAckMessage.setParticipantType(PARTICIPANT_TYPE);
+
+        var supervisionScanner = mock(SupervisionScanner.class);
+        try (var supervisionAspect = new SupervisionAspect(supervisionScanner)) {
+            supervisionAspect.handleParticipantUpdateAck(updateAckMessage);
+            verify(supervisionScanner, timeout(500))
+                    .handleParticipantUpdateAck(new ImmutablePair<>(PARTICIPANT_ID, PARTICIPANT_TYPE));
+        }
+    }
+
+    @Test
+    void testHandleParticipantRegister() throws Exception {
+        var participantRegister = new ParticipantRegister();
+        participantRegister.setParticipantId(PARTICIPANT_ID);
+        participantRegister.setParticipantType(PARTICIPANT_TYPE);
+
+        var supervisionScanner = mock(SupervisionScanner.class);
+        try (var supervisionAspect = new SupervisionAspect(supervisionScanner)) {
+            supervisionAspect.handleParticipantRegister(participantRegister, true);
+            verify(supervisionScanner, timeout(500))
+                    .handleParticipantRegister(new ImmutablePair<>(PARTICIPANT_ID, PARTICIPANT_TYPE));
         }
     }
 }
index eb7bafa..a80d39e 100644 (file)
@@ -23,10 +23,11 @@ package org.onap.policy.clamp.acm.runtime.supervision;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyList;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-import static org.onap.policy.clamp.acm.runtime.util.CommonTestData.TOSCA_ST_TEMPLATE_YAML;
+import static org.onap.policy.clamp.acm.runtime.util.CommonTestData.TOSCA_SERVICE_TEMPLATE_YAML;
 
 import java.util.List;
 import java.util.Map;
@@ -45,6 +46,7 @@ import org.onap.policy.clamp.acm.runtime.supervision.comm.ParticipantUpdatePubli
 import org.onap.policy.clamp.common.acm.exception.AutomationCompositionException;
 import org.onap.policy.clamp.models.acm.concepts.AutomationComposition;
 import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionOrderedState;
+import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionState;
 import org.onap.policy.clamp.models.acm.concepts.Participant;
 import org.onap.policy.clamp.models.acm.concepts.ParticipantHealthStatus;
 import org.onap.policy.clamp.models.acm.concepts.ParticipantState;
@@ -72,11 +74,8 @@ class SupervisionHandlerTest {
 
     @Test
     void testTriggerAutomationCompositionSupervisionEmpty() throws PfModelException, CoderException {
-        var handler =
-            createSupervisionHandler(mock(AutomationCompositionProvider.class), mock(ParticipantProvider.class),
-                mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
-                mock(ParticipantDeregisterAckPublisher.class), mock(AutomationCompositionUpdatePublisher.class),
-                mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE);
+        var handler = createSupervisionHandler(AutomationCompositionOrderedState.PASSIVE,
+                AutomationCompositionState.UNINITIALISED);
 
         assertThatThrownBy(() -> handler.triggerAutomationCompositionSupervision(List.of()))
             .hasMessageMatching("The list of automation compositions for supervision is empty");
@@ -90,7 +89,8 @@ class SupervisionHandlerTest {
         var handler = createSupervisionHandler(automationCompositionProvider, mock(ParticipantProvider.class),
             mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
             mock(ParticipantDeregisterAckPublisher.class), automationCompositionUpdatePublisher,
-            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE);
+            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE,
+            AutomationCompositionState.UNINITIALISED);
 
         handler.triggerAutomationCompositionSupervision(List.of(identifier));
 
@@ -99,26 +99,68 @@ class SupervisionHandlerTest {
     }
 
     @Test
-    void testTriggerAutomationCompositionUninitialised() throws PfModelException, CoderException {
-        var automationCompositionProvider = mock(AutomationCompositionProvider.class);
-        var automationCompositionUpdatePublisher = mock(AutomationCompositionUpdatePublisher.class);
-        var handler = createSupervisionHandler(automationCompositionProvider, mock(ParticipantProvider.class),
-            mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
-            mock(ParticipantDeregisterAckPublisher.class), automationCompositionUpdatePublisher,
-            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.UNINITIALISED);
+    void testAcUninitialisedToUninitialised() throws PfModelException, CoderException {
+        var handler = createSupervisionHandler(AutomationCompositionOrderedState.UNINITIALISED,
+                AutomationCompositionState.UNINITIALISED);
 
         assertThatThrownBy(() -> handler.triggerAutomationCompositionSupervision(List.of(identifier)))
             .hasMessageMatching("Automation composition is already in state UNINITIALISED");
     }
 
     @Test
-    void testTriggerAutomationCompositionRunning() throws PfModelException, CoderException {
+    void testAcUninitialisedToPassive() throws PfModelException, CoderException, AutomationCompositionException {
+
+        var automationCompositionsCreate =
+            InstantiationUtils.getAutomationCompositionsFromResource(AC_INSTANTIATION_CREATE_JSON, "Crud");
+
+        var automationComposition = automationCompositionsCreate.getAutomationCompositionList().get(0);
+        automationComposition.setOrderedState(AutomationCompositionOrderedState.UNINITIALISED);
+        automationComposition.setState(AutomationCompositionState.PASSIVE);
+
         var automationCompositionProvider = mock(AutomationCompositionProvider.class);
-        var automationCompositionUpdatePublisher = mock(AutomationCompositionUpdatePublisher.class);
-        var handler = createSupervisionHandler(automationCompositionProvider, mock(ParticipantProvider.class),
-            mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
-            mock(ParticipantDeregisterAckPublisher.class), automationCompositionUpdatePublisher,
-            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.RUNNING);
+        when(automationCompositionProvider.findAutomationComposition(identifier))
+            .thenReturn(Optional.of(automationComposition));
+        when(automationCompositionProvider.getAutomationComposition(identifier)).thenReturn(automationComposition);
+
+        var serviceTemplateProvider = Mockito.mock(ServiceTemplateProvider.class);
+        when(serviceTemplateProvider.getAllServiceTemplates())
+            .thenReturn(List.of(Objects.requireNonNull(InstantiationUtils.getToscaServiceTemplate(
+                    TOSCA_SERVICE_TEMPLATE_YAML))));
+
+        var automationCompositionStateChangePublisher = mock(AutomationCompositionStateChangePublisher.class);
+
+        var handler = new SupervisionHandler(automationCompositionProvider, mock(ParticipantProvider.class),
+            mock(MonitoringProvider.class), serviceTemplateProvider, mock(AutomationCompositionUpdatePublisher.class),
+            automationCompositionStateChangePublisher, mock(ParticipantRegisterAckPublisher.class),
+            mock(ParticipantDeregisterAckPublisher.class), mock(ParticipantUpdatePublisher.class));
+
+        handler.triggerAutomationCompositionSupervision(List.of(identifier));
+
+        verify(automationCompositionStateChangePublisher).send(any(AutomationComposition.class), eq(0));
+    }
+
+    @Test
+    void testAcPassiveToPassive() throws PfModelException, CoderException {
+        var handler = createSupervisionHandler(AutomationCompositionOrderedState.PASSIVE,
+            AutomationCompositionState.PASSIVE);
+
+        assertThatThrownBy(() -> handler.triggerAutomationCompositionSupervision(List.of(identifier)))
+            .hasMessageMatching("Automation composition is already in state PASSIVE");
+    }
+
+    @Test
+    void testAcRunningToRunning() throws PfModelException, CoderException {
+        var handler = createSupervisionHandler(AutomationCompositionOrderedState.RUNNING,
+            AutomationCompositionState.RUNNING);
+
+        assertThatThrownBy(() -> handler.triggerAutomationCompositionSupervision(List.of(identifier)))
+            .hasMessageMatching("Automation composition is already in state RUNNING");
+    }
+
+    @Test
+    void testAcRunningToUninitialised() throws PfModelException, CoderException {
+        var handler = createSupervisionHandler(AutomationCompositionOrderedState.RUNNING,
+            AutomationCompositionState.UNINITIALISED);
 
         assertThatThrownBy(() -> handler.triggerAutomationCompositionSupervision(List.of(identifier)))
             .hasMessageMatching("Automation composition can't transition from state UNINITIALISED to state RUNNING");
@@ -130,7 +172,8 @@ class SupervisionHandlerTest {
         var handler = createSupervisionHandler(automationCompositionProvider, mock(ParticipantProvider.class),
             mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
             mock(ParticipantDeregisterAckPublisher.class), mock(AutomationCompositionUpdatePublisher.class),
-            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE);
+            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE,
+            AutomationCompositionState.UNINITIALISED);
         var automationCompositionAckMessage =
             new AutomationCompositionAck(ParticipantMessageType.AUTOMATION_COMPOSITION_STATECHANGE_ACK);
         automationCompositionAckMessage.setAutomationCompositionResultMap(Map.of());
@@ -153,7 +196,8 @@ class SupervisionHandlerTest {
         var handler = createSupervisionHandler(automationCompositionProvider, mock(ParticipantProvider.class),
             mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
             mock(ParticipantDeregisterAckPublisher.class), mock(AutomationCompositionUpdatePublisher.class),
-            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE);
+            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE,
+            AutomationCompositionState.UNINITIALISED);
 
         handler.handleAutomationCompositionUpdateAckMessage(automationCompositionAckMessage);
 
@@ -179,7 +223,8 @@ class SupervisionHandlerTest {
         var handler = createSupervisionHandler(mock(AutomationCompositionProvider.class), participantProvider,
             mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
             participantDeregisterAckPublisher, mock(AutomationCompositionUpdatePublisher.class),
-            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE);
+            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE,
+            AutomationCompositionState.UNINITIALISED);
 
         handler.handleParticipantMessage(participantDeregisterMessage);
 
@@ -203,7 +248,8 @@ class SupervisionHandlerTest {
         var handler = createSupervisionHandler(mock(AutomationCompositionProvider.class), participantProvider,
             mock(MonitoringProvider.class), participantRegisterAckPublisher,
             mock(ParticipantDeregisterAckPublisher.class), mock(AutomationCompositionUpdatePublisher.class),
-            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE);
+            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE,
+            AutomationCompositionState.UNINITIALISED);
 
         handler.handleParticipantMessage(participantRegisterMessage);
 
@@ -230,7 +276,8 @@ class SupervisionHandlerTest {
         var handler = createSupervisionHandler(mock(AutomationCompositionProvider.class), participantProvider,
             mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
             mock(ParticipantDeregisterAckPublisher.class), mock(AutomationCompositionUpdatePublisher.class),
-            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE);
+            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE,
+            AutomationCompositionState.UNINITIALISED);
 
         handler.handleParticipantMessage(participantUpdateAckMessage);
 
@@ -251,7 +298,8 @@ class SupervisionHandlerTest {
         var handler = createSupervisionHandler(mock(AutomationCompositionProvider.class), participantProvider,
             monitoringProvider, mock(ParticipantRegisterAckPublisher.class),
             mock(ParticipantDeregisterAckPublisher.class), mock(AutomationCompositionUpdatePublisher.class),
-            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE);
+            mock(ParticipantUpdatePublisher.class), AutomationCompositionOrderedState.PASSIVE,
+            AutomationCompositionState.UNINITIALISED);
         handler.handleParticipantMessage(participantStatusMessage);
 
         verify(participantProvider).saveParticipant(any());
@@ -265,7 +313,8 @@ class SupervisionHandlerTest {
             createSupervisionHandler(mock(AutomationCompositionProvider.class), mock(ParticipantProvider.class),
                 mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
                 mock(ParticipantDeregisterAckPublisher.class), mock(AutomationCompositionUpdatePublisher.class),
-                participantUpdatePublisher, AutomationCompositionOrderedState.PASSIVE);
+                participantUpdatePublisher, AutomationCompositionOrderedState.PASSIVE,
+                AutomationCompositionState.UNINITIALISED);
         handler.handleSendCommissionMessage(participantId.getName(), participantId.getVersion());
 
         verify(participantUpdatePublisher).sendComissioningBroadcast(participantId.getName(),
@@ -279,24 +328,34 @@ class SupervisionHandlerTest {
             createSupervisionHandler(mock(AutomationCompositionProvider.class), mock(ParticipantProvider.class),
                 mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
                 mock(ParticipantDeregisterAckPublisher.class), mock(AutomationCompositionUpdatePublisher.class),
-                participantUpdatePublisher, AutomationCompositionOrderedState.PASSIVE);
+                participantUpdatePublisher, AutomationCompositionOrderedState.PASSIVE,
+                AutomationCompositionState.UNINITIALISED);
         handler.handleSendDeCommissionMessage();
 
         verify(participantUpdatePublisher).sendDecomisioning();
     }
 
+    private SupervisionHandler createSupervisionHandler(AutomationCompositionOrderedState orderedState,
+            AutomationCompositionState state) throws PfModelException, CoderException {
+        return createSupervisionHandler(mock(AutomationCompositionProvider.class), mock(ParticipantProvider.class),
+                mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
+                mock(ParticipantDeregisterAckPublisher.class), mock(AutomationCompositionUpdatePublisher.class),
+                mock(ParticipantUpdatePublisher.class), orderedState, state);
+    }
+
     private SupervisionHandler createSupervisionHandler(AutomationCompositionProvider automationCompositionProvider,
-        ParticipantProvider participantProvider, MonitoringProvider monitoringProvider,
-        ParticipantRegisterAckPublisher participantRegisterAckPublisher,
-        ParticipantDeregisterAckPublisher participantDeregisterAckPublisher,
-        AutomationCompositionUpdatePublisher automationCompositionUpdatePublisher,
-        ParticipantUpdatePublisher participantUpdatePublisher, AutomationCompositionOrderedState orderedState)
-        throws PfModelException, CoderException {
+            ParticipantProvider participantProvider, MonitoringProvider monitoringProvider,
+            ParticipantRegisterAckPublisher participantRegisterAckPublisher,
+            ParticipantDeregisterAckPublisher participantDeregisterAckPublisher,
+            AutomationCompositionUpdatePublisher automationCompositionUpdatePublisher,
+            ParticipantUpdatePublisher participantUpdatePublisher, AutomationCompositionOrderedState orderedState,
+            AutomationCompositionState state) throws PfModelException, CoderException {
         var automationCompositionsCreate =
             InstantiationUtils.getAutomationCompositionsFromResource(AC_INSTANTIATION_CREATE_JSON, "Crud");
 
         var automationComposition = automationCompositionsCreate.getAutomationCompositionList().get(0);
         automationComposition.setOrderedState(orderedState);
+        automationComposition.setState(state);
 
         when(automationCompositionProvider.findAutomationComposition(identifier))
             .thenReturn(Optional.of(automationComposition));
@@ -305,7 +364,10 @@ class SupervisionHandlerTest {
         var serviceTemplateProvider = Mockito.mock(ServiceTemplateProvider.class);
         when(serviceTemplateProvider.getServiceTemplateList(any(), any()))
             .thenReturn(List.of(Objects.requireNonNull(InstantiationUtils.getToscaServiceTemplate(
-                TOSCA_ST_TEMPLATE_YAML))));
+                    TOSCA_SERVICE_TEMPLATE_YAML))));
+        when(serviceTemplateProvider.getAllServiceTemplates())
+            .thenReturn(List.of(Objects.requireNonNull(InstantiationUtils.getToscaServiceTemplate(
+                    TOSCA_SERVICE_TEMPLATE_YAML))));
 
         var automationCompositionStateChangePublisher = mock(AutomationCompositionStateChangePublisher.class);
 
index 68476f5..cc3a95e 100644 (file)
@@ -30,6 +30,7 @@ import static org.onap.policy.clamp.acm.runtime.util.CommonTestData.TOSCA_ST_TEM
 
 import java.util.List;
 import java.util.Objects;
+import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.onap.policy.clamp.acm.runtime.instantiation.InstantiationUtils;
@@ -58,6 +59,12 @@ class SupervisionScannerTest {
 
     private static final ServiceTemplateProvider serviceTemplateProvider = mock(ServiceTemplateProvider.class);
 
+    private static final String PARTICIPANT_NAME = "Participant0";
+    private static final String PARTICIPANT_VERSION = "1.0.0";
+
+    private static final ToscaConceptIdentifier PARTICIPANT_TYPE =
+            new ToscaConceptIdentifier("org.onap.policy.clamp.acm.PolicyParticipant", PARTICIPANT_VERSION);
+
     @BeforeAll
     public static void setUpBeforeAll() throws Exception {
         ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_ST_TEMPLATE_YAML);
@@ -119,8 +126,8 @@ class SupervisionScannerTest {
 
         var participantProvider = mock(ParticipantProvider.class);
         var participant = new Participant();
-        participant.setName("Participant0");
-        participant.setVersion("1.0.0");
+        participant.setName(PARTICIPANT_NAME);
+        participant.setVersion(PARTICIPANT_VERSION);
         when(participantProvider.getParticipants(null, null)).thenReturn(List.of(participant));
 
         var automationCompositionUpdatePublisher = mock(AutomationCompositionUpdatePublisher.class);
@@ -186,12 +193,12 @@ class SupervisionScannerTest {
         acRuntimeParameterGroup.getParticipantParameters().setMaxStatusWaitMs(-1);
 
         var participant = new Participant();
-        participant.setName("Participant0");
-        participant.setVersion("1.0.0");
+        participant.setName(PARTICIPANT_NAME);
+        participant.setVersion(PARTICIPANT_VERSION);
         participant.setHealthStatus(ParticipantHealthStatus.HEALTHY);
         participant.setParticipantState(ParticipantState.ACTIVE);
         participant.setDefinition(new ToscaConceptIdentifier("unknown", "0.0.0"));
-        participant.setParticipantType(new ToscaConceptIdentifier("ParticipantType1", "1.0.0"));
+        participant.setParticipantType(PARTICIPANT_TYPE);
         var participantProvider = mock(ParticipantProvider.class);
         when(participantProvider.getParticipants()).thenReturn(List.of(participant));
 
@@ -204,11 +211,15 @@ class SupervisionScannerTest {
             automationCompositionStateChangePublisher, automationCompositionUpdatePublisher, participantProvider,
             participantStatusReqPublisher, participantUpdatePublisher, acRuntimeParameterGroup);
 
+        supervisionScanner
+                .handleParticipantRegister(new ImmutablePair<>(participant.getKey().asIdentifier(), PARTICIPANT_TYPE));
         supervisionScanner.handleParticipantStatus(participant.getKey().asIdentifier());
         supervisionScanner.run(true);
         verify(participantStatusReqPublisher).send(any(ToscaConceptIdentifier.class));
         verify(participantProvider).saveParticipant(any());
 
+        supervisionScanner
+                .handleParticipantUpdateAck(new ImmutablePair<>(participant.getKey().asIdentifier(), PARTICIPANT_TYPE));
         supervisionScanner.run(true);
         verify(participantProvider, times(2)).saveParticipant(any());
     }