X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Ftest%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Ftasks%2FRefreshConfigTaskTest.java;h=6073b26a3f04f39bfbeff2acdd395faac3809e9c;hb=3e8bccd59c63f424052fcef5930e94a6629a1a95;hp=788ac416fd2d31fe35d202df3c297657a27a586e;hpb=636b5946ed5f9475d13cf4c942a2d9d35d1a5cbd;p=nonrtric.git diff --git a/policy-agent/src/test/java/org/oransc/policyagent/tasks/RefreshConfigTaskTest.java b/policy-agent/src/test/java/org/oransc/policyagent/tasks/RefreshConfigTaskTest.java index 788ac416..6073b26a 100644 --- a/policy-agent/src/test/java/org/oransc/policyagent/tasks/RefreshConfigTaskTest.java +++ b/policy-agent/src/test/java/org/oransc/policyagent/tasks/RefreshConfigTaskTest.java @@ -21,7 +21,6 @@ package org.oransc.policyagent.tasks; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; @@ -44,26 +43,28 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.time.Duration; import java.util.Arrays; import java.util.Properties; import java.util.Vector; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Spy; -import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.jupiter.MockitoExtension; import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.CbsClient; import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.model.EnvProperties; import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.model.ImmutableEnvProperties; +import org.oransc.policyagent.clients.A1ClientFactory; import org.oransc.policyagent.configuration.ApplicationConfig; import org.oransc.policyagent.configuration.ApplicationConfigParser; import org.oransc.policyagent.configuration.ImmutableRicConfig; import org.oransc.policyagent.configuration.RicConfig; -import org.oransc.policyagent.exceptions.ServiceException; +import org.oransc.policyagent.repository.Policies; +import org.oransc.policyagent.repository.PolicyTypes; +import org.oransc.policyagent.repository.Rics; +import org.oransc.policyagent.repository.Services; import org.oransc.policyagent.utils.LoggingUtils; import reactor.core.publisher.Flux; @@ -71,7 +72,6 @@ import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @ExtendWith(MockitoExtension.class) -@RunWith(MockitoJUnitRunner.class) public class RefreshConfigTaskTest { private RefreshConfigTask refreshTaskUnderTest; @@ -82,8 +82,9 @@ public class RefreshConfigTaskTest { @Mock CbsClient cbsClient; + private static final String RIC_1_NAME = "ric1"; public static final ImmutableRicConfig CORRECT_RIC_CONIFG = ImmutableRicConfig.builder() // - .name("ric1") // + .name(RIC_1_NAME) // .baseUrl("http://localhost:8080/") // .managedElementIds(new Vector(Arrays.asList("kista_1", "kista_2"))) // .build(); @@ -97,14 +98,27 @@ public class RefreshConfigTaskTest { .build(); } + private RefreshConfigTask createTestObject(boolean configFileExists) { + RefreshConfigTask obj = spy(new RefreshConfigTask(appConfig, new Rics(), new Policies(), new Services(), + new PolicyTypes(), new A1ClientFactory(appConfig))); + doReturn(configFileExists).when(obj).configFileExists(); + return obj; + } + @Test - public void whenTheConfigurationFits() throws IOException, ServiceException { - refreshTaskUnderTest = spy(new RefreshConfigTask(appConfig)); + public void whenTheConfigurationFits_thenConfiguredRicsArePutInRepository() throws Exception { + refreshTaskUnderTest = this.createTestObject(true); refreshTaskUnderTest.systemEnvironment = new Properties(); // When doReturn(getCorrectJson()).when(refreshTaskUnderTest).createInputStream(any()); doReturn("fileName").when(appConfig).getLocalConfigurationFilePath(); - refreshTaskUnderTest.start(); + + StepVerifier.create(refreshTaskUnderTest.createRefreshTask()) // + .expectSubscription() // + .expectNext(this.appConfig) // + .expectNext(this.appConfig) // + .thenCancel() // + .verify(); // Then verify(refreshTaskUnderTest, times(1)).loadConfigurationFromFile(); @@ -116,67 +130,65 @@ public class RefreshConfigTaskTest { } @Test - public void whenFileIsExistsButJsonIsIncorrect() throws IOException, ServiceException { - refreshTaskUnderTest = spy(new RefreshConfigTask(appConfig)); + public void whenFileExistsButJsonIsIncorrect_thenNoRicsArePutInRepository() throws Exception { + refreshTaskUnderTest = this.createTestObject(true); refreshTaskUnderTest.systemEnvironment = new Properties(); // When doReturn(getIncorrectJson()).when(refreshTaskUnderTest).createInputStream(any()); doReturn("fileName").when(appConfig).getLocalConfigurationFilePath(); - refreshTaskUnderTest.loadConfigurationFromFile(); + + StepVerifier.create(refreshTaskUnderTest.createRefreshTask()) // + .expectSubscription() // + .expectNoEvent(Duration.ofMillis(100)) // + .thenCancel() // + .verify(); // Then verify(refreshTaskUnderTest, times(1)).loadConfigurationFromFile(); - Assertions.assertEquals(0, appConfig.getRicConfigs().size()); + assertThat(appConfig.getRicConfigs().size()).isEqualTo(0); } @Test - public void whenPeriodicConfigRefreshNoEnvironmentVariables() { - refreshTaskUnderTest = spy(new RefreshConfigTask(appConfig)); - refreshTaskUnderTest.systemEnvironment = new Properties(); - - final ListAppender logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class); - Flux task = refreshTaskUnderTest.createRefreshTask(); - - StepVerifier.create(task).expectSubscription().verifyComplete(); - - assertTrue(logAppender.list.toString().contains("$CONSUL_HOST environment has not been defined")); - } - - @Test - public void whenPeriodicConfigRefreshNoConsul() { - refreshTaskUnderTest = spy(new RefreshConfigTask(appConfig)); + public void whenPeriodicConfigRefreshNoConsul_thenErrorIsLogged() { + refreshTaskUnderTest = this.createTestObject(false); refreshTaskUnderTest.systemEnvironment = new Properties(); EnvProperties props = properties(); doReturn(Mono.just(props)).when(refreshTaskUnderTest).getEnvironment(any()); doReturn(Mono.just(cbsClient)).when(refreshTaskUnderTest).createCbsClient(props); - Flux err = Flux.error(new IOException()); + Flux err = Flux.error(new IOException()); doReturn(err).when(cbsClient).updates(any(), any(), any()); final ListAppender logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class); - Flux task = refreshTaskUnderTest.createRefreshTask(); + Flux task = refreshTaskUnderTest.createRefreshTask(); StepVerifier // .create(task) // .expectSubscription() // - .verifyComplete(); + .expectNoEvent(Duration.ofMillis(100)) // + .thenCancel() // + .verify(); - assertTrue( - logAppender.list.toString().contains("Could not refresh application configuration java.io.IOException")); + assertThat( + logAppender.list.toString().contains("Could not refresh application configuration. java.io.IOException")) + .isTrue(); } @Test - public void whenPeriodicConfigRefreshSuccess() throws JsonIOException, JsonSyntaxException, IOException { - refreshTaskUnderTest = spy(new RefreshConfigTask(appConfig)); + public void whenPeriodicConfigRefreshSuccess_thenNewConfigIsCreated() throws Exception { + refreshTaskUnderTest = this.createTestObject(false); refreshTaskUnderTest.systemEnvironment = new Properties(); EnvProperties props = properties(); doReturn(Mono.just(props)).when(refreshTaskUnderTest).getEnvironment(any()); doReturn(Mono.just(cbsClient)).when(refreshTaskUnderTest).createCbsClient(props); - Flux json = Flux.just(getJsonRootObject()); + JsonObject configAsJson = getJsonRootObject(); + String newBaseUrl = "newBaseUrl"; + modifyTheRicConfiguration(configAsJson, newBaseUrl); + Flux json = Flux.just(configAsJson); doReturn(json).when(cbsClient).updates(any(), any(), any()); Flux task = refreshTaskUnderTest.createRefreshTask(); @@ -185,13 +197,22 @@ public class RefreshConfigTaskTest { .create(task) // .expectSubscription() // .expectNext(appConfig) // - .verifyComplete(); + .expectNext(appConfig) // + .thenCancel() // + .verify(); + + verify(refreshTaskUnderTest, times(2)).runRicSynchronization(any()); + assertThat(appConfig.getRicConfigs()).isNotNull(); + assertThat(appConfig.getRic(RIC_1_NAME).baseUrl()).isEqualTo(newBaseUrl); + } - Assertions.assertNotNull(appConfig.getRicConfigs()); + private void modifyTheRicConfiguration(JsonObject configAsJson, String newBaseUrl) { + ((JsonObject) configAsJson.getAsJsonObject("config").getAsJsonArray("ric").get(0)).addProperty("baseUrl", + newBaseUrl); } private JsonObject getJsonRootObject() throws JsonIOException, JsonSyntaxException, IOException { - JsonObject rootObject = (new JsonParser()).parse(new InputStreamReader(getCorrectJson())).getAsJsonObject(); + JsonObject rootObject = JsonParser.parseReader(new InputStreamReader(getCorrectJson())).getAsJsonObject(); return rootObject; }