PMS Persistent storage of service definitions - A1 Istanbul
[ccsdk/oran.git] / a1-policy-management / src / test / java / org / onap / ccsdk / oran / a1policymanagementservice / tasks / RicSynchronizationTaskTest.java
index e1c0c6b..9bd5c50 100644 (file)
 
 package org.onap.ccsdk.oran.a1policymanagementservice.tasks;
 
-import static ch.qos.logback.classic.Level.WARN;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -33,9 +30,6 @@ import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.read.ListAppender;
-
 import java.time.Duration;
 import java.time.Instant;
 import java.util.Arrays;
@@ -48,19 +42,18 @@ import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 import org.onap.ccsdk.oran.a1policymanagementservice.clients.A1Client;
 import org.onap.ccsdk.oran.a1policymanagementservice.clients.A1ClientFactory;
-import org.onap.ccsdk.oran.a1policymanagementservice.clients.AsyncRestClient;
+import org.onap.ccsdk.oran.a1policymanagementservice.clients.AsyncRestClientFactory;
+import org.onap.ccsdk.oran.a1policymanagementservice.configuration.ApplicationConfig;
 import org.onap.ccsdk.oran.a1policymanagementservice.configuration.ImmutableRicConfig;
-import org.onap.ccsdk.oran.a1policymanagementservice.repository.ImmutablePolicy;
-import org.onap.ccsdk.oran.a1policymanagementservice.repository.ImmutablePolicyType;
 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Policies;
 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Policy;
 import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyType;
 import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyTypes;
 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Ric;
 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Ric.RicState;
+import org.onap.ccsdk.oran.a1policymanagementservice.repository.Rics;
 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Service;
 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Services;
-import org.onap.ccsdk.oran.a1policymanagementservice.utils.LoggingUtils;
 
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -68,7 +61,7 @@ import reactor.core.publisher.Mono;
 @ExtendWith(MockitoExtension.class)
 class RicSynchronizationTaskTest {
     private static final String POLICY_TYPE_1_NAME = "type1";
-    private static final PolicyType POLICY_TYPE_1 = ImmutablePolicyType.builder() //
+    private static final PolicyType POLICY_TYPE_1 = PolicyType.builder() //
             .id(POLICY_TYPE_1_NAME) //
             .schema("") //
             .build();
@@ -82,7 +75,7 @@ class RicSynchronizationTaskTest {
             .build());
 
     private static Policy createPolicy(String policyId, boolean isTransient) {
-        return ImmutablePolicy.builder() //
+        return Policy.builder() //
                 .id(policyId) //
                 .json("") //
                 .ownerServiceId("service") //
@@ -90,6 +83,7 @@ class RicSynchronizationTaskTest {
                 .type(POLICY_TYPE_1) //
                 .lastModified(Instant.now()) //
                 .isTransient(isTransient) //
+                .statusNotificationUri("statusNotificationUri") //
                 .build();
     }
 
@@ -108,16 +102,27 @@ class RicSynchronizationTaskTest {
     private PolicyTypes policyTypes;
     private Policies policies;
     private Services services;
+    private Rics rics;
+
+    private final ApplicationConfig appConfig = new ApplicationConfig();
 
     @BeforeEach
     void init() {
-        policyTypes = new PolicyTypes();
-        policies = new Policies();
-        services = new Services();
+        policyTypes = new PolicyTypes(appConfig);
+        policies = new Policies(appConfig);
+        services = new Services(appConfig);
+        rics = new Rics();
         RIC_1.setState(RicState.UNAVAILABLE);
         RIC_1.clearSupportedPolicyTypes();
     }
 
+    private RicSynchronizationTask createTask() {
+        ApplicationConfig config = new ApplicationConfig();
+        AsyncRestClientFactory restClientFactory = new AsyncRestClientFactory(config.getWebClientConfig());
+        return new RicSynchronizationTask(a1ClientFactoryMock, policyTypes, policies, services, restClientFactory,
+                rics);
+    };
+
     @Test
     void ricAlreadySynchronizing_thenNoSynchronization() {
         RIC_1.setState(RicState.SYNCHRONIZING);
@@ -126,8 +131,7 @@ class RicSynchronizationTaskTest {
         policyTypes.put(POLICY_TYPE_1);
         policies.put(POLICY_1);
 
-        RicSynchronizationTask synchronizerUnderTest =
-                new RicSynchronizationTask(a1ClientFactoryMock, policyTypes, policies, services);
+        RicSynchronizationTask synchronizerUnderTest = createTask();
 
         synchronizerUnderTest.run(RIC_1);
 
@@ -141,6 +145,7 @@ class RicSynchronizationTaskTest {
 
     @Test
     void ricIdlePolicyTypeInRepo_thenSynchronizationWithReuseOfTypeFromRepoAndCorrectServiceNotified() {
+        rics.put(RIC_1);
         RIC_1.setState(RicState.AVAILABLE);
 
         policyTypes.put(POLICY_TYPE_1);
@@ -152,11 +157,7 @@ class RicSynchronizationTaskTest {
         setUpCreationOfA1Client();
         simulateRicWithOnePolicyType();
 
-        RicSynchronizationTask synchronizerUnderTest =
-                spy(new RicSynchronizationTask(a1ClientFactoryMock, policyTypes, policies, services));
-
-        AsyncRestClient restClientMock = setUpCreationOfAsyncRestClient(synchronizerUnderTest);
-        when(restClientMock.put(anyString(), anyString())).thenReturn(Mono.just("Ok"));
+        RicSynchronizationTask synchronizerUnderTest = spy(createTask());
 
         synchronizerUnderTest.run(RIC_1);
 
@@ -164,11 +165,6 @@ class RicSynchronizationTaskTest {
         verifyNoMoreInteractions(a1ClientMock);
 
         verify(synchronizerUnderTest).run(RIC_1);
-        verify(synchronizerUnderTest).createNotificationClient(SERVICE_1_CALLBACK_URL);
-        verifyNoMoreInteractions(synchronizerUnderTest);
-
-        verify(restClientMock).put("", "Synchronization completed for:" + RIC_1_NAME);
-        verifyNoMoreInteractions(restClientMock);
 
         assertThat(policyTypes.size()).isEqualTo(1);
         assertThat(policies.size()).isZero();
@@ -178,14 +174,14 @@ class RicSynchronizationTaskTest {
     @Test
     void ricIdlePolicyTypeNotInRepo_thenSynchronizationWithTypeFromRic() throws Exception {
         RIC_1.setState(RicState.AVAILABLE);
+        rics.put(RIC_1);
 
         setUpCreationOfA1Client();
         simulateRicWithOnePolicyType();
         String typeSchema = "schema";
         when(a1ClientMock.getPolicyTypeSchema(POLICY_TYPE_1_NAME)).thenReturn(Mono.just(typeSchema));
 
-        RicSynchronizationTask synchronizerUnderTest =
-                new RicSynchronizationTask(a1ClientFactoryMock, policyTypes, policies, services);
+        RicSynchronizationTask synchronizerUnderTest = createTask();
 
         synchronizerUnderTest.run(RIC_1);
 
@@ -193,7 +189,7 @@ class RicSynchronizationTaskTest {
         verifyNoMoreInteractions(a1ClientMock);
 
         assertThat(policyTypes.size()).isEqualTo(1);
-        assertThat(policyTypes.getType(POLICY_TYPE_1_NAME).schema()).isEqualTo(typeSchema);
+        assertThat(policyTypes.getType(POLICY_TYPE_1_NAME).getSchema()).isEqualTo(typeSchema);
         assertThat(policies.size()).isZero();
         assertThat(RIC_1.getState()).isEqualTo(RicState.AVAILABLE);
     }
@@ -201,6 +197,7 @@ class RicSynchronizationTaskTest {
     @Test
     void ricIdleAndHavePolicies_thenSynchronizationWithRecreationOfPolicies() {
         RIC_1.setState(RicState.AVAILABLE);
+        rics.put(RIC_1);
 
         Policy transientPolicy = createPolicy("transientPolicyId", true);
 
@@ -213,8 +210,7 @@ class RicSynchronizationTaskTest {
         when(a1ClientMock.deleteAllPolicies()).thenReturn(Flux.just("OK"));
         when(a1ClientMock.putPolicy(any(Policy.class))).thenReturn(Mono.just("OK"));
 
-        RicSynchronizationTask synchronizerUnderTest =
-                new RicSynchronizationTask(a1ClientFactoryMock, policyTypes, policies, services);
+        RicSynchronizationTask synchronizerUnderTest = createTask();
 
         synchronizerUnderTest.run(RIC_1);
 
@@ -230,6 +226,7 @@ class RicSynchronizationTaskTest {
     @Test
     void ricIdleAndErrorDeletingPoliciesFirstTime_thenSynchronizationWithDeletionOfPolicies() {
         RIC_1.setState(RicState.AVAILABLE);
+        rics.put(RIC_1);
 
         policies.put(POLICY_1);
 
@@ -240,8 +237,7 @@ class RicSynchronizationTaskTest {
                 .thenReturn(Flux.error(new Exception("Exception"))) //
                 .thenReturn(Flux.just("OK"));
 
-        RicSynchronizationTask synchronizerUnderTest =
-                new RicSynchronizationTask(a1ClientFactoryMock, policyTypes, policies, services);
+        RicSynchronizationTask synchronizerUnderTest = createTask();
 
         synchronizerUnderTest.run(RIC_1);
 
@@ -265,17 +261,10 @@ class RicSynchronizationTaskTest {
         String originalErrorMessage = "Exception";
         when(a1ClientMock.deleteAllPolicies()).thenReturn(Flux.error(new Exception(originalErrorMessage)));
 
-        RicSynchronizationTask synchronizerUnderTest =
-                new RicSynchronizationTask(a1ClientFactoryMock, policyTypes, policies, services);
-
-        final ListAppender<ILoggingEvent> logAppender =
-                LoggingUtils.getLogListAppender(RicSynchronizationTask.class, WARN);
+        RicSynchronizationTask synchronizerUnderTest = createTask();
 
         synchronizerUnderTest.run(RIC_1);
 
-        verifyCorrectLogMessage(0, logAppender,
-                "Synchronization failure for ric: " + RIC_1_NAME + ", reason: " + originalErrorMessage);
-
         verify(a1ClientMock, times(2)).deleteAllPolicies();
         verifyNoMoreInteractions(a1ClientMock);
 
@@ -284,46 +273,11 @@ class RicSynchronizationTaskTest {
         assertThat(RIC_1.getState()).isEqualTo(RicState.UNAVAILABLE);
     }
 
-    @Test
-    void ricIdlePolicyTypeInRepo_thenSynchronizationWithErrorOnServiceNotificationErrorLogged() {
-        RIC_1.setState(RicState.AVAILABLE);
-
-        policyTypes.put(POLICY_TYPE_1);
-
-        services.put(SERVICE_1);
-
-        setUpCreationOfA1Client();
-        simulateRicWithOnePolicyType();
-
-        final ListAppender<ILoggingEvent> logAppender =
-                LoggingUtils.getLogListAppender(RicSynchronizationTask.class, WARN);
-
-        RicSynchronizationTask synchronizerUnderTest =
-                spy(new RicSynchronizationTask(a1ClientFactoryMock, policyTypes, policies, services));
-
-        AsyncRestClient restClientMock = setUpCreationOfAsyncRestClient(synchronizerUnderTest);
-        String originalErrorMessage = "Exception";
-        when(restClientMock.put(anyString(), anyString())).thenReturn(Mono.error(new Exception(originalErrorMessage)));
-
-        synchronizerUnderTest.run(RIC_1);
-
-        ILoggingEvent loggingEvent = logAppender.list.get(0);
-        assertThat(loggingEvent.getLevel()).isEqualTo(WARN);
-        verifyCorrectLogMessage(0, logAppender,
-                "Service notification failed for service: " + SERVICE_1_NAME + ". Cause: " + originalErrorMessage);
-    }
-
     private void setUpCreationOfA1Client() {
         when(a1ClientFactoryMock.createA1Client(any(Ric.class))).thenReturn(Mono.just(a1ClientMock));
         doReturn(Flux.empty()).when(a1ClientMock).deleteAllPolicies();
     }
 
-    private AsyncRestClient setUpCreationOfAsyncRestClient(RicSynchronizationTask synchronizerUnderTest) {
-        AsyncRestClient restClientMock = mock(AsyncRestClient.class);
-        doReturn(restClientMock).when(synchronizerUnderTest).createNotificationClient(anyString());
-        return restClientMock;
-    }
-
     private void simulateRicWithOnePolicyType() {
         when(a1ClientMock.getPolicyTypeIdentities()).thenReturn(Mono.just(Arrays.asList(POLICY_TYPE_1_NAME)));
     }
@@ -331,10 +285,4 @@ class RicSynchronizationTaskTest {
     private void simulateRicWithNoPolicyTypes() {
         when(a1ClientMock.getPolicyTypeIdentities()).thenReturn(Mono.just(Collections.emptyList()));
     }
-
-    private void verifyCorrectLogMessage(int messageIndex, ListAppender<ILoggingEvent> logAppender,
-            String expectedMessage) {
-        ILoggingEvent loggingEvent = logAppender.list.get(messageIndex);
-        assertThat(loggingEvent.getFormattedMessage()).isEqualTo(expectedMessage);
-    }
 }