Initial CSIT framework for dmaap/buscontroller

Change-Id: I068ccaafbeeea0d08949e83cccac56a238901aa3
Signed-off-by: dglFromAtt <dgl@research.att.com>
Issue-ID: DMAAP-318
diff --git a/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh b/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh
new file mode 100755
index 0000000..a19454b
--- /dev/null
+++ b/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+# 
+# ============LICENSE_START=======================================================
+# org.onap.dmaap
+# ================================================================================
+# Copyright (C) 2018 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=========================================================
+# 
+#
+
+
+# Place the scripts in run order:
+source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/start-mock.sh
+start_mock "aaf" 
+AAF_IP=${IP}
+start_mock "mrc" 3904
+MRC_IP=${IP} 
+start_mock "drps" 
+DRPS_IP=${IP}
+
+source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh 
+dmaapbc_launch $AAF_IP $MRC_IP $DRPS_IP
+DMAAPBC_IP=${IP}
+
+
+echo "AAF_IP=$AAF_IP MRC_IP=$MRC_IP DRPS_IP=$DRPS_IP DMAAPBC_IP=$DMAAPBC_IP"
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v AAF_IP:${AAF_IP} -v MRC_IP:${MRC_IP} -v DRPS_IP:${DRPS_IP} -v DMAAPBC_IP:${DMAAPBC_IP}"
+
diff --git a/test/csit/plans/dmaap-buscontroller/mock_downstream/teardown.sh b/test/csit/plans/dmaap-buscontroller/mock_downstream/teardown.sh
new file mode 100644
index 0000000..1b041a4
--- /dev/null
+++ b/test/csit/plans/dmaap-buscontroller/mock_downstream/teardown.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+# 
+# ============LICENSE_START=======================================================
+# org.onap.dmaap
+# ================================================================================
+# Copyright (C) 2018 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=========================================================
+# 
+#
+kill-instance.sh aaf-mock
+kill-instance.sh drps-mock
+kill-instance.sh mrc-mock
+kill-instance.sh dmaapbc
+
diff --git a/test/csit/plans/dmaap-buscontroller/mock_downstream/testplan.txt b/test/csit/plans/dmaap-buscontroller/mock_downstream/testplan.txt
new file mode 100644
index 0000000..39a2f44
--- /dev/null
+++ b/test/csit/plans/dmaap-buscontroller/mock_downstream/testplan.txt
@@ -0,0 +1,4 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+dmaap-buscontroller/suite1
+
diff --git a/test/csit/scripts/dmaap-buscontroller/.mock-aaf.sh.swp b/test/csit/scripts/dmaap-buscontroller/.mock-aaf.sh.swp
new file mode 100644
index 0000000..edadfe9
--- /dev/null
+++ b/test/csit/scripts/dmaap-buscontroller/.mock-aaf.sh.swp
Binary files differ
diff --git a/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh b/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh
new file mode 100755
index 0000000..7ec7345
--- /dev/null
+++ b/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+# $1 is the IP address of the buscontroller
+# $2 is the IP address of the DRPS
+# $3 is the IP address of the MRC
+
+# INITIALIZE: dmaap object
+JSON=/tmp/$$.dmaap
+cat << EOF > $JSON
+{
+	"version": "1",
+	"topicNsRoot": "org.onap.dmaap",
+	"drProvUrl": "http://${2}:8080",
+	"dmaapName": "onapCSIT",
+	"bridgeAdminTopic": "MM_AGENT_PROV"
+
+}
+EOF
+
+curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/dmaap 
+
+
+
+# INITIALIZE: dcaeLocation object
+JSON=/tmp/$$.loc
+cat << EOF > $JSON
+{
+	"dcaeLocationName": "csit-sanfrancisco",
+	"dcaeLayer": "central-cloud",
+	"clli": "CSIT12345",
+	"zone": "zoneA"
+
+}
+EOF
+
+curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/dcaeLocations 
+
+
+# INITIALIZE: MR object in 1 site
+JSON=/tmp/$$.mrc
+cat << EOF > $JSON
+{
+	"dcaeLocationName": "csit-sanfrancisco",
+	"fqdn": "$3",
+	"hosts" : [ "$3", "$3", "$3" ],
+	"protocol" : "https",
+	"port": "3094"
+
+}
+EOF
+
+curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/mr_clusters
diff --git a/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh b/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh
new file mode 100755
index 0000000..f8f8c24
--- /dev/null
+++ b/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# script to launch DMaaP buscontroller docker container
+# sets global var IP with assigned IP address
+
+function dmaapbc_launch() {
+	TAG=dmaap/buscontroller
+	CONTAINER_NAME=dmaapbc
+	IP=""
+
+	cd ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller
+
+	TMP_CFG=/tmp/docker-databys-controller.conf
+	. ./onapCSIT.env > $TMP_CFG
+	docker run -d --name $CONTAINER_NAME -v $TMP_CFG:/opt/app/config/conf $TAG
+	IP=`get-instance-ip.sh ${CONTAINER_NAME}`
+
+	# Wait for initialization
+	for i in {1..10}; do
+    	curl -sS ${IP}:8080 && break
+    	echo sleep $i
+    	sleep $i
+	done
+
+	set -x
+	${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh ${IP}
+	set +x
+
+	
+}
diff --git a/test/csit/scripts/dmaap-buscontroller/init-mock-aaf.sh b/test/csit/scripts/dmaap-buscontroller/init-mock-aaf.sh
new file mode 100755
index 0000000..f25404c
--- /dev/null
+++ b/test/csit/scripts/dmaap-buscontroller/init-mock-aaf.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+# $1 is the IP address of the AAF mock server
+
+#curl -v -X PUT -d @- http://$1:1080/expectation << EOF
+#{
+#	"httpRequest": {
+#		"method": "GET",
+#		"path": "/hello"
+#	},
+#	"httpResponse": {
+#		"body": "Hello world!",
+#		"statusCode": 200
+#	},
+#	"times" : {
+#		"unlimited" : true
+#	}
+#}
+#EOF
+#	"httpRequest": {
+#		"method": "POST",
+#		"path": "/proxy/authz/.*"
+#	},
+
+curl -v -X PUT -d @- http://$1:1080/expectation << EOF
+{
+	"httpRequest": {
+		"method": ".*",
+		"path": "/.*"
+	},
+	"httpResponse": {
+		"body": "Hello world!",
+		"statusCode": 200
+	},
+	"times" : {
+		"unlimited" : true
+	}
+}
+EOF
+
+#curl -v -X PUT -d @- http://$1:1080/expectation << EOF
+#{
+#	"httpRequest": {
+#		"method": "POST",
+#		"path": "/proxy/authz/role/perm"
+#	},
+#	"httpResponse": {
+#		"body": "Hello world!",
+#		"statusCode": 200
+#	}
+#}
+#EOF
+
diff --git a/test/csit/scripts/dmaap-buscontroller/init-mock-drps.sh b/test/csit/scripts/dmaap-buscontroller/init-mock-drps.sh
new file mode 100755
index 0000000..e0f1d0f
--- /dev/null
+++ b/test/csit/scripts/dmaap-buscontroller/init-mock-drps.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# $1 is the IP address of the DRPS (Data Router Provisioning Server) mock server
+
+curl -v -X PUT -d @- http://$1:1080/expectation << EOF
+{
+	"httpRequest": {
+		"method": "GET",
+		"path": "/hello"
+	},
+	"httpResponse": {
+		"body": "Hello world!",
+		"statusCode": 200
+	}
+}
+EOF
+
diff --git a/test/csit/scripts/dmaap-buscontroller/init-mock-mrc.sh b/test/csit/scripts/dmaap-buscontroller/init-mock-mrc.sh
new file mode 100755
index 0000000..75c1a41
--- /dev/null
+++ b/test/csit/scripts/dmaap-buscontroller/init-mock-mrc.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# $1 is the IP address of the MRC (MR Central) mock server
+
+curl -v -X PUT -d @- http://$1:1080/expectation << EOF
+{
+	"httpRequest": {
+		"method": "GET",
+		"path": "/hello"
+	},
+	"httpResponse": {
+		"body": "Hello world!",
+		"statusCode": 200
+	}
+}
+EOF
+
diff --git a/test/csit/scripts/dmaap-buscontroller/onapCSIT.env b/test/csit/scripts/dmaap-buscontroller/onapCSIT.env
new file mode 100644
index 0000000..58432e6
--- /dev/null
+++ b/test/csit/scripts/dmaap-buscontroller/onapCSIT.env
@@ -0,0 +1,18 @@
+#!/bin/bash
+#
+# environment settings for Dmaap Bus Controller Integration Test.
+# assumes args are:
+#	$1 - FQDN of AAF server
+#	$2 - FQDN of MR server
+#	$3 - FQDN of DRPS Server
+# Only need to set values where defaults aren't appropriate
+#
+cat <<!EOF
+DMAAPBC_INT_HTTPS_PORT=0
+DMAAPBC_PG_ENABLED=false
+DMAAPBC_INSTANCE_NAME=ONAP-CSIT
+DMAAPBC_AAF_URL=https://${1}:1080/proxy/
+DMAAPBC_MR_CNAME=${2}
+DMAAPBC_DRPROV_FQDN=${3}
+DMAAPBC_CSIT=Yes
+!EOF
diff --git a/test/csit/scripts/dmaap-buscontroller/start-mock.sh b/test/csit/scripts/dmaap-buscontroller/start-mock.sh
new file mode 100755
index 0000000..b4707c5
--- /dev/null
+++ b/test/csit/scripts/dmaap-buscontroller/start-mock.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# 
+# ============LICENSE_START=======================================================
+# org.onap.dmaap
+# ================================================================================
+# Copyright (C) 2018 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=========================================================
+# 
+#
+
+#
+# starts a mock server container named $1-mock
+# and runs init-mock-$1.sh to initialize it
+# modifies global var IP to provide the IP address of the started container
+function start_mock() {
+	IP=""
+	app=$1
+	port=${2:-1080}
+	docker run --name ${app}-mock -d jamesdbloom/mockserver /opt/mockserver/run_mockserver.sh -logLevel INFO -serverPort ${port} -proxyPort 1090
+	IP=`get-instance-ip.sh ${app}-mock`
+
+	# Wait for initialization
+	for i in {1..10}; do
+    	curl -sS ${IP}:${port} && break
+    	echo sleep $i
+    	sleep $i
+	done
+
+	set -x
+	${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/init-mock-${app}.sh ${IP}
+	set +x
+
+	# this is the output of this function	
+	#echo "$IP"
+}
+
diff --git a/test/csit/tests/dmaap-buscontroller/suite1/__init__.robot b/test/csit/tests/dmaap-buscontroller/suite1/__init__.robot
new file mode 100644
index 0000000..41c7a00
--- /dev/null
+++ b/test/csit/tests/dmaap-buscontroller/suite1/__init__.robot
@@ -0,0 +1,3 @@
+*** Settings ***
+Documentation    dmaap-buscontroller - Suite 1
+
diff --git a/test/csit/tests/dmaap-buscontroller/suite1/test1.robot b/test/csit/tests/dmaap-buscontroller/suite1/test1.robot
new file mode 100644
index 0000000..be4e8cc
--- /dev/null
+++ b/test/csit/tests/dmaap-buscontroller/suite1/test1.robot
@@ -0,0 +1,42 @@
+*** Settings ***
+Library       OperatingSystem
+Library       RequestsLibrary
+
+*** Variables ***
+${MESSAGE}    Hello, world!
+${DBC_URI}    /webapi
+
+*** Test Cases ***
+String Equality Test
+    Should Be Equal    ${MESSAGE}    Hello, world!
+
+Dir Test
+    [Documentation]    Check if /tmp exists
+    Log                ${MESSAGE}
+    CheckDir           /tmp
+
+Url Test
+    [Documentation]    Check if www.onap.org can be reached
+    Create Session     openo          http://www.onap.org
+    CheckUrl           openo          /                        200
+
+Mock Hello Server Test
+    [Documentation]        Check /hello endpoint
+    Create Session         hello              http://${AAF_IP}:1080
+    CheckUrl               hello              /hello           200
+
+Heartbeat Test
+    [Documentation]        Check ${DBC_URI}/info endpoint
+    Create Session         heartbeat          http://${DMAAPBC_IP}:8080
+    CheckUrl               heartbeat          ${DBC_URI}/info   204
+
+*** Keywords ***
+CheckDir
+    [Arguments]                 ${path}
+    Directory Should Exist      ${path}
+
+CheckUrl
+    [Arguments]                  ${session}   ${path}     ${expect}
+    ${resp}=                     Get Request          ${session}               ${path}
+    Should Be Equal As Integers  ${resp.status_code}  ${expect}
+