summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--csit/data/dataOperationRequest.json12
-rwxr-xr-xcsit/plans/cps/setup.sh2
-rw-r--r--csit/plans/cps/testplan.txt3
-rwxr-xr-xcsit/prepare-csit.sh4
-rw-r--r--csit/tests/cps-data-operations/cps-data-operations.robot77
5 files changed, 96 insertions, 2 deletions
diff --git a/csit/data/dataOperationRequest.json b/csit/data/dataOperationRequest.json
new file mode 100644
index 0000000000..1b94a299dc
--- /dev/null
+++ b/csit/data/dataOperationRequest.json
@@ -0,0 +1,12 @@
+{
+ "operations": [
+ {
+ "operation": "read",
+ "operationId": "operational-12",
+ "datastore": "ncmp-datastore:passthrough-operational",
+ "options": "(fields=schemas/schema)",
+ "resourceIdentifier": "parent/child",
+ "targetIds": ["850117873c9a4936856a5081be96e6a8"]
+ }
+ ]
+} \ No newline at end of file
diff --git a/csit/plans/cps/setup.sh b/csit/plans/cps/setup.sh
index e7ad67e2b6..269d3cb29d 100755
--- a/csit/plans/cps/setup.sh
+++ b/csit/plans/cps/setup.sh
@@ -129,4 +129,4 @@ check_health $DMI_HOST:$DMI_MANAGEMENT_PORT 'dmi-plugin'
###################### ROBOT Configurations ##########################
# Pass variables required for Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v CPS_CORE_HOST:$CPS_CORE_HOST -v CPS_CORE_PORT:$CPS_CORE_PORT -v DMI_HOST:$LOCAL_IP -v DMI_PORT:$DMI_PORT -v CPS_CORE_MANAGEMENT_PORT:$CPS_CORE_MANAGEMENT_PORT -v DATADIR:$WORKSPACE/data --exitonfailure"
+ROBOT_VARIABLES="-v CPS_CORE_HOST:$CPS_CORE_HOST -v CPS_CORE_PORT:$CPS_CORE_PORT -v DMI_HOST:$LOCAL_IP -v DMI_PORT:$DMI_PORT -v DMI_CSIT_STUB_HOST:$LOCAL_IP -v DMI_CSIT_STUB_PORT:$DMI_DEMO_STUB_PORT -v CPS_CORE_MANAGEMENT_PORT:$CPS_CORE_MANAGEMENT_PORT -v DATADIR:$WORKSPACE/data --exitonfailure"
diff --git a/csit/plans/cps/testplan.txt b/csit/plans/cps/testplan.txt
index c597123588..cca11fb938 100644
--- a/csit/plans/cps/testplan.txt
+++ b/csit/plans/cps/testplan.txt
@@ -22,4 +22,5 @@ cps-data
cps-model-sync
cps-data-sync
ncmp-passthrough
-cm-handle-query \ No newline at end of file
+cm-handle-query
+cps-data-operations \ No newline at end of file
diff --git a/csit/prepare-csit.sh b/csit/prepare-csit.sh
index 78f0fbde22..fbd5dc5f0d 100755
--- a/csit/prepare-csit.sh
+++ b/csit/prepare-csit.sh
@@ -69,5 +69,9 @@ python3 -m pip install --upgrade --extra-index-url="https://nexus3.onap.org/repo
echo "Versioning information:"
python3 --version
+
+echo "Installing confluent kafka library for robot framework:"
+pip install robotframework-confluentkafkalibrary
+
pip freeze
python3 -m robot.run --version || : \ No newline at end of file
diff --git a/csit/tests/cps-data-operations/cps-data-operations.robot b/csit/tests/cps-data-operations/cps-data-operations.robot
new file mode 100644
index 0000000000..451fb0a424
--- /dev/null
+++ b/csit/tests/cps-data-operations/cps-data-operations.robot
@@ -0,0 +1,77 @@
+/*
+ * ============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 ***
+Documentation NCMP
+
+Library Collections
+Library OperatingSystem
+Library RequestsLibrary
+Library BuiltIn
+Library ConfluentKafkaLibrary
+
+Suite Setup Create Session CPS_URL http://${CPS_CORE_HOST}:${CPS_CORE_PORT}
+
+*** Variables ***
+
+${auth} Basic Y3BzdXNlcjpjcHNyMGNrcyE=
+${topic} data-operation-client-topic
+${ncmpBasePath} /ncmp
+${expectedRequestId} ${EMPTY}
+${dmipluginCsitStubUrl} http://${DMI_CSIT_STUB_HOST}:${DMI_CSIT_STUB_PORT}
+${newCmHandleRequestBody} {"dmiPlugin":"${dmipluginCsitStubUrl}","createdCmHandles":[{"cmHandle":"850117873c9a4936856a5081be96e6a8"}]}
+
+*** Test Cases ***
+
+NCMP Data Operation, forwarded to DMI, response on Client Topic
+ ${uri}= Set Variable ${ncmpBasePath}/v1/data
+ ${dataOperationReqBody}= Get Binary File ${DATADIR}${/}dataOperationRequest.json
+ ${params}= Create Dictionary topic=${topic}
+ ${headers}= Create Dictionary Content-Type=application/json Authorization=${auth}
+ POST On Session CPS_URL ncmpInventory/v1/ch headers=${headers} data=${newCmHandleRequestBody}
+ Sleep 5 wait some time to get updated the cm handle state to READY
+ ${response}= POST On Session CPS_URL ${uri} params=${params} headers=${headers} data=${dataOperationReqBody}
+ Set Global Variable ${expectedRequestId} ${response.json()}[requestId]
+ Should Be Equal As Strings ${response.status_code} 200
+ 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
+ Subscribe Topic topics=${topic} group_id=${group_id}
+ ${messages}= Poll group_id=${group_id} only_value=false
+ ${event} Set Variable ${messages}[0]
+ ${headers} Set Variable ${event.headers()}
+ ${specVersionHeaderValue} Set Variable ${headers[1][1]}
+ ${sourceHeaderValue} Set Variable ${headers[3][1]}
+ ${typeHeaderValue} Set Variable ${headers[4][1]}
+ ${correlationIdHeaderValue} Set Variable ${headers[8][1]}
+ Should Be Equal As Strings ${specVersionHeaderValue} 1.0
+ Should Be Equal As Strings ${sourceHeaderValue} DMI
+ Should Be Equal As Strings ${correlationIdHeaderValue} ${expectedRequestId}
+ Should Be Equal As Strings ${typeHeaderValue} org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent
+ [Teardown] Basic Teardown ${group_id}
+
+*** Keywords ***
+
+Basic Teardown
+ [Arguments] ${group_id}
+ Unsubscribe ${group_id}
+ Close Consumer ${group_id}
+