Add reason for rApp instance deploy/undeploy failure
[nonrtric/plt/rappmanager.git] / rapp-manager-acm / src / test / java / com / oransc / rappmanager / acm / service / AcmDeployerTest.java
index 928f4bc..b866b5a 100755 (executable)
@@ -33,14 +33,14 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.oransc.rappmanager.acm.configuration.ACMConfiguration;
-import com.oransc.rappmanager.models.rapp.Rapp;
+import com.oransc.rappmanager.models.cache.RappCacheService;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
+import com.oransc.rappmanager.models.rapp.Rapp;
 import com.oransc.rappmanager.models.rapp.RappEvent;
-import com.oransc.rappmanager.models.rappinstance.RappInstance;
 import com.oransc.rappmanager.models.rapp.RappResourceBuilder;
 import com.oransc.rappmanager.models.rapp.RappResources;
 import com.oransc.rappmanager.models.rapp.RappState;
-import com.oransc.rappmanager.models.cache.RappCacheService;
+import com.oransc.rappmanager.models.rappinstance.RappInstance;
 import com.oransc.rappmanager.models.statemachine.RappInstanceStateMachine;
 import com.oransc.rappmanager.models.statemachine.RappInstanceStateMachineConfig;
 import java.io.IOException;
@@ -71,7 +71,7 @@ import org.springframework.web.client.RestTemplate;
         RappInstanceStateMachine.class})
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 @AutoConfigureMockMvc
-public class AcmDeployerTest {
+class AcmDeployerTest {
 
     MockRestServiceServer mockServer;
     @SpyBean
@@ -170,18 +170,36 @@ public class AcmDeployerTest {
     }
 
     @Test
-    void testDeployRappInstanceFailure() throws Exception {
+    void testDeployRappInstanceFailureWithNoInstanceId() throws JsonProcessingException {
         UUID compositionId = UUID.randomUUID();
         UUID rappId = UUID.randomUUID();
-        UUID instanceId = UUID.randomUUID();
         Rapp rapp = Rapp.builder().name(rappId.toString()).packageName(validRappFile).compositionId(compositionId)
                             .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build();
+        RappInstance rappInstance = rappResourceBuilder.getRappInstance();
+        rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
         InstantiationResponse instantiationResponse = new InstantiationResponse();
-        instantiationResponse.setInstanceId(instanceId);
+        mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_ACM_INSTANCES, compositionId)))
+                .andExpect(method(HttpMethod.POST)).andRespond(
+                        withStatus(HttpStatus.ACCEPTED).contentType(MediaType.APPLICATION_JSON)
+                                .body(objectMapper.writeValueAsString(instantiationResponse)));
+
+        boolean rappDeployStateActual = acmDeployer.deployRappInstance(rapp, rappInstance);
+        mockServer.verify();
+        assertFalse(rappDeployStateActual);
+    }
+
+    @Test
+    void testDeployRappInstanceFailure() {
+        UUID compositionId = UUID.randomUUID();
+        UUID rappId = UUID.randomUUID();
+        Rapp rapp = Rapp.builder().name(rappId.toString()).packageName(validRappFile).compositionId(compositionId)
+                            .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build();
+        RappInstance rappInstance = rappResourceBuilder.getRappInstance();
+        rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
         mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_ACM_INSTANCES, compositionId)))
                 .andExpect(method(HttpMethod.POST)).andRespond(withStatus(HttpStatus.BAD_GATEWAY));
 
-        boolean rappDeployStateActual = acmDeployer.deployRappInstance(rapp, rappResourceBuilder.getRappInstance());
+        boolean rappDeployStateActual = acmDeployer.deployRappInstance(rapp, rappInstance);
         mockServer.verify();
         assertFalse(rappDeployStateActual);
     }
@@ -287,8 +305,6 @@ public class AcmDeployerTest {
         boolean primeRapp = acmDeployer.primeRapp(rapp);
         mockServer.verify();
         assertTrue(primeRapp);
-        assertEquals(RappState.PRIMED, rapp.getState());
-
     }
 
     @Test
@@ -312,6 +328,23 @@ public class AcmDeployerTest {
         assertEquals(RappState.COMMISSIONED, rapp.getState());
     }
 
+    @Test
+    void testPrimeRappFailureWithoutCompositionId() throws JsonProcessingException {
+        UUID compositionId = UUID.randomUUID();
+        RappResources rappResources = rappResourceBuilder.getResources();
+        Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
+                            .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED)
+                            .compositionId(compositionId).rappResources(rappResources).build();
+
+        CommissioningResponse commissioningResponseExpected = new CommissioningResponse();
+        mockServer.expect(ExpectedCount.once(), requestTo(URI_ACM_COMPOSITIONS)).andExpect(method(HttpMethod.POST))
+                .andRespond(withStatus(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
+                                    .body(objectMapper.writeValueAsString(commissioningResponseExpected)));
+        boolean primeRapp = acmDeployer.primeRapp(rapp);
+        mockServer.verify();
+        assertFalse(primeRapp);
+    }
+
     @Test
     void testDeprimeRapp() throws JsonProcessingException {
         UUID compositionId = UUID.randomUUID();
@@ -352,6 +385,14 @@ public class AcmDeployerTest {
         assertFalse(deprimeRapp);
     }
 
+    @Test
+    void testDeprimeExceptionRapp() {
+        Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
+                            .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build();
+        boolean deprimeRapp = acmDeployer.deprimeRapp(rapp);
+        assertFalse(deprimeRapp);
+    }
+
     @Test
     void testDeleteComposition() throws JsonProcessingException {
         UUID compositionId = UUID.randomUUID();