From 2cf649dda43c7fc7650b5d0047ccc57108918724 Mon Sep 17 00:00:00 2001 From: pwielebs Date: Thu, 16 May 2019 17:44:45 +0200 Subject: Align PRH to El Alto SDK Change-Id: I65c445d76092e11084fb60c68740e1321b35708c Issue-ID: DCAEGEN2-1501 Signed-off-by: pwielebs --- .../services/prh/TestAppConfiguration.java | 57 +++----- .../ConsulConfigurationParserTest.java | 47 +++---- .../prh/service/DmaapConsumerJsonParserTest.java | 46 +++--- .../services/prh/tasks/AaiPublisherTaskSpy.java | 12 +- .../prh/tasks/DmaapConsumerTaskImplTest.java | 150 -------------------- .../services/prh/tasks/DmaapConsumerTaskSpy.java | 20 +-- .../services/prh/tasks/DmaapProducerTaskSpy.java | 26 ++-- .../prh/tasks/DmaapPublisherTaskImplTest.java | 155 +++++++++------------ 8 files changed, 157 insertions(+), 356 deletions(-) delete mode 100644 prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImplTest.java (limited to 'prh-app-server/src/test') diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/TestAppConfiguration.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/TestAppConfiguration.java index 9dca398a..fb0b1b43 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/TestAppConfiguration.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/TestAppConfiguration.java @@ -20,51 +20,38 @@ package org.onap.dcaegen2.services.prh; +import org.onap.dcaegen2.services.sdk.model.streams.dmaap.ImmutableMessageRouterSink; +import org.onap.dcaegen2.services.sdk.model.streams.dmaap.ImmutableMessageRouterSource; import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.ImmutableAaiClientConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.ImmutableDmaapConsumerConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.ImmutableDmaapPublisherConfiguration; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.ImmutableMessageRouterPublishRequest; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.ImmutableMessageRouterSubscribeRequest; + +import java.time.Duration; public class TestAppConfiguration { - public static ImmutableDmaapConsumerConfiguration createDefaultDmaapConsumerConfiguration() { - return new ImmutableDmaapConsumerConfiguration.Builder() - .endpointUrl("http://dmaap-mr:2222/events/unauthenticated.VES_PNFREG_OUTPUT") + public static ImmutableMessageRouterSubscribeRequest createDefaultMessageRouterSubscribeRequest() { + return ImmutableMessageRouterSubscribeRequest.builder() .consumerGroup("OpenDCAE-c12") + .sourceDefinition(ImmutableMessageRouterSource.builder() + .name("the topic") + .topicUrl(String.format("http://%s:%d/events/TOPIC", "www", 1234)) + .build()) .consumerId("c12") - .dmaapContentType("application/json") - .dmaapHostName("message-router.onap.svc.cluster.local") - .dmaapPortNumber(3904) - .dmaapProtocol("http") - .dmaapUserName("admin") - .dmaapUserPassword("admin") - .trustStorePath("/opt/app/prh/local/org.onap.prh.trust.jks") - .trustStorePasswordPath("change_it") - .keyStorePath("/opt/app/prh/local/org.onap.prh.p12") - .keyStorePasswordPath("change_it") - .enableDmaapCertAuth(false) - .dmaapTopicName("/events/unauthenticated.SEC_OTHER_OUTPUT") - .timeoutMs(-1) - .messageLimit(-1) + .timeout(Duration.ofMillis(1)) .build(); } - public static ImmutableDmaapPublisherConfiguration createDefaultDmaapPublisherConfiguration() { - return new ImmutableDmaapPublisherConfiguration.Builder() - .endpointUrl("http://dmaap-mr:2222/events/unauthenticated.PNF_READY") - .dmaapContentType("application/json") - .dmaapHostName("message-router.onap.svc.cluster.local") - .dmaapPortNumber(3904) - .dmaapProtocol("http") - .dmaapUserName("admin") - .dmaapUserPassword("admin") - .trustStorePath("/opt/app/prh/local/org.onap.prh.trust.jks") - .trustStorePasswordPath("change_it") - .keyStorePath("/opt/app/prh/local/org.onap.prh.p12") - .keyStorePasswordPath("change_it") - .enableDmaapCertAuth(false) - .dmaapTopicName("/events/unauthenticated.PNF_READY") + public static ImmutableMessageRouterPublishRequest createDefaultMessageRouterPublishRequest() { + return ImmutableMessageRouterPublishRequest.builder() + .contentType("application/json") + .sinkDefinition(ImmutableMessageRouterSink.builder() + .name("the topic") + .topicUrl(String.format("http://%s:%d/events/TOPIC", "www", 1234)) + .build()) .build(); - } + + } public static ImmutableAaiClientConfiguration createDefaultAaiClientConfiguration() { return new ImmutableAaiClientConfiguration.Builder() diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/configuration/ConsulConfigurationParserTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/configuration/ConsulConfigurationParserTest.java index 8a2a498f..350cee68 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/configuration/ConsulConfigurationParserTest.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/configuration/ConsulConfigurationParserTest.java @@ -20,21 +20,22 @@ package org.onap.dcaegen2.services.prh.configuration; -import static java.lang.ClassLoader.getSystemResource; -import static org.assertj.core.api.Assertions.assertThat; - import com.google.gson.Gson; import com.google.gson.JsonObject; -import java.nio.file.Files; -import java.nio.file.Paths; import org.junit.jupiter.api.Test; import org.onap.dcaegen2.services.prh.TestAppConfiguration; import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.AaiClientConfiguration; import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.ImmutableAaiClientConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.DmaapConsumerConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.DmaapPublisherConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.ImmutableDmaapConsumerConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.ImmutableDmaapPublisherConfiguration; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.ImmutableMessageRouterPublishRequest; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishRequest; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterSubscribeRequest; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.time.Duration; + +import static java.lang.ClassLoader.getSystemResource; +import static org.assertj.core.api.Assertions.assertThat; class ConsulConfigurationParserTest { @@ -43,10 +44,8 @@ class ConsulConfigurationParserTest { new String(Files.readAllBytes(Paths.get(getSystemResource("flattened_configuration.json").toURI()))); private final ImmutableAaiClientConfiguration correctAaiClientConfig = TestAppConfiguration.createDefaultAaiClientConfiguration(); - private final ImmutableDmaapConsumerConfiguration correctDmaapConsumerConfig = - TestAppConfiguration.createDefaultDmaapConsumerConfiguration(); - private final ImmutableDmaapPublisherConfiguration correctDmaapPublisherConfig = - TestAppConfiguration.createDefaultDmaapPublisherConfiguration(); + private final ImmutableMessageRouterPublishRequest correctDmaapPublisherConfig = + TestAppConfiguration.createDefaultMessageRouterPublishRequest(); private final CbsContentParser consulConfigurationParser = new CbsContentParser( new Gson().fromJson(correctJson, JsonObject.class)); @@ -63,25 +62,25 @@ class ConsulConfigurationParserTest { assertThat(aaiClientConfig).isEqualToComparingFieldByField(correctAaiClientConfig); } - @Test - void shouldCreateDmaapConsumerConfigurationCorrectly() { - // when - DmaapConsumerConfiguration dmaapConsumerConfig = consulConfigurationParser.getDmaapConsumerConfig(); + void shouldCreateMessageRouterSubscribeRequestCorrectly() { + // given + MessageRouterSubscribeRequest messageRouterSubscribeRequest = consulConfigurationParser.getMessageRouterSubscribeRequest(); // then - assertThat(dmaapConsumerConfig).isNotNull(); - assertThat(dmaapConsumerConfig).isEqualToComparingFieldByField(correctDmaapConsumerConfig); + assertThat(messageRouterSubscribeRequest.sourceDefinition().topicUrl()).isEqualTo("http://dmaap-mr:2222/events/unauthenticated.VES_PNFREG_OUTPUT"); + assertThat(messageRouterSubscribeRequest.consumerGroup()).isEqualTo("OpenDCAE-c12"); + assertThat(messageRouterSubscribeRequest.consumerId()).isEqualTo("c12"); + assertThat(messageRouterSubscribeRequest.timeout()).isEqualTo(Duration.ofMillis(-1)); } - @Test - void shouldCreateDmaapPublisherConfigurationCorrectly() { + void shouldCreateMessageRouterPublishConfigurationCorrectly() { // when - DmaapPublisherConfiguration dmaapPublisherConfig = consulConfigurationParser.getDmaapPublisherConfig(); + MessageRouterPublishRequest messageRouterPublishRequest = consulConfigurationParser.getMessageRouterPublishRequest(); // then - assertThat(dmaapPublisherConfig).isNotNull(); - assertThat(dmaapPublisherConfig).isEqualToComparingFieldByField(correctDmaapPublisherConfig); + assertThat(messageRouterPublishRequest.contentType()).isEqualTo("application/json"); + assertThat(messageRouterPublishRequest.sinkDefinition().topicUrl()).isEqualTo("http://dmaap-mr:2222/events/unauthenticated.PNF_READY"); } } \ No newline at end of file diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParserTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParserTest.java index cdcef07c..98b73142 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParserTest.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParserTest.java @@ -20,21 +20,24 @@ package org.onap.dcaegen2.services.prh.service; -import static org.mockito.Mockito.spy; - import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import java.util.Optional; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel; import org.onap.dcaegen2.services.prh.model.ImmutableConsumerDmaapModel; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.ImmutableMessageRouterSubscribeResponse; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterSubscribeResponse; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; +import java.util.Optional; + +import static org.mockito.Mockito.spy; + /** * @author Przemysław Wąsala on 5/8/18 */ @@ -101,6 +104,7 @@ class DmaapConsumerJsonParserTest { .build(); JsonArray messageAsJsonArray = (JsonArray) jsonParser.parse(message); + MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonArray).build(); //when DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser()); @@ -109,7 +113,7 @@ class DmaapConsumerJsonParserTest { .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement); ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser - .getJsonObject(Mono.just((messageAsJsonArray))).blockFirst(); + .getJsonObject(Mono.just((response))).blockFirst(); //then Assertions.assertNotNull(consumerDmaapModel); Assertions.assertEquals(expectedObject, consumerDmaapModel); @@ -163,15 +167,15 @@ class DmaapConsumerJsonParserTest { .nfRole("gNB") .swVersion("v4.5.0.1") .build(); - JsonArray mesageAsJsonArray = (JsonArray) jsonParser.parse(message); - + JsonArray messageAsJsonArray = (JsonArray) jsonParser.parse(message); + MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonArray).build(); //when DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser()); JsonElement jsonElement = new JsonParser().parse(parsed); Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())) .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement); ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser - .getJsonObject(Mono.just((mesageAsJsonArray))).blockFirst(); + .getJsonObject(Mono.just((response))).blockFirst(); //then Assertions.assertNotNull(consumerDmaapModel); Assertions.assertEquals(expectedObject, consumerDmaapModel); @@ -230,6 +234,7 @@ class DmaapConsumerJsonParserTest { .build(); JsonArray messageAsJsonArray = (JsonArray) jsonParser.parse(message); + MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonArray).build(); //when DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser()); @@ -238,7 +243,7 @@ class DmaapConsumerJsonParserTest { .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement); ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser - .getJsonObject(Mono.just((messageAsJsonArray))).blockFirst(); + .getJsonObject(Mono.just((response))).blockFirst(); //then Assertions.assertNotNull(consumerDmaapModel); Assertions.assertEquals(expectedObject, consumerDmaapModel); @@ -293,6 +298,7 @@ class DmaapConsumerJsonParserTest { .build(); JsonArray messageAsJsonArray = (JsonArray) jsonParser.parse(message); + MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonArray).build(); //when DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser()); @@ -301,7 +307,7 @@ class DmaapConsumerJsonParserTest { .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement); ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser - .getJsonObject(Mono.just((messageAsJsonArray))).blockFirst(); + .getJsonObject(Mono.just((response))).blockFirst(); //then Assertions.assertNotNull(consumerDmaapModel); Assertions.assertEquals(expectedObject, consumerDmaapModel); @@ -349,8 +355,9 @@ class DmaapConsumerJsonParserTest { + "}}}]"; JsonArray incorrectMessageAsJsonArray = (JsonArray) jsonParser.parse(incorrectMessage); + MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(incorrectMessageAsJsonArray).build(); - StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(incorrectMessageAsJsonArray))) + StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(response))) .expectSubscription().thenRequest(1).verifyComplete(); } @@ -394,8 +401,9 @@ class DmaapConsumerJsonParserTest { + "}}}]"; JsonArray jsonWithoutSourceNameAsJsonArray = (JsonArray) jsonParser.parse(jsonWithoutSourceName); + MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(jsonWithoutSourceNameAsJsonArray).build(); StepVerifier - .create(dmaapConsumerJsonParser.getJsonObject(Mono.just(jsonWithoutSourceNameAsJsonArray))) + .create(dmaapConsumerJsonParser.getJsonObject(Mono.just(response))) .expectSubscription().thenRequest(1) .verifyComplete(); @@ -444,8 +452,9 @@ class DmaapConsumerJsonParserTest { + "}}}]"; JsonArray jsonWithoutIpInformationAsJsonArray = (JsonArray) jsonParser.parse(jsonWithoutIpInformation); + MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(jsonWithoutIpInformationAsJsonArray).build(); - StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(jsonWithoutIpInformationAsJsonArray))) + StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(response))) .expectSubscription().thenRequest(1).verifyComplete(); } @@ -485,15 +494,15 @@ class DmaapConsumerJsonParserTest { + "}}}"; JsonArray messageAsJsonArray = (JsonArray) jsonParser.parse(message); - + MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonArray).build(); //when DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser()); JsonElement jsonElement = jsonParser.parse(parsed); Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())) .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement); - dmaapConsumerJsonParser.getJsonObject(Mono.just((messageAsJsonArray))); - ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser.getJsonObject(Mono.just((messageAsJsonArray))) + dmaapConsumerJsonParser.getJsonObject(Mono.just((response))); + ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser.getJsonObject(Mono.just(response)) .blockFirst(); //then ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder() @@ -560,13 +569,14 @@ class DmaapConsumerJsonParserTest { .build(); JsonArray messageAsJsonArray = (JsonArray) jsonParser.parse(message); + MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonArray).build(); //when DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser()); JsonElement jsonElement = jsonParser.parse(parsed); Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())) .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement); - ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser.getJsonObject(Mono.just((messageAsJsonArray))) + ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser.getJsonObject(Mono.just(response)) .blockFirst(); //then @@ -625,12 +635,12 @@ class DmaapConsumerJsonParserTest { .build(); JsonArray messageAsJsonArray = (JsonArray) jsonParser.parse(message); + MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonArray).build(); //when DmaapConsumerJsonParser dmaapConsumerJsonParser = new DmaapConsumerJsonParser(); //then - StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(messageAsJsonArray))) - .expectSubscription().expectNext(expectedObject).expectNext(expectedObject).verifyComplete(); + StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(response))).expectSubscription().expectNext(expectedObject).expectNext(expectedObject).verifyComplete(); } } diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiPublisherTaskSpy.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiPublisherTaskSpy.java index 18e1a27a..04388fb7 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiPublisherTaskSpy.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiPublisherTaskSpy.java @@ -20,12 +20,6 @@ package org.onap.dcaegen2.services.prh.tasks; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; - -import javax.net.ssl.SSLException; - import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration; import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel; import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.AaiClientConfiguration; @@ -34,6 +28,10 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; + /** @@ -49,7 +47,7 @@ public class AaiPublisherTaskSpy { */ @Bean @Primary - public AaiProducerTask registerSimpleAaiPublisherTask() throws SSLException { + public AaiProducerTask registerSimpleAaiPublisherTask() { CbsConfiguration cbsConfiguration = spy(CbsConfiguration.class); ConsumerDmaapModel consumerDmaapModel = spy(ConsumerDmaapModel.class); doReturn(mock(AaiClientConfiguration.class)).when(cbsConfiguration).getAaiClientConfiguration(); diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImplTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImplTest.java deleted file mode 100644 index 9afa7671..00000000 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImplTest.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * PNF-REGISTRATION-HANDLER - * ================================================================================ - * Copyright (C) 2018 NOKIA Intellectual Property. 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.dcaegen2.services.prh.tasks; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.onap.dcaegen2.services.prh.TestAppConfiguration.createDefaultDmaapConsumerConfiguration; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import java.util.Optional; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration; -import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel; -import org.onap.dcaegen2.services.prh.model.ImmutableConsumerDmaapModel; -import org.onap.dcaegen2.services.prh.service.DmaapConsumerJsonParser; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.DmaapConsumerConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.service.consumer.ConsumerReactiveHttpClientFactory; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.service.consumer.DMaaPConsumerReactiveHttpClient; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - - -/** - * @author Przemysław Wąsala on 5/17/18 - */ -class DmaapConsumerTaskImplTest { - - private static ConsumerDmaapModel consumerDmaapModel; - private static DmaapConsumerTaskImpl dmaapConsumerTask; - private static DMaaPConsumerReactiveHttpClient dMaaPConsumerReactiveHttpClient; - private static DmaapConsumerConfiguration dmaapConsumerConfiguration; - private static String message; - private static String messageContentEmpty; - private static JsonArray jsonArray; - private static JsonArray jsonArrayWrongContent; - - private static CbsConfiguration cbsConfiguration; - - @BeforeAll - static void setUp() { - dmaapConsumerConfiguration = createDefaultDmaapConsumerConfiguration(); - - JsonObject jsonObject = new JsonParser().parse("{\n" - + " \"attachmentPoint\": \"bla-bla-30-3\",\n" - + " \"cvlan\": \"678\",\n" - + " \"svlan\": \"1005\"\n" - + " }").getAsJsonObject(); - - consumerDmaapModel = ImmutableConsumerDmaapModel.builder() - .ipv4("10.16.123.234") - .ipv6("0:0:0:0:0:FFFF:0A10:7BEA") - .correlationId("NOKQTFCOC540002E") - .serialNumber("QTFCOC540002E") - .equipVendor("nokia") - .equipModel("3310") - .equipType("type") - .nfRole("gNB") - .swVersion("v4.5.0.1") - .additionalFields(jsonObject) - .build(); - cbsConfiguration = mock(CbsConfiguration.class); - - message = "[{\"event\": {" - + "\"commonEventHeader\": { " - + " \"sourceName\":\"NOKQTFCOC540002E\"," - + " \"nfNamingCode\":\"gNB\" " - + "}," - + "\"pnfRegistrationFields\": {" - + " \"vendorName\": \"nokia\"," - + " \"serialNumber\": \"QTFCOC540002E\"," - + " \"pnfRegistrationFieldsVersion\": \"2.0\"," - + " \"modelNumber\": \"3310\"," - + " \"unitType\": \"type\",\n" - + " \"unitFamily\": \"BBU\"," - + " \"oamV4IpAddress\": \"10.16.123.234\"," - + " \"softwareVersion\": \"v4.5.0.1\"," - + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\"," - + " \"additionalFields\": {\"attachmentPoint\": \"bla-bla-30-3\",\"cvlan\": \"678\",\"svlan\": \"1005\"}" - + "}}}]"; - - messageContentEmpty = "[]"; - JsonParser jsonParser = new JsonParser(); - jsonArray = (JsonArray) jsonParser.parse(message); - jsonArrayWrongContent = (JsonArray) jsonParser.parse(messageContentEmpty); - - } - - @Test - void whenPassedObjectDoesNotFit_DoesNotThrowPrhTaskException() throws Exception { - //given - prepareMocksForDmaapConsumer(Optional.of(jsonArrayWrongContent)); - - //when - Flux response = dmaapConsumerTask.execute("Sample input"); - - //then - verify(dMaaPConsumerReactiveHttpClient).getDMaaPConsumerResponse(Optional.empty()); - assertNull(response.blockFirst()); - } - - @Test - void whenPassedObjectFits_ReturnsCorrectResponse() throws Exception { - //given - prepareMocksForDmaapConsumer(Optional.of(jsonArray)); - - //when - Flux response = dmaapConsumerTask.execute("Sample input"); - - //then - verify(dMaaPConsumerReactiveHttpClient).getDMaaPConsumerResponse(Optional.empty()); - assertEquals(consumerDmaapModel, response.blockFirst()); - } - - - - private void prepareMocksForDmaapConsumer(Optional message) throws Exception { - dMaaPConsumerReactiveHttpClient = mock(DMaaPConsumerReactiveHttpClient.class); - when(dMaaPConsumerReactiveHttpClient.getDMaaPConsumerResponse(Optional.empty())) - .thenReturn(Mono.just(message.get())); - when(cbsConfiguration.getDmaapConsumerConfiguration()).thenReturn(dmaapConsumerConfiguration); - ConsumerReactiveHttpClientFactory httpClientFactory = mock(ConsumerReactiveHttpClientFactory.class); - doReturn(dMaaPConsumerReactiveHttpClient).when(httpClientFactory).create(dmaapConsumerConfiguration); - dmaapConsumerTask = new DmaapConsumerTaskImpl(cbsConfiguration, new DmaapConsumerJsonParser(), httpClientFactory); - } -} \ No newline at end of file diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskSpy.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskSpy.java index 594575e5..4c95c717 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskSpy.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskSpy.java @@ -20,19 +20,16 @@ package org.onap.dcaegen2.services.prh.tasks; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; - -import javax.net.ssl.SSLException; - import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.DmaapConsumerConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.service.consumer.DMaaPConsumerReactiveHttpClient; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishRequest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; + /** * @author Przemysław Wąsala on 3/27/18 @@ -47,13 +44,10 @@ public class DmaapConsumerTaskSpy { */ @Bean @Primary - public DmaapConsumerTask registerSimpleDmaapConsumerTask() throws SSLException { + public DmaapConsumerTask registerSimpleDmaapConsumerTask() { CbsConfiguration cbsConfiguration = spy(CbsConfiguration.class); - doReturn(mock(DmaapConsumerConfiguration.class)).when(cbsConfiguration).getDmaapConsumerConfiguration(); + doReturn(mock(MessageRouterPublishRequest.class)).when(cbsConfiguration).getMessageRouterPublishRequest(); DmaapConsumerTaskImpl dmaapConsumerTask = spy(new DmaapConsumerTaskImpl(cbsConfiguration)); - DMaaPConsumerReactiveHttpClient dmaapConsumerReactiveHttpClient = mock( - DMaaPConsumerReactiveHttpClient.class); - doReturn(dmaapConsumerReactiveHttpClient).when(dmaapConsumerTask).resolveClient(); return dmaapConsumerTask; } } diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapProducerTaskSpy.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapProducerTaskSpy.java index 77028a34..7a68bc8c 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapProducerTaskSpy.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapProducerTaskSpy.java @@ -20,20 +20,18 @@ package org.onap.dcaegen2.services.prh.tasks; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; - -import javax.net.ssl.SSLException; import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.DmaapPublisherConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.service.producer.DMaaPPublisherReactiveHttpClient; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishRequest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import java.util.function.Supplier; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; + /** * @author Przemysław Wąsala on 4/13/18 */ @@ -47,14 +45,10 @@ public class DmaapProducerTaskSpy { */ @Bean @Primary - public DmaapPublisherTask registerSimpleDmaapPublisherTask() throws SSLException { - final CbsConfiguration cbsConfiguration = spy(CbsConfiguration.class); - final Supplier configSupplier = () -> cbsConfiguration.getDmaapPublisherConfiguration(); - doReturn(mock(DmaapPublisherConfiguration.class)).when(cbsConfiguration).getDmaapPublisherConfiguration(); - final DmaapPublisherTaskImpl dmaapPublisherTask = spy(new DmaapPublisherTaskImpl(configSupplier)); - final DMaaPPublisherReactiveHttpClient extendedDmaapProducerHttpClient = mock( - DMaaPPublisherReactiveHttpClient.class); - doReturn(extendedDmaapProducerHttpClient).when(dmaapPublisherTask).resolveClient(); - return dmaapPublisherTask; + public DmaapPublisherTask registerSimpleDmaapPublisherTask() { + final CbsConfiguration cbsConfiguration = mock(CbsConfiguration.class); + final Supplier configSupplier = cbsConfiguration::getMessageRouterPublishRequest; + doReturn(mock(MessageRouterPublishRequest.class)).when(cbsConfiguration).getMessageRouterPublishRequest(); + return spy(new DmaapPublisherTaskImpl(configSupplier, new MessageRouterPublisherResolver())); } } diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImplTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImplTest.java index fb4a50ea..6347ad3d 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImplTest.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImplTest.java @@ -20,136 +20,105 @@ package org.onap.dcaegen2.services.prh.tasks; -import io.netty.handler.codec.http.HttpResponseStatus; +import com.google.gson.JsonPrimitive; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.function.Executable; -import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; import org.onap.dcaegen2.services.prh.exceptions.DmaapNotFoundException; import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException; -import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel; -import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpResponse; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.DmaapPublisherConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.service.producer.DMaaPPublisherReactiveHttpClient; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.service.producer.PublisherReactiveHttpClientFactory; -import org.onap.dcaegen2.services.sdk.rest.services.model.DmaapModel; -import org.onap.dcaegen2.services.sdk.rest.services.model.logging.RequestDiagnosticContext; -import reactor.core.publisher.Mono; -import reactor.test.StepVerifier; - -import javax.net.ssl.SSLException; -import java.util.Optional; +import org.onap.dcaegen2.services.prh.integration.junit5.mockito.MockitoExtension; +import org.onap.dcaegen2.services.prh.model.ImmutableConsumerDmaapModel; +import org.onap.dcaegen2.services.sdk.model.streams.dmaap.ImmutableMessageRouterSink; +import org.onap.dcaegen2.services.sdk.model.streams.dmaap.MessageRouterSink; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.api.MessageRouterPublisher; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.ImmutableMessageRouterPublishRequest; +import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishRequest; +import reactor.core.publisher.Flux; + import java.util.function.Supplier; -import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.*; -import static org.onap.dcaegen2.services.prh.TestAppConfiguration.createDefaultDmaapPublisherConfiguration; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; /** * @author Przemysław Wąsala on 5/17/18 */ +@ExtendWith(MockitoExtension.class) class DmaapPublisherTaskImplTest { - private static ConsumerDmaapModel consumerDmaapModel; private static DmaapPublisherTaskImpl dmaapPublisherTask; - private static DMaaPPublisherReactiveHttpClient dMaaPPublisherReactiveHttpClient; - private static CbsConfiguration cbsConfiguration; - private static DmaapPublisherConfiguration dmaapPublisherConfiguration; - private Optional requestDiagnosticContextOptionalMock; - private DmaapModel dmaapModel; - private PublisherReactiveHttpClientFactory publisherReactiveHttpClientFactory; - private Supplier configSupplier; + + @Mock + private static MessageRouterPublisherResolver messageRouterPublisherClientResolver; + @Mock + private static MessageRouterPublisher messageRouterPublisher; + + private Supplier configSupplier; + + + @Captor + private ArgumentCaptor> fluxCaptor; @BeforeEach - public void beforeEach() throws SSLException { - dmaapPublisherConfiguration = createDefaultDmaapPublisherConfiguration(); - consumerDmaapModel = mock(ConsumerDmaapModel.class); - cbsConfiguration = mock(CbsConfiguration.class); - requestDiagnosticContextOptionalMock = Optional.empty(); - dmaapModel = mock(DmaapModel.class); - dMaaPPublisherReactiveHttpClient = mock(DMaaPPublisherReactiveHttpClient.class); - publisherReactiveHttpClientFactory = mock(PublisherReactiveHttpClientFactory.class); - when(cbsConfiguration.getDmaapPublisherConfiguration()).thenReturn(dmaapPublisherConfiguration); - when(publisherReactiveHttpClientFactory.create(dmaapPublisherConfiguration)) - .thenReturn(dMaaPPublisherReactiveHttpClient); - configSupplier = () -> cbsConfiguration.getDmaapPublisherConfiguration(); + void beforeEach() { + when(messageRouterPublisherClientResolver.resolveClient()).thenReturn(messageRouterPublisher); + MessageRouterPublishRequest mrRequest = createMRRequest(); + configSupplier = () -> mrRequest; } @Test void execute_whenPassedObjectDoesntFit_ThrowsPrhTaskException() { //given - dmaapPublisherTask = new DmaapPublisherTaskImpl(configSupplier); + dmaapPublisherTask = new DmaapPublisherTaskImpl(configSupplier, messageRouterPublisherClientResolver); //when Executable executableFunction = () -> dmaapPublisherTask.execute(null); //then assertThrows(PrhTaskException.class, executableFunction, "The specified parameter is incorrect"); } - @Test - void execute_whenPassedObjectFits_ReturnsCorrectStatus() throws PrhTaskException, SSLException { + void execute_whenPassedObjectFits_ReturnsCorrectStatus() throws DmaapNotFoundException { //given - HttpResponseStatus httpResponseStatus = HttpResponseStatus.OK; - HttpResponse httpClientReponse = prepareMocksForTests(httpResponseStatus); - dmaapPublisherTask = new DmaapPublisherTaskImpl(configSupplier, publisherReactiveHttpClientFactory); - + dmaapPublisherTask = new DmaapPublisherTaskImpl(configSupplier, messageRouterPublisherClientResolver); //when - StepVerifier.create(dmaapPublisherTask.execute(consumerDmaapModel)).expectSubscription() - .expectNext(httpClientReponse); - + dmaapPublisherTask.execute(createConsumerDmaapModel()); //then - verify(dMaaPPublisherReactiveHttpClient, times(1)) - .getDMaaPProducerResponse(consumerDmaapModel, requestDiagnosticContextOptionalMock); - - verifyNoMoreInteractions(dMaaPPublisherReactiveHttpClient); + verify(messageRouterPublisher).put(eq(configSupplier.get()), fluxCaptor.capture()); + assertEquals(new JsonPrimitive("{\"correlationId\":\"NOKQTFCOC540002E\"}"), fluxCaptor.getValue().blockFirst()); } - @Test - void execute_whenPassedObjectFits_butIncorrectResponseReturns() throws DmaapNotFoundException, SSLException { - //given - HttpResponseStatus httpResponseStatus = HttpResponseStatus.UNAUTHORIZED; - HttpResponse httpClientReponse = prepareMocksForTests(httpResponseStatus); - dmaapPublisherTask = new DmaapPublisherTaskImpl(configSupplier, publisherReactiveHttpClientFactory); - //when - StepVerifier.create(dmaapPublisherTask.execute(consumerDmaapModel)).expectSubscription() - .expectNext(httpClientReponse); - - //then - verify(dMaaPPublisherReactiveHttpClient, times(1)) - .getDMaaPProducerResponse(consumerDmaapModel, requestDiagnosticContextOptionalMock); - verifyNoMoreInteractions(dMaaPPublisherReactiveHttpClient); + private ImmutableConsumerDmaapModel createConsumerDmaapModel() { + return ImmutableConsumerDmaapModel.builder() + .ipv4("10.16.123.234") + .ipv6("0:0:0:0:0:FFFF:0A10:7BEA") + .correlationId("NOKQTFCOC540002E") + .serialNumber("QTFCOC540002E") + .equipVendor("nokia") + .equipModel("3310") + .equipType("type") + .nfRole("gNB") + .swVersion("v4.5.0.1") + .additionalFields(null) + .build(); } - @Test() - void execute_whenConsumerDmaapModelIsNull() { - //given - HttpResponseStatus httpResponseStatus = HttpResponseStatus.UNAUTHORIZED; - HttpResponse httpClientReponse = prepareMocksForTests(httpResponseStatus); - dmaapPublisherTask = new DmaapPublisherTaskImpl(configSupplier, publisherReactiveHttpClientFactory); - assertThrows(DmaapNotFoundException.class, () -> { - dmaapPublisherTask.execute(null); - }); - } + private MessageRouterPublishRequest createMRRequest() { + final MessageRouterSink sinkDefinition = ImmutableMessageRouterSink.builder() + .name("the topic") + .topicUrl("http://dmaap-mr:2222/events/unauthenticated.PNF_READY") + .build(); - @Test - public void resolveClient() throws SSLException { - //given - dmaapPublisherTask = new DmaapPublisherTaskImpl(configSupplier, publisherReactiveHttpClientFactory); - //when - DMaaPPublisherReactiveHttpClient dMaaPPublisherReactiveHttpClientResolved = dmaapPublisherTask.resolveClient(); - //then - assertSame(dMaaPPublisherReactiveHttpClientResolved, dMaaPPublisherReactiveHttpClient); + return ImmutableMessageRouterPublishRequest.builder() + .sinkDefinition(sinkDefinition) + .contentType("application/json") + .build(); } - - private HttpResponse prepareMocksForTests(HttpResponseStatus httpResponseStatus) { - HttpResponse httpClientResponse = mock(HttpResponse.class); - when(httpClientResponse.statusCode()).thenReturn(httpResponseStatus.code()); - when( - dMaaPPublisherReactiveHttpClient.getDMaaPProducerResponse(dmaapModel, requestDiagnosticContextOptionalMock)) - .thenReturn(Mono.just(httpClientResponse)); - return httpClientResponse; - } - } \ No newline at end of file -- cgit 1.2.3-korg