/*-
* ============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.
package com.oransc.rappmanager.dme.service;
-import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.oransc.rappmanager.dme.configuration.DmeConfiguration;
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.RappDmeResourceBuilder;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
+import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.client.RestTemplate;
@SpringBootTest(classes = {DmeConfiguration.class, DmeDeployer.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 DmeDeployerTest {
RestTemplate restTemplate;
@Autowired
DmeConfiguration dmeConfiguration;
- @SpyBean
- RappInstanceStateMachine rappInstanceStateMachine;
RappDmeResourceBuilder rappDmeResourceBuilder = new RappDmeResourceBuilder();
@ParameterizedTest
@MethodSource("getSuccessParamsWithUnavailableInfoTypes")
- void testPrimeRappSuccessWithUnavailableInfoType(String rappFile, boolean result) throws JsonProcessingException {
+ void testPrimeRappSuccessWithUnavailableInfoType(String rappFile, boolean isSuccess)
+ throws JsonProcessingException {
RappResources rappResources = rappDmeResourceBuilder.getResources();
Rapp rapp = getRapp(Optional.empty());
rapp.setPackageName(rappFile);
if (rappFile.equals(validRappFileNewInfoType)) {
mockServer.verify();
}
- assertEquals(rapp.getIsDmeValid(), result);
+ if (isSuccess) {
+ assertNull(rapp.getReason());
+ } else {
+ assertNotNull(rapp.getReason());
+ }
}
private static Stream<Arguments> getSuccessParamsWithUnavailableInfoTypes() {
}
@ParameterizedTest
- @MethodSource("getSuccessParamsWithAvailableInfoTypes")
- void testPrimeRappSuccessWithValidInfoType(String rappFile, boolean result) throws JsonProcessingException {
+ @ValueSource(strings = {validRappFile, validRappFileNewInfoType})
+ void testPrimeRappSuccessWithValidInfoType(String rappFile) throws JsonProcessingException {
RappResources rappResources = rappDmeResourceBuilder.getResources();
Rapp rapp = getRapp(Optional.empty());
rapp.setPackageName(rappFile);
if (rappFile.equals(validRappFileNewInfoType)) {
mockServer.verify();
}
- assertEquals(rapp.getIsDmeValid(), result);
+ assertNull(rapp.getReason());
}
- private static Stream<Arguments> getSuccessParamsWithAvailableInfoTypes() {
- return Stream.of(Arguments.of(validRappFile, true), Arguments.of(validRappFileNewInfoType, true));
+ @Test
+ void testPrimeRappWithoutDme() {
+ RappResources rappResources = rappDmeResourceBuilder.getResources();
+ rappResources.setDme(null);
+ Rapp rapp = getRapp(Optional.empty());
+ rapp.setPackageName(validRappFile);
+ rapp.setRappResources(rappResources);
+ assertTrue(dmeDeployer.primeRapp(rapp));
}
@Test
Rapp rapp = getRapp(Optional.empty());
rapp.setRappResources(rappResources);
assertFalse(dmeDeployer.primeRapp(rapp));
- assertFalse(rapp.getIsDmeValid());
+ assertFalse(rapp.getReason().isEmpty());
}
@Test
void testDeprimeRapp() {
Rapp rapp = getRapp(Optional.empty());
- rapp.setIsDmeValid(true);
assertTrue(dmeDeployer.deprimeRapp(rapp));
- assertNull(rapp.getIsDmeValid());
+ assertNull(rapp.getReason());
}
@Test
void testDeployrAppInstanceSuccess() {
Rapp rapp = getRapp(Optional.empty());
RappInstance rappInstance = rappDmeResourceBuilder.getRappInstance();
- getMockServerClientCreateInfoType(rappInstance.getDme().getInfoTypesProducer().toArray()[0].toString(), true);
- getMockServerClientCreateInfoProducer(rappInstance.getDme().getInfoProducer(), true);
- getMockServerClientCreateInfoConsumer(rappInstance.getDme().getInfoConsumer(), true);
- rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
- assertTrue(dmeDeployer.deployRappInstance(rapp, rappInstance));
- mockServer.verify();
- }
-
- @Test
- void testDeployrAppInstanceSuccessWithoutConsumer() {
- Rapp rapp = getRapp(Optional.empty());
- RappInstance rappInstance = rappDmeResourceBuilder.getRappInstance();
- rappInstance.getDme().setInfoTypeConsumer(null);
- rappInstance.getDme().setInfoConsumer(null);
- getMockServerClientCreateInfoType(rappInstance.getDme().getInfoTypesProducer().toArray()[0].toString(), true);
- getMockServerClientCreateInfoProducer(rappInstance.getDme().getInfoProducer(), true);
- rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
assertTrue(dmeDeployer.deployRappInstance(rapp, rappInstance));
- mockServer.verify();
- }
-
- @Test
- void testDeployrAppInstanceWithoutProducer() {
- Rapp rapp = getRapp(Optional.empty());
- RappInstance rappInstance = rappDmeResourceBuilder.getRappInstance();
- rappInstance.getDme().setInfoTypesProducer(null);
- rappInstance.getDme().setInfoProducer(null);
- getMockServerClientCreateInfoType(rappInstance.getDme().getInfoTypeConsumer(), true);
- getMockServerClientCreateInfoConsumer(rappInstance.getDme().getInfoConsumer(), true);
- rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
- assertTrue(dmeDeployer.deployRappInstance(rapp, rappInstance));
- mockServer.verify();
- }
-
- @Test
- void testDeployrAppInstanceFailureWithInfoType() {
- Rapp rapp = getRapp(Optional.empty());
- RappInstance rappInstance = rappDmeResourceBuilder.getRappInstance();
- getMockServerClientCreateInfoType(rappInstance.getDme().getInfoTypesProducer().toArray()[0].toString(), false);
- rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
- assertFalse(dmeDeployer.deployRappInstance(rapp, rappInstance));
- mockServer.verify();
- }
-
- @Test
- void testDeployrAppInstanceFailureWithInfoProducer() {
- Rapp rapp = getRapp(Optional.empty());
- RappInstance rappInstance = rappDmeResourceBuilder.getRappInstance();
- getMockServerClientCreateInfoType(rappInstance.getDme().getInfoTypesProducer().toArray()[0].toString(), true);
- getMockServerClientCreateInfoProducer(rappInstance.getDme().getInfoProducer(), false);
- rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
- assertFalse(dmeDeployer.deployRappInstance(rapp, rappInstance));
- mockServer.verify();
- }
-
- @Test
- void testDeployrAppInstanceFailureWithInfoConsumer() {
- Rapp rapp = getRapp(Optional.empty());
- RappInstance rappInstance = rappDmeResourceBuilder.getRappInstance();
- getMockServerClientCreateInfoType(rappInstance.getDme().getInfoTypesProducer().toArray()[0].toString(), true);
- getMockServerClientCreateInfoProducer(rappInstance.getDme().getInfoProducer(), true);
- getMockServerClientCreateInfoConsumer(rappInstance.getDme().getInfoConsumer(), false);
- rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
- assertFalse(dmeDeployer.deployRappInstance(rapp, rappInstance));
- mockServer.verify();
}
@Test
Rapp rapp = getRapp(Optional.empty());
rapp.setState(RappState.PRIMED);
RappInstance rappInstance = rappDmeResourceBuilder.getRappInstance();
- getMockServerClientDeleteInfoConsumer(rappInstance.getDme().getInfoConsumer(), true);
- getMockServerClientDeleteInfoProducer(rappInstance.getDme().getInfoProducer(), true);
- rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
assertTrue(dmeDeployer.undeployRappInstance(rapp, rappInstance));
- mockServer.verify();
- }
-
-
- @Test
- void testUndeployrAppInstanceFailureWithInfoProducer() {
- Rapp rapp = getRapp(Optional.empty());
- rapp.setState(RappState.PRIMED);
- RappInstance rappInstance = rappDmeResourceBuilder.getRappInstance();
- getMockServerClientDeleteInfoConsumer(rappInstance.getDme().getInfoConsumer(), true);
- getMockServerClientDeleteInfoProducer(rappInstance.getDme().getInfoProducer(), false);
- rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
- assertFalse(dmeDeployer.undeployRappInstance(rapp, rappInstance));
- mockServer.verify();
- }
-
- @Test
- void testUndeployrAppInstanceFailureWithInfoConsumer() {
- Rapp rapp = getRapp(Optional.empty());
- rapp.setState(RappState.PRIMED);
- RappInstance rappInstance = rappDmeResourceBuilder.getRappInstance();
- getMockServerClientDeleteInfoConsumer(rappInstance.getDme().getInfoConsumer(), false);
- rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
- assertFalse(dmeDeployer.undeployRappInstance(rapp, rappInstance));
- mockServer.verify();
- }
-
- @Test
- void testCreateInfoTypeFailureInvalidInfoType() {
- Rapp rapp = getRapp(Optional.empty());
- assertFalse(dmeDeployer.createInfoTypes(rapp, null));
- }
-
- @Test
- void testCreateInfoTypeFailureInvalidInfoProducer() {
- Rapp rapp = getRapp(Optional.empty());
- assertFalse(dmeDeployer.createInfoProducer(rapp, ""));
- }
-
- @Test
- void testCreateInfoTypeFailureInvalidInfoConsumer() {
- Rapp rapp = getRapp(Optional.empty());
- assertFalse(dmeDeployer.createInfoConsumer(rapp, ""));
}
Rapp getRapp(Optional<UUID> rappOptional) {
return Rapp.builder().rappId(rappOptional.orElse(UUID.randomUUID())).name("").packageName(validRappFile)
.packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build();
}
-
- void getMockServerClientCreateInfoType(String infoType, boolean isSuccess) {
- if (isSuccess) {
- mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INFO_TYPE, infoType)))
- .andExpect(method(HttpMethod.PUT)).andRespond(withStatus(HttpStatus.CREATED));
- } else {
- mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INFO_TYPE, infoType)))
- .andExpect(method(HttpMethod.PUT)).andRespond(withStatus(HttpStatus.BAD_GATEWAY));
- }
- }
-
- void getMockServerClientCreateInfoProducer(String infoProducer, boolean isSuccess) {
- if (isSuccess) {
- mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INFO_PRODUCER, infoProducer)))
- .andExpect(method(HttpMethod.PUT)).andRespond(withStatus(HttpStatus.CREATED));
- } else {
- mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INFO_PRODUCER, infoProducer)))
- .andExpect(method(HttpMethod.PUT)).andRespond(withStatus(HttpStatus.BAD_GATEWAY));
- }
- }
-
- void getMockServerClientCreateInfoConsumer(String infoConsumer, boolean isSuccess) {
- if (isSuccess) {
- mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INFO_CONSUMER, infoConsumer)))
- .andExpect(method(HttpMethod.PUT)).andRespond(withStatus(HttpStatus.CREATED));
- } else {
- mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INFO_CONSUMER, infoConsumer)))
- .andExpect(method(HttpMethod.PUT)).andRespond(withStatus(HttpStatus.BAD_GATEWAY));
- }
- }
-
- void getMockServerClientDeleteInfoProducer(String infoProducer, boolean isSuccess) {
- if (isSuccess) {
- mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INFO_PRODUCER, infoProducer)))
- .andExpect(method(HttpMethod.DELETE)).andRespond(withStatus(HttpStatus.NO_CONTENT));
- } else {
- mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INFO_PRODUCER, infoProducer)))
- .andExpect(method(HttpMethod.DELETE)).andRespond(withStatus(HttpStatus.BAD_GATEWAY));
- }
- }
-
- void getMockServerClientDeleteInfoConsumer(String infoConsumer, boolean isSuccess) {
- if (isSuccess) {
- mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INFO_CONSUMER, infoConsumer)))
- .andExpect(method(HttpMethod.DELETE)).andRespond(withStatus(HttpStatus.NO_CONTENT));
- } else {
- mockServer.expect(ExpectedCount.once(), requestTo(String.format(URI_INFO_CONSUMER, infoConsumer)))
- .andExpect(method(HttpMethod.DELETE)).andRespond(withStatus(HttpStatus.BAD_GATEWAY));
- }
- }
-
}