From 1340c579a5f7dec89b786059d404a1a0a06d742e Mon Sep 17 00:00:00 2001 From: "halil.cakal" Date: Wed, 12 Apr 2023 15:19:45 +0100 Subject: Add verification flow in CSIT: Cm Data Subscription Create - Add Confluent Kafka Library support for Robot Framework - Add capability of testing for Kafka flows - Add CSIT test: Cm Data Notifications Subscription Create complying with CloudEvents - Change DMI version to latest for CSIT - Change DMI service name for Kafka topic extension - Change kafka listeners in docker compose Issue-ID: CPS-1613 Change-Id: Ic22cb36fdcee0f5c2bd6ff5c1876747aef563f8b Signed-off-by: halil.cakal --- .../cps-data-operations/cps-data-operations.robot | 2 +- .../cps-subscription-notification.robot | 86 ++++++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 csit/tests/cps-subscriptions/cps-subscription-notification.robot (limited to 'csit/tests') diff --git a/csit/tests/cps-data-operations/cps-data-operations.robot b/csit/tests/cps-data-operations/cps-data-operations.robot index 451fb0a42..b2912eed0 100644 --- a/csit/tests/cps-data-operations/cps-data-operations.robot +++ b/csit/tests/cps-data-operations/cps-data-operations.robot @@ -53,7 +53,7 @@ NCMP Data Operation, forwarded to DMI, response on Client Topic Sleep 5 wait some time to get published a message to the client topic Consume cloud event from client topic - ${group_id}= Create Consumer port=19092 auto_offset_reset=earliest + ${group_id}= Create Consumer auto_offset_reset=earliest Subscribe Topic topics=${topic} group_id=${group_id} ${messages}= Poll group_id=${group_id} only_value=false ${event} Set Variable ${messages}[0] diff --git a/csit/tests/cps-subscriptions/cps-subscription-notification.robot b/csit/tests/cps-subscriptions/cps-subscription-notification.robot new file mode 100644 index 000000000..b0e866579 --- /dev/null +++ b/csit/tests/cps-subscriptions/cps-subscription-notification.robot @@ -0,0 +1,86 @@ +# ============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========================================================= + + +*** Settings *** +Library ConfluentKafkaLibrary +Library Collections +Library OperatingSystem +Library RequestsLibrary + +Suite Setup Starting Test + +*** Variables *** + +${auth} Basic Y3BzdXNlcjpjcHNyMGNrcyE= +${basePath} /ncmpInventory/v1/ch + + +*** Test Cases *** +Create CM Handle + Create Session CPS_URL http://${CPS_CORE_HOST}:${CPS_CORE_PORT} + ${headers} Create Dictionary Content-Type=application/json Authorization=${auth} + ${jsonData}= Get Binary File ${DATADIR_SUBS_NOTIFICATION}${/}createCmHandleRequestBody.json + ${response}= POST On Session CPS_URL ${basePath} headers=${headers} data=${jsonData} + Should Be Equal As Strings ${response.status_code} 200 + Sleep 5 wait some time to get updated in the db + +Verify Kafka flow for Subscription Creation Notification + ${group_id}= Create Consumer + Subscribe Topic group_id=${group_id} topics=${RESPONSE_TOPIC} + Wait Until Keyword Succeeds 10x 3s All Messages Are Produced and Consumed ${group_id} + [Teardown] Basic Teardown ${group_id} + +*** Keywords *** +Starting Test + Set Suite Variable ${REQUEST_TOPIC} subscription + Set Suite Variable ${RESPONSE_TOPIC} subscription-response + ${ncmpOutEventJson}= Get File ${DATADIR_SUBS_NOTIFICATION}${/}cmSubscriptionNcmpOutEventForCsit.json + ${ncmpOutEventJson}= Evaluate json.loads("""${ncmpOutEventJson}""") json + Set Suite Variable ${ncmpOutEventJsonGlobal} ${ncmpOutEventJson} + ${thread}= Start Consumer Threaded topics=test + Set Suite Variable ${MAIN_THREAD} ${thread} + ${producer_group_id}= Create Producer + Set Suite Variable ${PRODUCER_ID} ${producer_group_id} + ${ncmpInEventJson}= Get File ${DATADIR_SUBS_NOTIFICATION}${/}cmSubscriptionNcmpInEventForCsit.json encoding=UTF-8 + Set Suite Variable ${ncmpInEventJsonGlobal} ${ncmpInEventJson} + ${headers}= Create Dictionary ce_specversion=1.0 ce_id=some-event-id ce_source=some-resource ce_type=subscriptionCreated ce_correlationid=test-cmhandle1 + Set Suite Variable ${headersGlobal} ${headers} + +All Messages Are Produced and Consumed + [Arguments] ${GROUP_ID} + Produce group_id=${PRODUCER_ID} topic=${REQUEST_TOPIC} value=${ncmpInEventJsonGlobal} headers=${headersGlobal} + Sleep 10sec + ${result}= Poll group_id=${GROUP_ID} only_value=False + ${headers} Set Variable ${result[0].headers()} + ${value} Set Variable ${result[0].value()} + ${valueAsDict}= Evaluate json.loads("""${value}""") json + ${specVersionHeaderValue} Set Variable ${headers[1][1]} + ${sourceHeaderValue} Set Variable ${headers[3][1]} + ${typeHeaderValue} Set Variable ${headers[4][1]} + ${correlationIdHeaderValue} Set Variable ${headers[6][1]} + Dictionaries Should Be Equal ${valueAsDict} ${ncmpOutEventJsonGlobal} + Should Be Equal As Strings ${specVersionHeaderValue} 1.0 + Should Be Equal As Strings ${sourceHeaderValue} NCMP + Should Be Equal As Strings ${typeHeaderValue} subscriptionCreatedStatus + Should Be Equal As Strings ${correlationIdHeaderValue} SCO-9989752cm-subscription-001 + +Basic Teardown + [Arguments] ${group_id} + Unsubscribe ${group_id} + Close Consumer ${group_id} \ No newline at end of file -- cgit 1.2.3-korg