X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=rapp-manager-sme%2Fsrc%2Ftest%2Fjava%2Fcom%2Foransc%2Frappmanager%2Fsme%2Fservice%2FSmeDeployerTest.java;h=b7bcab03aaf89771ea9fbfe955c1292d1fbf380e;hb=refs%2Fchanges%2F89%2F12589%2F3;hp=e1b37528eddde345ad22e900516196f33654e8fc;hpb=a58b2c0d0cfaff779ece990a4bd33d7d10ad576c;p=nonrtric%2Fplt%2Frappmanager.git diff --git a/rapp-manager-sme/src/test/java/com/oransc/rappmanager/sme/service/SmeDeployerTest.java b/rapp-manager-sme/src/test/java/com/oransc/rappmanager/sme/service/SmeDeployerTest.java index e1b3752..b7bcab0 100755 --- a/rapp-manager-sme/src/test/java/com/oransc/rappmanager/sme/service/SmeDeployerTest.java +++ b/rapp-manager-sme/src/test/java/com/oransc/rappmanager/sme/service/SmeDeployerTest.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START====================================================================== * Copyright (C) 2023 Nordix Foundation. All rights reserved. + * Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. * =============================================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +30,7 @@ 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.models.cache.RappCacheService; +import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration; import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler; import com.oransc.rappmanager.models.rapp.Rapp; import com.oransc.rappmanager.models.rapp.RappState; @@ -62,8 +64,8 @@ import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.web.client.RestTemplate; @SpringBootTest(classes = {SmeConfiguration.class, SmeDeployer.class, BeanTestConfiguration.class, - RappCsarConfigurationHandler.class, RappCacheService.class, RappInstanceStateMachineConfig.class, - RappInstanceStateMachine.class}) + RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class, RappCacheService.class, + RappInstanceStateMachineConfig.class, RappInstanceStateMachine.class}) @TestInstance(TestInstance.Lifecycle.PER_CLASS) @AutoConfigureMockMvc class SmeDeployerTest { @@ -158,7 +160,7 @@ class SmeDeployerTest { } @Test - void testCreateProviderDomainFailure() throws Exception { + void testCreateProviderDomainFailure() { UUID rappId = UUID.randomUUID(); Rapp rapp = Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation) @@ -201,7 +203,7 @@ class SmeDeployerTest { @Test - void testCreatePublishApiFailure() throws Exception { + void testCreatePublishApiFailure() { UUID rappId = UUID.randomUUID(); UUID apfId = UUID.randomUUID(); Rapp rapp = @@ -297,6 +299,66 @@ class SmeDeployerTest { assertTrue(deployRapp); } + @Test + void testDeployRappInstanceNoInvoker() throws Exception { + UUID rappId = UUID.randomUUID(); + APIProviderEnrolmentDetails apiProviderEnrolmentDetails = getProviderDomainApiEnrollmentDetails(); + APIProviderFunctionDetails apfProviderFunctionDetails = apiProviderEnrolmentDetails.getApiProvFuncs().stream() + .filter(apiProviderFunctionDetails -> apiProviderFunctionDetails.getApiProvFuncRole() + .equals(ApiProviderFuncRole.APF)) + .findFirst().get(); + Rapp rapp = + Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation) + .state(RappState.COMMISSIONED).build(); + mockServer.expect(ExpectedCount.once(), requestTo(URI_PROVIDER_REGISTRATIONS)) + .andExpect(method(HttpMethod.POST)).andRespond( + withStatus(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON) + .body(objectMapper.writeValueAsString(apiProviderEnrolmentDetails))); + ServiceAPIDescription serviceAPIDescription = getServiceApiDescription(); + mockServer.expect(ExpectedCount.once(), + requestTo(String.format(URI_PUBLISH_APIS, apfProviderFunctionDetails.getApiProvFuncId()))) + .andExpect(method(HttpMethod.POST)).andRespond( + withStatus(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON) + .body(objectMapper.writeValueAsString(serviceAPIDescription))); + RappInstance rappInstance = getRappInstance(); + rappInstance.getSme().setInvokers(null); + rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId()); + boolean deployRapp = smeDeployer.deployRappInstance(rapp, rappInstance); + mockServer.verify(); + assertTrue(deployRapp); + } + + @Test + void testDeployRappInstanceNoProvider() throws Exception { + UUID rappId = UUID.randomUUID(); + Rapp rapp = + Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation) + .state(RappState.COMMISSIONED).build(); + APIInvokerEnrolmentDetails apiInvokerEnrolmentDetails = getApiInvokerEnrollmentDetails(); + mockServer.expect(ExpectedCount.once(), requestTo(URI_INVOKERS)).andExpect(method(HttpMethod.POST)).andRespond( + withStatus(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON) + .body(objectMapper.writeValueAsString(apiInvokerEnrolmentDetails))); + RappInstance rappInstance = getRappInstance(); + rappInstance.getSme().setProviderFunction(null); + rappInstance.getSme().setServiceApis(null); + rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId()); + boolean deployRapp = smeDeployer.deployRappInstance(rapp, rappInstance); + mockServer.verify(); + assertTrue(deployRapp); + } + + @Test + void testDeployRappInstanceWithoutSme() { + UUID rappId = UUID.randomUUID(); + Rapp rapp = + Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation) + .state(RappState.PRIMED).build(); + RappInstance rappInstance = getRappInstance(); + rappInstance.setSme(null); + rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId()); + assertTrue(smeDeployer.deployRappInstance(rapp, rappInstance)); + } + @Test void testDeployRappFailure() throws Exception { UUID rappId = UUID.randomUUID(); @@ -362,6 +424,68 @@ class SmeDeployerTest { assertTrue(undeployRapp); } + @Test + void testUndeployRappInstanceNoInvokers() { + UUID rappId = UUID.randomUUID(); + UUID apfId = UUID.randomUUID(); + List serviceApis = List.of(String.valueOf(UUID.randomUUID()), String.valueOf(UUID.randomUUID())); + Map providerFuncs = Map.of(String.valueOf(UUID.randomUUID()), String.valueOf(UUID.randomUUID()), + String.valueOf(UUID.randomUUID()), String.valueOf(UUID.randomUUID())); + Rapp rapp = Rapp.builder().rappId(rappId).name(rappId.toString()).packageName(validRappFile) + .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build(); + mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_PUBLISH_API, apfId, serviceApis.get(0)))) + .andExpect(method(HttpMethod.DELETE)).andRespond(withStatus(HttpStatus.NO_CONTENT)); + mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_PUBLISH_API, apfId, serviceApis.get(1)))) + .andExpect(method(HttpMethod.DELETE)).andRespond(withStatus(HttpStatus.NO_CONTENT)); + mockServer.expect(ExpectedCount.once(), + requestTo(String.format(URI_PROVIDER_REGISTRATION, providerFuncs.values().toArray()[0]))) + .andExpect(method(HttpMethod.DELETE)).andRespond(withStatus(HttpStatus.NO_CONTENT)); + mockServer.expect(ExpectedCount.once(), + requestTo(String.format(URI_PROVIDER_REGISTRATION, providerFuncs.values().toArray()[1]))) + .andExpect(method(HttpMethod.DELETE)).andRespond(withStatus(HttpStatus.NO_CONTENT)); + RappInstance rappInstance = getRappInstance(); + rappInstance.getSme().setApfId(String.valueOf(apfId)); + rappInstance.getSme().setProviderFunctionIds(providerFuncs.values().stream().toList()); + rappInstance.getSme().setServiceApiIds(serviceApis); + rappInstance.getSme().setInvokerIds(null); + rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId()); + boolean undeployRapp = smeDeployer.undeployRappInstance(rapp, rappInstance); + mockServer.verify(); + assertTrue(undeployRapp); + } + + @Test + void testUndeployRappInstanceNoProviders() { + UUID rappId = UUID.randomUUID(); + UUID apfId = UUID.randomUUID(); + List invokers = List.of(String.valueOf(UUID.randomUUID()), String.valueOf(UUID.randomUUID())); + Rapp rapp = Rapp.builder().rappId(rappId).name(rappId.toString()).packageName(validRappFile) + .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build(); + mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INVOKER, invokers.get(0)))) + .andExpect(method(HttpMethod.DELETE)).andRespond(withStatus(HttpStatus.NO_CONTENT)); + mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INVOKER, invokers.get(1)))) + .andExpect(method(HttpMethod.DELETE)).andRespond(withStatus(HttpStatus.NO_CONTENT)); + RappInstance rappInstance = getRappInstance(); + rappInstance.getSme().setApfId(String.valueOf(apfId)); + rappInstance.getSme().setProviderFunctionIds(null); + rappInstance.getSme().setServiceApiIds(null); + rappInstance.getSme().setInvokerIds(invokers); + rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId()); + boolean undeployRapp = smeDeployer.undeployRappInstance(rapp, rappInstance); + mockServer.verify(); + assertTrue(undeployRapp); + } + + @Test + void testUndeployRappInstanceWithoutSme() { + UUID rappId = UUID.randomUUID(); + Rapp rapp = Rapp.builder().rappId(rappId).name(rappId.toString()).packageName(validRappFile) + .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build(); + RappInstance rappInstance = getRappInstance(); + rappInstance.setSme(null); + assertTrue(smeDeployer.undeployRappInstance(rapp, rappInstance)); + } + @Test void testUndeployRappInstanceFailure() { UUID rappId = UUID.randomUUID();