diff options
author | Toine Siebelink <toine.siebelink@est.tech> | 2023-02-09 14:38:50 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2023-02-09 14:38:50 +0000 |
commit | db90c8758d43b1daab09c760a3fe3102d772d7df (patch) | |
tree | 367c7d71026cb5596d5e361874fc67e2f89f036d | |
parent | a230fafadb6bf262abc6d77eae327a16181330e4 (diff) | |
parent | 4e30a658e44f957748e89394bc6a394fb460feaa (diff) |
Merge "Produce subscription create event for subscription-topic: cm-avc-subscription"
4 files changed, 119 insertions, 4 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumer.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumer.java index 1f0324693a..92949cbb79 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumer.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumer.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2022 Nordix Foundation + * Copyright (C) 2022-2023 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,10 +37,11 @@ public class SubscriptionEventConsumer { * * @param subscriptionEvent the event to be consumed */ - @KafkaListener(topics = "${app.ncmp.avc.subscription-topic}") + @KafkaListener(topics = "${app.ncmp.avc.subscription-topic}", + properties = {"spring.json.value.default.type=org.onap.cps.ncmp.event.model.SubscriptionEvent"}) public void consumeSubscriptionEvent(final SubscriptionEvent subscriptionEvent) { if ("CM".equals(subscriptionEvent.getEvent().getDataType().getDataCategory())) { - log.debug("Consuming event {} ...", subscriptionEvent.toString()); + log.debug("Consuming event {} ...", subscriptionEvent); if ("CREATE".equals(subscriptionEvent.getEventType().value())) { log.info("Subscription for ClientID {} with name{} ...", subscriptionEvent.getEvent().getSubscription().getClientID(), diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/notifications/avc/SubscriptionCreateProducerDemo.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/notifications/avc/SubscriptionCreateProducerDemo.groovy new file mode 100644 index 0000000000..0b13cfd8ea --- /dev/null +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/notifications/avc/SubscriptionCreateProducerDemo.groovy @@ -0,0 +1,57 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2023 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.ncmp.api.impl.notifications.avc + +import com.fasterxml.jackson.databind.ObjectMapper +import org.onap.cps.ncmp.event.model.SubscriptionEvent +import org.onap.cps.ncmp.utils.KafkaDemoProducerConfig +import org.onap.cps.ncmp.utils.TestUtils +import org.onap.cps.utils.JsonObjectMapper +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.beans.factory.annotation.Value +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.kafka.core.KafkaTemplate +import org.springframework.test.annotation.DirtiesContext +import spock.lang.Specification + +@SpringBootTest(classes = [KafkaDemoProducerConfig, ObjectMapper, JsonObjectMapper]) +@DirtiesContext +class SubscriptionCreateProducerDemo extends Specification { + + @Value('${app.ncmp.avc.subscription-topic}') + String subscriptionTopic; + + @Autowired + KafkaTemplate<String, SubscriptionEvent> kafkaTemplate + + @Autowired + JsonObjectMapper jsonObjectMapper + + def 'produce subscription creation data event for testing'() { + given: 'avc subscription creation event data' + def jsonData = TestUtils.getResourceFileContent('avcSubscriptionCreationEvent.json') + def testEventSent = jsonObjectMapper.convertJsonString(jsonData, SubscriptionEvent.class) + and: 'test event is sent' + kafkaTemplate.send(subscriptionTopic, "request-Id-98765", testEventSent); + and: 'print json data to console' + println(jsonData); + } +}
\ No newline at end of file diff --git a/cps-ncmp-service/src/test/java/org/onap/cps/ncmp/utils/KafkaDemoProducerConfig.java b/cps-ncmp-service/src/test/java/org/onap/cps/ncmp/utils/KafkaDemoProducerConfig.java new file mode 100644 index 0000000000..43d26e900f --- /dev/null +++ b/cps-ncmp-service/src/test/java/org/onap/cps/ncmp/utils/KafkaDemoProducerConfig.java @@ -0,0 +1,57 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (c) 2023 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.ncmp.utils; + +import java.util.HashMap; +import java.util.Map; +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.common.serialization.StringSerializer; +import org.onap.cps.ncmp.event.model.SubscriptionEvent; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.kafka.core.DefaultKafkaProducerFactory; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.kafka.core.ProducerFactory; +import org.springframework.kafka.support.serializer.JsonSerializer; + +@Configuration +public class KafkaDemoProducerConfig { + + /** + * Used to set kafka producer configurations. + * + * @return kafka producer factory object of subscription event + */ + @Bean + public ProducerFactory<String, SubscriptionEvent> producerFactory() { + final Map<String, Object> configProps = new HashMap<>(); + configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, + "PLAINTEXT://localhost:9092,CONNECTIONS_FROM_HOST://localhost:19092"); + configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); + configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class); + return new DefaultKafkaProducerFactory<>(configProps); + } + + @Bean + public KafkaTemplate<String, SubscriptionEvent> kafkaTemplate() { + return new KafkaTemplate<>(producerFactory()); + } +} diff --git a/cps-ncmp-service/src/test/resources/application.yml b/cps-ncmp-service/src/test/resources/application.yml index 4009e564a8..e8b4be4bcf 100644 --- a/cps-ncmp-service/src/test/resources/application.yml +++ b/cps-ncmp-service/src/test/resources/application.yml @@ -19,7 +19,7 @@ app: ncmp: avc: - subscription-topic: test-avc-subscription + subscription-topic: cm-avc-subscription ncmp: dmi: |