Merge "Added STD sim 2.0.0 tests"
[nonrtric.git] / policy-agent / src / test / java / org / oransc / policyagent / tasks / RicSynchronizationTaskTest.java
index b05349f..6667029 100644 (file)
@@ -35,9 +35,11 @@ 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.util.Arrays;
 import java.util.Collections;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -58,11 +60,12 @@ import org.oransc.policyagent.repository.Ric.RicState;
 import org.oransc.policyagent.repository.Service;
 import org.oransc.policyagent.repository.Services;
 import org.oransc.policyagent.utils.LoggingUtils;
+
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
 @ExtendWith(MockitoExtension.class)
-public class RicSynchronizationTaskTest {
+class RicSynchronizationTaskTest {
     private static final String POLICY_TYPE_1_NAME = "type1";
     private static final PolicyType POLICY_TYPE_1 = ImmutablePolicyType.builder() //
         .name(POLICY_TYPE_1_NAME) //
@@ -74,16 +77,22 @@ public class RicSynchronizationTaskTest {
         .name(RIC_1_NAME) //
         .baseUrl("baseUrl1") //
         .managedElementIds(Collections.emptyList()) //
+        .controllerName("controllerName") //
         .build());
 
-    private static final Policy POLICY_1 = ImmutablePolicy.builder() //
-        .id("policyId1") //
-        .json("") //
-        .ownerServiceName("service") //
-        .ric(RIC_1) //
-        .type(POLICY_TYPE_1) //
-        .lastModified("now") //
-        .build();
+    private static Policy createPolicy(String policyId, boolean isTransient) {
+        return ImmutablePolicy.builder() //
+            .id(policyId) //
+            .json("") //
+            .ownerServiceName("service") //
+            .ric(RIC_1) //
+            .type(POLICY_TYPE_1) //
+            .lastModified("now") //
+            .isTransient(isTransient) //
+            .build();
+    }
+
+    private static final Policy POLICY_1 = createPolicy("policyId1", false);
 
     private static final String SERVICE_1_NAME = "service1";
     private static final String SERVICE_1_CALLBACK_URL = "callbackUrl";
@@ -100,16 +109,16 @@ public class RicSynchronizationTaskTest {
     private Services services;
 
     @BeforeEach
-    public void init() {
+    void init() {
         policyTypes = new PolicyTypes();
         policies = new Policies();
         services = new Services();
-        RIC_1.setState(RicState.UNDEFINED);
+        RIC_1.setState(RicState.UNAVAILABLE);
         RIC_1.clearSupportedPolicyTypes();
     }
 
     @Test
-    public void ricAlreadySynchronizing_thenNoSynchronization() {
+    void ricAlreadySynchronizing_thenNoSynchronization() {
         RIC_1.setState(RicState.SYNCHRONIZING);
         RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
 
@@ -126,12 +135,12 @@ public class RicSynchronizationTaskTest {
         assertThat(policyTypes.size()).isEqualTo(1);
         assertThat(policies.size()).isEqualTo(1);
         assertThat(RIC_1.getState()).isEqualTo(RicState.SYNCHRONIZING);
-        assertThat(RIC_1.getSupportedPolicyTypeNames().size()).isEqualTo(1);
+        assertThat(RIC_1.getSupportedPolicyTypeNames()).hasSize(1);
     }
 
     @Test
-    public void ricIdlePolicyTypeInRepo_thenSynchronizationWithReuseOfTypeFromRepoAndCorrectServiceNotified() {
-        RIC_1.setState(RicState.IDLE);
+    void ricIdlePolicyTypeInRepo_thenSynchronizationWithReuseOfTypeFromRepoAndCorrectServiceNotified() {
+        RIC_1.setState(RicState.AVAILABLE);
 
         policyTypes.put(POLICY_TYPE_1);
 
@@ -150,7 +159,7 @@ public class RicSynchronizationTaskTest {
 
         synchronizerUnderTest.run(RIC_1);
 
-        verify(a1ClientMock).getPolicyTypeIdentities();
+        verify(a1ClientMock, times(1)).getPolicyTypeIdentities();
         verifyNoMoreInteractions(a1ClientMock);
 
         verify(synchronizerUnderTest).run(RIC_1);
@@ -161,13 +170,13 @@ public class RicSynchronizationTaskTest {
         verifyNoMoreInteractions(restClientMock);
 
         assertThat(policyTypes.size()).isEqualTo(1);
-        assertThat(policies.size()).isEqualTo(0);
-        assertThat(RIC_1.getState()).isEqualTo(RicState.IDLE);
+        assertThat(policies.size()).isZero();
+        assertThat(RIC_1.getState()).isEqualTo(RicState.AVAILABLE);
     }
 
     @Test
-    public void ricIdlePolicyTypeNotInRepo_thenSynchronizationWithTypeFromRic() throws Exception {
-        RIC_1.setState(RicState.IDLE);
+    void ricIdlePolicyTypeNotInRepo_thenSynchronizationWithTypeFromRic() throws Exception {
+        RIC_1.setState(RicState.AVAILABLE);
 
         setUpCreationOfA1Client();
         simulateRicWithOnePolicyType();
@@ -184,14 +193,17 @@ public class RicSynchronizationTaskTest {
 
         assertThat(policyTypes.size()).isEqualTo(1);
         assertThat(policyTypes.getType(POLICY_TYPE_1_NAME).schema()).isEqualTo(typeSchema);
-        assertThat(policies.size()).isEqualTo(0);
-        assertThat(RIC_1.getState()).isEqualTo(RicState.IDLE);
+        assertThat(policies.size()).isZero();
+        assertThat(RIC_1.getState()).isEqualTo(RicState.AVAILABLE);
     }
 
     @Test
-    public void ricIdleAndHavePolicies_thenSynchronizationWithRecreationOfPolicies() {
-        RIC_1.setState(RicState.IDLE);
+    void ricIdleAndHavePolicies_thenSynchronizationWithRecreationOfPolicies() {
+        RIC_1.setState(RicState.AVAILABLE);
+
+        Policy transientPolicy = createPolicy("transientPolicyId", true);
 
+        policies.put(transientPolicy);
         policies.put(POLICY_1);
 
         setUpCreationOfA1Client();
@@ -209,14 +221,14 @@ public class RicSynchronizationTaskTest {
         verify(a1ClientMock).putPolicy(POLICY_1);
         verifyNoMoreInteractions(a1ClientMock);
 
-        assertThat(policyTypes.size()).isEqualTo(0);
-        assertThat(policies.size()).isEqualTo(1);
-        assertThat(RIC_1.getState()).isEqualTo(RicState.IDLE);
+        assertThat(policyTypes.size()).isZero();
+        assertThat(policies.size()).isEqualTo(1); // The transient policy shall be deleted
+        assertThat(RIC_1.getState()).isEqualTo(RicState.AVAILABLE);
     }
 
     @Test
-    public void ricIdleAndErrorDeletingPoliciesFirstTime_thenSynchronizationWithDeletionOfPolicies() {
-        RIC_1.setState(RicState.IDLE);
+    void ricIdleAndErrorDeletingPoliciesFirstTime_thenSynchronizationWithDeletionOfPolicies() {
+        RIC_1.setState(RicState.AVAILABLE);
 
         policies.put(POLICY_1);
 
@@ -235,14 +247,14 @@ public class RicSynchronizationTaskTest {
         verify(a1ClientMock, times(2)).deleteAllPolicies();
         verifyNoMoreInteractions(a1ClientMock);
 
-        assertThat(policyTypes.size()).isEqualTo(0);
-        assertThat(policies.size()).isEqualTo(0);
-        assertThat(RIC_1.getState()).isEqualTo(RicState.IDLE);
+        assertThat(policyTypes.size()).isZero();
+        assertThat(policies.size()).isZero();
+        assertThat(RIC_1.getState()).isEqualTo(RicState.AVAILABLE);
     }
 
     @Test
-    public void ricIdleAndErrorDeletingPoliciesAllTheTime_thenSynchronizationWithFailedRecovery() {
-        RIC_1.setState(RicState.IDLE);
+    void ricIdleAndErrorDeletingPoliciesAllTheTime_thenSynchronizationWithFailedRecovery() {
+        RIC_1.setState(RicState.AVAILABLE);
 
         policies.put(POLICY_1);
 
@@ -261,21 +273,19 @@ public class RicSynchronizationTaskTest {
         synchronizerUnderTest.run(RIC_1);
 
         verifyCorrectLogMessage(0, logAppender,
-            "Synchronization failed for ric: " + RIC_1_NAME + ", reason: " + originalErrorMessage);
-        verifyCorrectLogMessage(1, logAppender,
-            "Synchronization failure recovery failed for ric: " + RIC_1_NAME + ", reason: " + originalErrorMessage);
+            "Synchronization failure for ric: " + RIC_1_NAME + ", reason: " + originalErrorMessage);
 
         verify(a1ClientMock, times(2)).deleteAllPolicies();
         verifyNoMoreInteractions(a1ClientMock);
 
-        assertThat(policyTypes.size()).isEqualTo(0);
-        assertThat(policies.size()).isEqualTo(0);
-        assertThat(RIC_1.getState()).isEqualTo(RicState.UNDEFINED);
+        assertThat(policyTypes.size()).isZero();
+        assertThat(policies.size()).isZero();
+        assertThat(RIC_1.getState()).isEqualTo(RicState.UNAVAILABLE);
     }
 
     @Test
-    public void ricIdlePolicyTypeInRepo_thenSynchronizationWithErrorOnServiceNotificationErrorLogged() {
-        RIC_1.setState(RicState.IDLE);
+    void ricIdlePolicyTypeInRepo_thenSynchronizationWithErrorOnServiceNotificationErrorLogged() {
+        RIC_1.setState(RicState.AVAILABLE);
 
         policyTypes.put(POLICY_TYPE_1);
 
@@ -297,12 +307,14 @@ public class RicSynchronizationTaskTest {
         synchronizerUnderTest.run(RIC_1);
 
         ILoggingEvent loggingEvent = logAppender.list.get(0);
-        assertThat(loggingEvent.getThrowableProxy().getMessage()).isEqualTo(originalErrorMessage);
-        verifyCorrectLogMessage(0, logAppender, "Service notification failed for service: " + SERVICE_1_NAME);
+        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) {
@@ -322,6 +334,6 @@ public class RicSynchronizationTaskTest {
     private void verifyCorrectLogMessage(int messageIndex, ListAppender<ILoggingEvent> logAppender,
         String expectedMessage) {
         ILoggingEvent loggingEvent = logAppender.list.get(messageIndex);
-        assertThat(loggingEvent.toString().contains(expectedMessage)).isTrue();
+        assertThat(loggingEvent.getFormattedMessage()).isEqualTo(expectedMessage);
     }
 }