Commit a658e83b authored by Anastasios Poimenidis's avatar Anastasios Poimenidis
Browse files

fix: add awaitility in PeeringApiListenerKafkaTest

parent 44902b90
Loading
Loading
Loading
Loading
Loading
+39 −18
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ package org.etsi.osl.hypo.api.tmf.api.kafka.peering.api.incoming;

import static java.util.concurrent.TimeUnit.SECONDS;
import static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await;
import static org.etsi.osl.hypo.api.tmf.ServiceCategoriesConstants.FIVE_G_SERVICES;
import static org.etsi.osl.hypo.api.tmf.ServiceCategoriesConstants.K8S_SERVICES;
import static org.etsi.osl.hypo.api.tmf.common.constants.OssConstants.EAST_WEST_PEERING_FAILURE;
@@ -13,6 +14,9 @@ import static org.etsi.osl.hypo.api.tmf.common.constants.OssConstants.UPDATED_PE
import static org.etsi.osl.hypo.api.tmf.services.catalog.api.services.ServiceSpecificationService.PEERED_SPECIFICATION_NAME_DELIMITER;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import io.micrometer.common.util.StringUtils;
import io.quarkus.test.common.QuarkusTestResource;
@@ -28,7 +32,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.awaitility.Awaitility;
import org.etsi.osl.hypo.api.tmf.common.api.kafka.peering.api.incoming.PeeringApiListener;
import org.etsi.osl.hypo.api.tmf.common.api.kafka.peering.api.incoming.helper.PeeringHelper;
import org.etsi.osl.hypo.api.tmf.common.api.services.RelatedPartyService;
@@ -53,6 +56,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;

@QuarkusTest
@@ -128,11 +132,11 @@ class PeeringApiListenerKafkaTest {
        incomingChannelCreateSpecs.send(peeredOrganizationData);

        // VERIFY LISTENER METHOD
        Awaitility.await()
        await()
                .atMost(5, SECONDS)
                .untilAsserted(
                        () ->
                                Mockito.verify(peeringApiListener)
                                verify(peeringApiListener)
                                        .addPeeredOrganizationServiceSpecs(
                                                argThat(msg -> msg.getPayload().equals(peeredOrganizationData))));

@@ -145,7 +149,7 @@ class PeeringApiListenerKafkaTest {
                .atMost(DURATION);

        // VERIFY SUBSEQUENT CALLS
        Mockito.verify(serviceSpecificationService)
        verify(serviceSpecificationService)
                .persistPeeredServiceSpecList(serviceSpecificationEntityList, ORGANIZATION_ID);

        // ASSERT FIRST SPEC
@@ -172,7 +176,7 @@ class PeeringApiListenerKafkaTest {
                                serviceSpecificationEntity, SECOND_SERVICE_SPECIFICATION_NAME));

        // ASSERT ORGANIZATION
        Awaitility.await()
        await()
                .atMost(DURATION)
                .untilAsserted(
                        () -> {
@@ -229,11 +233,11 @@ class PeeringApiListenerKafkaTest {
        // ACT: create the first specification
        incomingChannelCreateSpecs.send(peeredOrganizationData);

        Awaitility.await()
        await()
                .atMost(5, SECONDS)
                .untilAsserted(
                        () ->
                                Mockito.verify(peeringApiListener)
                                verify(peeringApiListener)
                                        .addPeeredOrganizationServiceSpecs(
                                                argThat(msg -> msg.getPayload().equals(peeredOrganizationData))));

@@ -261,11 +265,11 @@ class PeeringApiListenerKafkaTest {

        incomingChannelUpdateSpecs.send(peeredOrganizationData);

        Awaitility.await()
        await()
                .atMost(5, SECONDS)
                .untilAsserted(
                        () ->
                                Mockito.verify(peeringApiListener)
                                verify(peeringApiListener)
                                        .updatePeeredOrganizationServiceSpecs(
                                                argThat(msg -> msg.getPayload().equals(peeredOrganizationData))));

@@ -291,17 +295,16 @@ class PeeringApiListenerKafkaTest {
                serviceSpecificationService.getSpecificationById(secondSpecificationId);
        assertThat(secondServiceSpecificationEntityRetrievedFromDatabase).isPresent();

        Mockito.verify(serviceSpecificationService, Mockito.times(1))
        verify(serviceSpecificationService, Mockito.times(1))
                .updateServiceSpecificationViaPeering(any(), any());

        Mockito.verify(peeringHelper, Mockito.times(2)).addPeeredServiceSpecs(any());
        verify(peeringHelper, Mockito.times(2)).addPeeredServiceSpecs(any());
    }

    @ParameterizedTest
    @ValueSource(strings = {PEERED_ORGANIZATION_HEARTBEAT_FAILURE, EAST_WEST_PEERING_TERMINATION})
    @Order(3)
    void shouldReceiveHeartBeatFailure(String channelName) {

        InMemorySource<String> incomingChannelForDeletionOrFailure = connector.source(channelName);

        String specificationId = SPECIFICATION_ID;
@@ -333,6 +336,24 @@ class PeeringApiListenerKafkaTest {
                .await()
                .atMost(DURATION);

        // awaitility call
        ArgumentCaptor<String> valueCaptor = ArgumentCaptor.captor();
        await()
                .atMost(Duration.ofSeconds(3))
                .untilAsserted(
                        () ->
                                verify(organizationService, times(2))
                                        .updatePeeredOrganizationCharacteristic(
                                                eq(ORGANIZATION_ID), eq(PEERED_ORGANIZATION), any()));

        verify(organizationService, times(2))
                .updatePeeredOrganizationCharacteristic(
                        eq(ORGANIZATION_ID), eq(PEERED_ORGANIZATION), valueCaptor.capture());

        List<String> values = valueCaptor.getAllValues();
        assertThat(values).isNotNull().isNotEmpty().hasSize(2).containsExactly("true", "false");

        // organization assertions
        assertThat(relatedPartyService.getOptionalRelatedPartyById(ORGANIZATION_ID)).isPresent();

        Organization organizationFromDB = organizationService.getById(ORGANIZATION_ID);
@@ -347,17 +368,17 @@ class PeeringApiListenerKafkaTest {
        assertThat(peeredOrganizationOptional.get().getValue().getValue()).isEqualTo("false");

        if (channelName.equals(PEERED_ORGANIZATION_HEARTBEAT_FAILURE)) {
            Mockito.verify(peeringApiListener)
            verify(peeringApiListener)
                    .deleteServiceSpecificationsAfterFailedHeartbeat(
                            argThat(msg -> msg.getPayload().equals(ORGANIZATION_ID)));
        } else if (channelName.equals(EAST_WEST_PEERING_TERMINATION)) {
            Mockito.verify(peeringApiListener)
            verify(peeringApiListener)
                    .peeringTermination(argThat(msg -> msg.getPayload().equals(ORGANIZATION_ID)));
        }

        Mockito.verify(serviceSpecificationService)
        verify(serviceSpecificationService)
                .deleteServiceSpecificationsByOrganizationId(ORGANIZATION_ID);
        Mockito.verify(organizationService)
        verify(organizationService)
                .updatePeeredOrganizationCharacteristic(ORGANIZATION_ID, PEERED_ORGANIZATION, "false");
    }

@@ -378,9 +399,9 @@ class PeeringApiListenerKafkaTest {
        assertThat(peeredOrganizationOptional).isPresent();
        assertThat(peeredOrganizationOptional.get().getValue().getValue()).isEqualTo("false");

        Mockito.verify(peeringApiListener)
        verify(peeringApiListener)
                .peeringFailure(argThat(msg -> msg.getPayload().equals(ORGANIZATION_ID)));
        Mockito.verify(organizationService)
        verify(organizationService)
                .updatePeeredOrganizationCharacteristic(ORGANIZATION_ID, PEERED_ORGANIZATION, "false");
    }