/*-
* ============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.
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;
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 {
}
@Test
- void testCreateProviderDomainFailure() throws Exception {
+ void testCreateProviderDomainFailure() {
UUID rappId = UUID.randomUUID();
Rapp rapp =
Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation)
@Test
- void testCreatePublishApiFailure() throws Exception {
+ void testCreatePublishApiFailure() {
UUID rappId = UUID.randomUUID();
UUID apfId = UUID.randomUUID();
Rapp rapp =
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();
assertTrue(undeployRapp);
}
+ @Test
+ void testUndeployRappInstanceNoInvokers() {
+ UUID rappId = UUID.randomUUID();
+ UUID apfId = UUID.randomUUID();
+ List<String> serviceApis = List.of(String.valueOf(UUID.randomUUID()), String.valueOf(UUID.randomUUID()));
+ Map<String, String> 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<String> 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();
rappSMEInstance.setServiceApis("api-set-1");
rappSMEInstance.setAefId("TEST_AEF_ID");
rappSMEInstance.setApfId(String.valueOf(UUID.randomUUID()));
- rappSMEInstance.setProviderFunction("aef-provider-function");
+ rappSMEInstance.setProviderFunction("provider-function-1");
RappInstance rappInstance = new RappInstance();
rappInstance.setSme(rappSMEInstance);
return rappInstance;