Add CSIT for DMAAP MR

Added Robot scripts and shell scripts for DMAAP MR

issue-id: DMAAP-105
Change-Id: I06a7028d7c59743220ca5153c8193e6ebc73c65e
Signed-off-by: Varun Gudisena <vg411h@att.com>
diff --git a/test/csit/plans/dmaap/mrpubsub/setup.sh b/test/csit/plans/dmaap/mrpubsub/setup.sh
new file mode 100755
index 0000000..3e8950f
--- /dev/null
+++ b/test/csit/plans/dmaap/mrpubsub/setup.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# ONAP DMAAP MR 
+# ================================================================================
+# Copyright (C) 2017 AT&T 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============================================
+# ===================================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+# Place the scripts in run order:
+source ${SCRIPTS}/common_functions.sh
+
+# Clone DMaaP Message Router repo
+mkdir -p $WORKSPACE/archives/dmaapmr
+cd $WORKSPACE/archives/dmaapmr
+#unset http_proxy https_proxy
+git clone --depth 1 http://gerrit.onap.org/r/dmaap/messagerouter/messageservice -b master
+git pull
+cd $WORKSPACE/archives/dmaapmr/messageservice/src/main/resources/docker-compose
+cp $WORKSPACE/archives/dmaapmr/messageservice/bundleconfig-local/etc/appprops/MsgRtrApi.properties /var/tmp/
+
+
+# start DMaaP MR containers with docker compose and configuration from docker-compose.yml
+docker-compose up -d
+
+# Wait for initialization of Docker contaienr for DMaaP MR, Kafka and Zookeeper
+for i in {1..50}; do
+	if [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ] && \
+		[ $(docker inspect --format '{{ .State.Running }}' dockercompose_zookeeper_1) ] && \
+		[ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ] 
+	then
+		echo "DMaaP Service Running"	
+		break    		
+	else 
+		echo sleep $i		
+		sleep $i
+	fi
+done
+
+
+DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_dmaap_1)
+KAFKA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_kafka_1)
+ZOOKEEPER_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_zookeeper_1)
+
+echo DMAAP_MR_IP=${DMAAP_MR_IP}
+echo KAFKA_IP=${KAFKA_IP}
+echo ZOOKEEPER_IP=${ZOOKEEPER_IP}
+
+# Initial docker-compose up and down is for populating kafka and zookeeper IPs in /var/tmp/MsgRtrApi.properites
+docker-compose down 
+
+# Update kafkfa and zookeeper properties in MsgRtrApi.propeties which will be copied to DMaaP Container
+sed -i -e 's/<zookeeper_host>/'$ZOOKEEPER_IP'/' /var/tmp/MsgRtrApi.properties
+sed -i -e 's/<kafka_host>:<kafka_port>/'$KAFKA_IP':9092/' /var/tmp/MsgRtrApi.properties
+
+docker-compose build
+docker-compose up -d 
+
+# Wait for initialization of Docker containers
+for i in {1..50}; do
+        if [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ] && \
+                [ $(docker inspect --format '{{ .State.Running }}' dockercompose_zookeeper_1) ] && \
+                [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ]
+        then
+                echo "DMaaP Service Running"
+                break
+        else
+                echo sleep $i
+                sleep $i
+        fi
+done
+
+# Wait for initialization of docker services
+for i in {1..50}; do
+    curl -sS -m 1 ${DMAAP_MR_IP}:3904/events/TestTopic && break 
+    echo sleep $i
+    sleep $i
+done
+
+#Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v DMAAP_MR_IP:${DMAAP_MR_IP}" 
diff --git a/test/csit/plans/dmaap/mrpubsub/teardown.sh b/test/csit/plans/dmaap/mrpubsub/teardown.sh
new file mode 100755
index 0000000..1b43032
--- /dev/null
+++ b/test/csit/plans/dmaap/mrpubsub/teardown.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# 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.
+#
+# Modifications copyright (c) 2017 AT&T Intellectual Property
+#
+
+kill-instance.sh dockercompose_dmaap_1 
+kill-instance.sh dockercompose_kafka_1 
+kill-instance.sh dockercompose_zookeeper_1
diff --git a/test/csit/plans/dmaap/mrpubsub/testplan.txt b/test/csit/plans/dmaap/mrpubsub/testplan.txt
new file mode 100644
index 0000000..6a98eb7
--- /dev/null
+++ b/test/csit/plans/dmaap/mrpubsub/testplan.txt
@@ -0,0 +1,2 @@
+# Place the suites in run order.
+dmaap/mrpubsub
diff --git a/test/csit/tests/dmaap/mrpubsub/mrpubsub.robot b/test/csit/tests/dmaap/mrpubsub/mrpubsub.robot
new file mode 100755
index 0000000..c711bd7
--- /dev/null
+++ b/test/csit/tests/dmaap/mrpubsub/mrpubsub.robot
@@ -0,0 +1,73 @@
+*** Settings ***
+Library           OperatingSystem
+Library           RequestsLibrary
+Library           requests
+Library           Collections
+Library           String
+
+*** Variables ***
+${TARGETURL_PUBLISH}        http://${DMAAP_MR_IP}:3904/events/TestTopic1
+${TARGETURL_TOPICS}         http://${DMAAP_MR_IP}:3904/topics
+${TARGETURL_SUBSCR}         http://${DMAAP_MR_IP}:3904/events/TestTopic1/CG1/C1?timeout=1000
+${TEST_DATA}                {"topicName": "TestTopic1"}
+${TOPIC_DATA}               {"topicName":"FirstTopic","topicDescription":"This is a TestTopic","partitionCount":"1","replicationCount":"3","transactionEnabled":"true"}
+
+*** Test Cases ***
+Run Topic Creation and Publish
+    [Documentation]    			  	Topic Creation
+    [Timeout]    			  	  	1 minute
+    ${resp}=    			  	  	PostCall      					${TARGETURL_PUBLISH}    	${TEST_DATA}
+    log    				          	${TARGETURL_PUBLISH}
+    log    				          	${resp.text}
+    Should Be Equal As Strings    	${resp.status_code}           	200
+    ${count}=    	              	Evaluate     					$resp.json().get('count')
+    log    				  			'JSON Response Code:'${resp}
+
+Run Subscribing a message status
+    [Documentation]    		        Subscribide message status
+    [Timeout]    			  		1 minute
+	${resp}=    			  		GetCall    						${TARGETURL_SUBSCR}
+    log    				  			${TARGETURL_SUBSCR}
+    Should Be Equal As Strings      ${resp.status_code}           	200
+    log    		                  	'JSON Response Code :'${resp}
+    
+Run check topics are exisiting
+    [Documentation]    		  		Get the count of the Topics
+    [Timeout]    			  		1 minute
+    ${resp}=    			  		GetCall                       	${TARGETURL_TOPICS}
+    log              		  		${TARGETURL_TOPICS}
+    Should Be Equal As Strings      ${resp.status_code}           	200
+    log    				  			'JSON Response Code :'${resp}
+    ${topics}=       			  	Evaluate                 	  	$resp.json().get('topics')
+    log					  			${topics}
+    ${ListLength}=    			  	Get Length                    	${topics}
+    log    				  			${ListLength}
+    List Should Contain Value 		${topics}                       TestTopic1
+
+Run Publich and Subscribe a message
+    [Documentation]    		        Publish and Subscribe the message
+    [Timeout]    			  		1 minute
+	${resp}=    			  	  	PostCall      					${TARGETURL_PUBLISH}    	${TEST_DATA}
+    log    				          	${TARGETURL_PUBLISH}
+    log    				          	${resp.text}
+    Should Be Equal As Strings    	${resp.status_code}           	200
+    ${sub_resp}=    			  		GetCall    						${TARGETURL_SUBSCR}
+    log    				  			${TARGETURL_SUBSCR}
+    Should Be Equal As Strings      ${sub_resp.status_code}           	200
+    log    		                  	'JSON Response Code :'${sub_resp}
+    ${ListLength}=                  Get Length                    	${sub_resp.json()}
+    log    				  			${ListLength}
+    List Should Contain Value       ${sub_resp.json()}    				{"topicName":"TestTopic1"}    case_insensitive=yes
+
+*** Keywords ***
+PostCall
+    [Arguments]    ${url}    		${data}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
+    ${resp}=       Evaluate    requests.post('${url}',data='${data}', headers=${headers},verify=False)    requests
+    [Return]       ${resp}
+
+GetCall
+    [Arguments]     ${url}
+    ${headers}=     Create Dictionary    Accept=application/json    Content-Type=application/json
+    ${resp}=    	Evaluate    requests.get('${url}', headers=${headers}, verify=False)    requests
+    [Return]    	${resp}