Add test cases for delete api 23/78123/2
authoreconwar <conor.ward@est.tech>
Fri, 8 Feb 2019 16:02:29 +0000 (16:02 +0000)
committerGary Wu <gary.i.wu@huawei.com>
Tue, 12 Feb 2019 17:57:36 +0000 (17:57 +0000)
Change-Id: If45d0cca4cbef653d6497961374fae19148070d6
Issue-ID: DMAAP-1032
Signed-off-by: econwar <conor.ward@est.tech>
plans/dmaap-datarouter/dr-suite/docker-compose/docker-compose.yml [new file with mode: 0644]
plans/dmaap-datarouter/dr-suite/setup.sh
tests/dmaap-datarouter/dr-suite/dr-suite.robot

diff --git a/plans/dmaap-datarouter/dr-suite/docker-compose/docker-compose.yml b/plans/dmaap-datarouter/dr-suite/docker-compose/docker-compose.yml
new file mode 100644 (file)
index 0000000..ed8a7c0
--- /dev/null
@@ -0,0 +1,114 @@
+#
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2019 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=========================================================
+#
+#
+version: '2.1'
+services:
+  datarouter-prov:
+    image: nexus3.onap.org:10001/onap/dmaap/datarouter-prov
+    container_name: datarouter-prov
+    hostname: dmaap-dr-prov
+    ports:
+    - "443:8443"
+    - "8443:8443"
+    - "8080:8080"
+    volumes:
+    - ./prov_data/provserver.properties:/opt/app/datartr/etc/provserver.properties
+    - ./prov_data/addSubscriber.txt:/opt/app/datartr/addSubscriber.txt
+    - ./prov_data/addFeed3.txt:/opt/app/datartr/addFeed3.txt
+    depends_on:
+      mariadb_container:
+        condition: service_healthy
+    healthcheck:
+      test: ["CMD", "curl", "-f", "http://dmaap-dr-prov:8080/internal/prov"]
+      interval: 10s
+      timeout: 30s
+      retries: 5
+    networks:
+      testing_net:
+        aliases:
+        - dmaap-dr-prov
+
+  datarouter-node:
+    image: nexus3.onap.org:10001/onap/dmaap/datarouter-node
+    container_name: datarouter-node
+    hostname: dmaap-dr-node
+    ports:
+    - "9443:8443"
+    - "9090:8080"
+    volumes:
+    - ./node_data/node.properties:/opt/app/datartr/etc/node.properties
+    depends_on:
+      datarouter-prov:
+        condition: service_healthy
+    networks:
+      testing_net:
+        aliases:
+        - dmaap-dr-node
+
+  datarouter-subscriber:
+    image: nexus3.onap.org:10001/onap/dmaap/datarouter-subscriber
+    container_name: subscriber-node
+    hostname: subscriber.com
+    ports:
+    - "7070:7070"
+    volumes:
+    - ./subscriber_data/subscriber.properties:/opt/app/subscriber/etc/subscriber.properties
+    networks:
+      testing_net:
+        aliases:
+        - subscriber.com
+
+  datarouter-subscriber2:
+    image: nexus3.onap.org:10001/onap/dmaap/datarouter-subscriber
+    container_name: subscriber-node2
+    hostname: subscriber2.com
+    ports:
+    - "7071:7070"
+    volumes:
+    - ./subscriber_data/subscriber.properties:/opt/app/subscriber/etc/subscriber.properties
+    networks:
+      testing_net:
+        aliases:
+        - subscriber2.com
+
+  mariadb_container:
+    image: mariadb:10.2.14
+    container_name: mariadb
+    hostname: datarouter-mariadb
+    ports:
+    - "3306:3306"
+    environment:
+      MYSQL_ROOT_PASSWORD: datarouter
+      MYSQL_DATABASE: datarouter
+      MYSQL_USER: datarouter
+      MYSQL_PASSWORD: datarouter
+    healthcheck:
+      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "-u", "datarouter", "-pdatarouter", "--silent"]
+      interval: 10s
+      timeout: 30s
+      retries: 5
+    networks:
+      testing_net:
+        aliases:
+        - datarouter-mariadb
+
+networks:
+  testing_net:
+    driver: bridge
index 22d727a..fa0764d 100755 (executable)
@@ -10,15 +10,17 @@ git clone --depth 1 https://gerrit.onap.org/r/dmaap/datarouter -b master
 cd datarouter
 git pull
 cd $WORKSPACE/archives/dmaapdr/datarouter/datarouter-docker-compose/src/main/resources
+cp $WORKSPACE/plans/dmaap-datarouter/dr-suite/docker-compose/docker-compose.yml .
 
-sed -i 's/10003/10001/g' docker-compose.yml
 # start DMaaP DR containers with docker compose and configuration from docker-compose.yml
 docker login -u docker -p docker nexus3.onap.org:10001
 docker-compose up -d
 
 # Wait for initialization of Docker container for datarouter-node, datarouter-prov and mariadb
 for i in {1..10}; do
-    if [ $(docker inspect --format '{{ .State.Running }}' datarouter-node) ] && \
+    if [ $(docker inspect --format '{{ .State.Running }}' subscriber-node2) ] && \
+        [ $(docker inspect --format '{{ .State.Running }}' subscriber-node) ] && \
+        [ $(docker inspect --format '{{ .State.Running }}' datarouter-node) ] && \
         [ $(docker inspect --format '{{ .State.Running }}' datarouter-prov) ] && \
         [ $(docker inspect --format '{{ .State.Running }}' mariadb) ]
     then
@@ -51,15 +53,19 @@ for i in {1..10}; do
     fi
 done
 
-DR_PROV_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' datarouter-prov)
-DR_NODE_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' datarouter-node)
+DR_PROV_IP=`get-instance-ip.sh datarouter-prov`
+DR_NODE_IP=`get-instance-ip.sh datarouter-node`
+DR_SUB_IP=`get-instance-ip.sh subscriber-node`
+DR_SUB2_IP=`get-instance-ip.sh subscriber-node2`
 DR_GATEWAY_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' datarouter-prov)
 
 echo DR_PROV_IP=${DR_PROV_IP}
 echo DR_NODE_IP=${DR_NODE_IP}
+echo DR_SUB_IP=${DR_SUB_IP}
+echo DR_SUB2_IP=${DR_SUB2_IP}
 echo DR_GATEWAY_IP=${DR_GATEWAY_IP}
 
 docker exec -i datarouter-prov sh -c "curl -k  -X PUT https://$DR_PROV_IP:8443/internal/api/PROV_AUTH_ADDRESSES?val=dmaap-dr-prov\|$DR_GATEWAY_IP"
 
 #Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v DR_PROV_IP:${DR_PROV_IP} -v DR_NODE_IP:${DR_NODE_IP}"
+ROBOT_VARIABLES="-v DR_PROV_IP:${DR_PROV_IP} -v DR_NODE_IP:${DR_NODE_IP} -v DR_SUB_IP:${DR_SUB_IP} -v DR_SUB2_IP:${DR_SUB2_IP}"
index 2270aee..fb70326 100755 (executable)
@@ -3,22 +3,30 @@ Library           OperatingSystem
 Library           RequestsLibrary
 Library           requests
 Library           Collections
+Library           Process
 Library           String
 
 *** Variables ***
-${TARGET_URL}                   https://${DR_PROV_IP}:8443
-${TARGET_URL_FEED}              https://${DR_PROV_IP}:8443/feed/1
-${TARGET_URL_SUBSCRIBE}         https://${DR_PROV_IP}:8443/subscribe/1
-${TARGET_URL_SUBSCRIPTION}      https://${DR_PROV_IP}:8443/subs/1
-${TARGET_URL_PUBLISH_PROV}      https://${DR_PROV_IP}:8443/publish/1/csit_test
-${TARGET_URL_PUBLISH_NODE}      https://${DR_NODE_IP}:8443/publish/1/csit_test
-${CREATE_FEED_DATA}             {"name": "CSIT_Test", "version": "m1.0", "description": "CSIT_Test", "business_description": "CSIT_Test", "suspend": false, "deleted": false, "changeowner": true, "authorization": {"classification": "unclassified", "endpoint_addrs": [],  "endpoint_ids": [{"password": "rs873m", "id": "rs873m"}]}}
-${UPDATE_FEED_DATA}             {"name": "CSIT_Test", "version": "m1.0", "description": "UPDATED-CSIT_Test", "business_description": "CSIT_Test", "suspend": true, "deleted": false, "changeowner": true, "authorization": {"classification": "unclassified", "endpoint_addrs": [],  "endpoint_ids": [{"password": "rs873m", "id": "rs873m"}]}}
-${SUBSCRIBE_DATA}               {"delivery":{ "url":"https://${DR_PROV_IP}:8080/",  "user":"rs873m", "password":"rs873m", "use100":true}, "metadataOnly":false, "suspend":false, "groupid":29, "subscriber":"sg481n"}
-${UPDATE_SUBSCRIPTION_DATA}     {"delivery":{ "url":"https://${DR_PROV_IP}:8080/",  "user":"sg481n", "password":"sg481n", "use100":true}, "metadataOnly":false, "suspend":true, "groupid":29, "subscriber":"sg481n"}
-${FEED_CONTENT_TYPE}            application/vnd.dmaap-dr.feed
-${SUBSCRIBE_CONTENT_TYPE}       application/vnd.dmaap-dr.subscription
-${PUBLISH_FEED_CONTENT_TYPE}    application/octet-stream
+${TARGET_URL}                       https://${DR_PROV_IP}:8443
+${TARGET_URL_FEED}                  https://${DR_PROV_IP}:8443/feed/1
+${TARGET_URL_SUBSCRIBE}             https://${DR_PROV_IP}:8443/subscribe/1
+${TARGET_URL_SUBSCRIPTION}          https://${DR_PROV_IP}:8443/subs/1
+${TARGET_URL_PUBLISH_PROV}          https://${DR_PROV_IP}:8443/publish/1/csit_test
+${TARGET_URL_PUBLISH_NODE}          https://${DR_NODE_IP}:8443/publish/1/csit_test
+${TARGET_URL_DELETE_FILE}           https://${DR_NODE_IP}:8443/delete/2
+
+${FEED_CONTENT_TYPE}                application/vnd.dmaap-dr.feed
+${SUBSCRIBE_CONTENT_TYPE}           application/vnd.dmaap-dr.subscription
+${PUBLISH_FEED_CONTENT_TYPE}        application/octet-stream
+
+${CREATE_FEED_DATA}                 {"name": "CSIT_Test", "version": "m1.0", "description": "CSIT_Test", "business_description": "CSIT_Test", "suspend": false, "deleted": false, "changeowner": true, "authorization": {"classification": "unclassified", "endpoint_addrs": [],  "endpoint_ids": [{"password": "rs873m", "id": "rs873m"}]}}
+${UPDATE_FEED_DATA}                 {"name": "CSIT_Test", "version": "m1.0", "description": "UPDATED-CSIT_Test", "business_description": "CSIT_Test", "suspend": true, "deleted": false, "changeowner": true, "authorization": {"classification": "unclassified", "endpoint_addrs": [],  "endpoint_ids": [{"password": "rs873m", "id": "rs873m"}]}}
+${SUBSCRIBE_DATA}                   {"delivery":{ "url":"http://${DR_SUB_IP}:7070/",  "user":"LOGIN", "password":"PASSWORD", "use100":true}, "metadataOnly":false, "suspend":false, "groupid":29, "subscriber":"sg481n", "privilegedSubscriber":false}
+${UPDATE_SUBSCRIPTION_DATA}         {"delivery":{ "url":"http://${DR_SUB_IP}:7070/",  "user":"sg481n", "password":"sg481n", "use100":true}, "metadataOnly":false, "suspend":true, "groupid":29, "subscriber":"sg481n", "privilegedSubscriber":false}
+${SUBSCRIBE2_DATA}                  {"delivery":{ "url":"http://${DR_SUB2_IP}:7070/",  "user":"LOGIN", "password":"PASSWORD", "use100":true}, "metadataOnly":false, "suspend":false, "groupid":29, "subscriber":"privileged", "privilegedSubscriber":true}
+
+${CLI_VERIFY_SUB_RECEIVED_FILE}     docker exec subscriber-node /bin/sh -c "ls /opt/app/subscriber/delivery | grep csit_test"
+${CLI_VERIFY_FILE_REMAINS_ON_NODE}  docker exec datarouter-node /bin/sh -c "ls /opt/app/datartr/spool/s/0/2 | grep dmaap-dr-node | grep -v .M"
 
 *** Test Cases ***
 Run Feed Creation
@@ -39,7 +47,16 @@ Run Subscribe to Feed
     Should Be Equal As Strings      ${resp.status_code}              201
     log                             'JSON Response Code:'${resp}
 
-Run Publish Feed
+Run Subscribe to Feed with Privileged Subscription
+    [Documentation]                 Subscribe to Feed with privileged subscription
+    [Timeout]                       1 minute
+    ${resp}=                        PostCall                         ${TARGET_URL_SUBSCRIBE}    ${SUBSCRIBE2_DATA}      ${SUBSCRIBE_CONTENT_TYPE}    privileged
+    log                             ${TARGET_URL_SUBSCRIBE}
+    log                             ${resp.text}
+    Should Be Equal As Strings      ${resp.status_code}              201
+    log                             'JSON Response Code:'${resp}
+
+Run Publish to Feed
     [Documentation]                 Publish to Feed
     [Timeout]                       1 minute
     Sleep                           10s                              Behaviour was noticed where feed was not created in time for publish to be sent
@@ -50,6 +67,30 @@ Run Publish Feed
     Should Be Equal As Strings      ${resp.status_code}              204
     log                             'JSON Response Code:'${resp}
 
+Verify Subscriber Received Published File
+    [Documentation]                 Verify file is delivered to datarouter-subscriber
+    [Timeout]                       1 minute
+    Sleep                           5s                               Time to allow subscriber to receive the file
+    ${cli_cmd_output}=              Run Process                      ${CLI_VERIFY_SUB_RECEIVED_FILE}        shell=yes
+    Log                             ${cli_cmd_output.stdout}
+    Should Be Equal As Strings      ${cli_cmd_output.rc}             0
+    Should Contain                  ${cli_cmd_output.stdout}         csit_test
+
+
+Verify File Remains On Privileged Subscriber And Delete It
+    [Documentation]                 Verify file has not been deleted on datarouter-node and delete it using DELETE API
+    [Timeout]                       1 minute
+    ${cli_cmd_output}=              Run Process                      ${CLI_VERIFY_FILE_REMAINS_ON_NODE}        shell=yes
+    log                             ${cli_cmd_output.stdout}
+    Should Be Equal As Strings      ${cli_cmd_output.rc}             0
+    Should Contain                  ${cli_cmd_output.stdout}         dmaap-dr-node
+    ${resp}=                        DeleteCall                       ${TARGET_URL_DELETE_FILE}/${cli_cmd_output.stdout}   rs873m
+    Should Be Equal As Strings      ${resp.status_code}              200
+    log                             'JSON Response Code:'${resp}
+    ${cli_cmd_output}=              Run Process                      ${CLI_VERIFY_FILE_REMAINS_ON_NODE}        shell=yes
+    log                             ${cli_cmd_output.stdout}
+    Should Be Equal As Strings      ${cli_cmd_output.rc}             1
+
 Run Update Subscription
     [Documentation]                 Update Subscription to suspend and change delivery credentials
     [Timeout]                       1 minute