CSIT Buscontroller SSL endpoints

Change-Id: I3de5b48f1d471f6c5e067deba7a06c19c3585de5
Signed-off-by: Dominic Lunanuova <dgl@research.att.com>
Issue-ID: DMAAP-319
Signed-off-by: Dominic Lunanuova <dgl@research.att.com>
diff --git a/test/csit/plans/dmaap-buscontroller/ssl/setup.sh b/test/csit/plans/dmaap-buscontroller/ssl/setup.sh
new file mode 100755
index 0000000..e40f62d
--- /dev/null
+++ b/test/csit/plans/dmaap-buscontroller/ssl/setup.sh
@@ -0,0 +1,45 @@
+#!/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" 3905
+MRC_IP=${IP} 
+start_mock "drps" 8443
+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}"
+
+set -x
+${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh ${DMAAPBC_IP} ${DRPS_IP} ${MRC_IP} https
+set +x
diff --git a/test/csit/plans/dmaap-buscontroller/ssl/teardown.sh b/test/csit/plans/dmaap-buscontroller/ssl/teardown.sh
new file mode 100644
index 0000000..1b041a4
--- /dev/null
+++ b/test/csit/plans/dmaap-buscontroller/ssl/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/ssl/testplan.txt b/test/csit/plans/dmaap-buscontroller/ssl/testplan.txt
new file mode 100644
index 0000000..e106e7b
--- /dev/null
+++ b/test/csit/plans/dmaap-buscontroller/ssl/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/ssl_suite
+
diff --git a/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh b/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh
index 3b604fe..bcd19b5 100755
--- a/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh
+++ b/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh
@@ -31,9 +31,9 @@
 	MRC_IP=${IP}
 
 	source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/start-mock.sh
-	#start_mock "aaf" 
-	#AAF_IP=${IP}
-	AAF_IP=0.0.0.0
+	start_mock "aaf" 
+	AAF_IP=${IP}
+	#AAF_IP=0.0.0.0
 	#start_mock "drps" 
 	#DRPS_IP=${IP}
 	DRPS_IP=0.0.0.0
diff --git a/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh b/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh
index f35b022..3feebe0 100644
--- a/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh
+++ b/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh
@@ -25,5 +25,6 @@
 then
 dmaap_mr_teardown
 kill-instance.sh dmaapbc
+kill-instance.sh aaf-mock
 fi
 
diff --git a/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh b/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh
index 96ac40f..c7cf03e 100755
--- a/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh
+++ b/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh
@@ -3,6 +3,21 @@
 # $1 is the IP address of the buscontroller
 # $2 is the IP address of the DRPS
 # $3 is the IP address of the MRC
+# $4 is the protocol (defaults to http)
+
+PROTO=${4:-http}
+if [ "$PROTO" = "http" ]
+then
+	PORT=8080
+	CURLOPT="-v"
+	MRPORT=3904
+	DRPORT=8080
+else
+	PORT=8443
+	CURLOPT="-v -k"
+	MRPORT=3905
+	DRPORT=8443
+fi
 
 # INITIALIZE: dmaap object
 JSON=/tmp/$$.dmaap
@@ -10,7 +25,7 @@
 {
 	"version": "1",
 	"topicNsRoot": "org.onap.dmaap",
-	"drProvUrl": "http://${2}:8080",
+	"drProvUrl": "http://${2}:${DRPORT}",
 	"dmaapName": "onapCSIT",
 	"bridgeAdminTopic": "MM_AGENT_PROV"
 
@@ -18,7 +33,7 @@
 EOF
 
 echo "Initializing /dmaap endpoint"
-curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/dmaap 
+curl ${CURLOPT} -X POST -d @${JSON} -H "Content-Type: application/json" ${PROTO}://$1:${PORT}/webapi/dmaap 
 
 
 
@@ -35,7 +50,7 @@
 EOF
 
 echo "Initializing /dcaeLocations endpoint"
-curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/dcaeLocations 
+curl ${CURLOPT} -X POST -d @${JSON} -H "Content-Type: application/json" ${PROTO}://$1:${PORT}/webapi/dcaeLocations 
 
 
 # INITIALIZE: MR object in 1 site
@@ -52,10 +67,10 @@
 	"dcaeLocationName": "csit-sanfrancisco",
 	"fqdn": "$DOCKER_HOST",
 	"topicProtocol" : "http",
-	"topicPort": "3904"
+	"topicPort": "${MRPORT}"
 
 }
 EOF
 
 echo "Initializing /mr_clusters endpoint"
-curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/mr_clusters
+curl ${CURLOPT} -X POST -d @${JSON} -H "Content-Type: application/json" ${PROTO}://$1:${PORT}/webapi/mr_clusters
diff --git a/test/csit/scripts/dmaap-buscontroller/onapCSIT.env b/test/csit/scripts/dmaap-buscontroller/onapCSIT.env
index 58432e6..db86581 100644
--- a/test/csit/scripts/dmaap-buscontroller/onapCSIT.env
+++ b/test/csit/scripts/dmaap-buscontroller/onapCSIT.env
@@ -8,7 +8,7 @@
 # Only need to set values where defaults aren't appropriate
 #
 cat <<!EOF
-DMAAPBC_INT_HTTPS_PORT=0
+DMAAPBC_INT_HTTPS_PORT=8443
 DMAAPBC_PG_ENABLED=false
 DMAAPBC_INSTANCE_NAME=ONAP-CSIT
 DMAAPBC_AAF_URL=https://${1}:1080/proxy/
diff --git a/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh b/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh
index c439a97..64f1720 100755
--- a/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh
+++ b/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh
@@ -31,6 +31,7 @@
 # (kafka and zk containers are not called externally)
 
 function dmaap_mr_launch() {
+		COMPOSE_PREFIX=docker-compose
 		# Clone DMaaP Message Router repo
 		mkdir -p $WORKSPACE/archives/dmaapmr
 		cd $WORKSPACE/archives/dmaapmr
@@ -45,12 +46,13 @@
 		# start DMaaP MR containers with docker compose and configuration from docker-compose.yml
 		docker login -u docker -p docker nexus3.onap.org:10001
 		docker-compose up -d
+		docker ps
 
 		# 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) ] 
+			if [ $(docker inspect --format '{{ .State.Running }}' ${COMPOSE_PREFIX}_dmaap_1) ] && \
+				[ $(docker inspect --format '{{ .State.Running }}' ${COMPOSE_PREFIX}_zookeeper_1) ] && \
+				[ $(docker inspect --format '{{ .State.Running }}' ${COMPOSE_PREFIX}_dmaap_1) ] 
 			then
 				echo "DMaaP Service Running"	
 				break    		
@@ -61,10 +63,10 @@
 		done
 
 
-		DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_dmaap_1)
+		DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${COMPOSE_PREFIX}_dmaap_1)
 		IP=${DMAAP_MR_IP}
-		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)
+		KAFKA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${COMPOSE_PREFIX}_kafka_1)
+		ZOOKEEPER_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${COMPOSE_PREFIX}_zookeeper_1)
 
 		echo DMAAP_MR_IP=${DMAAP_MR_IP}
 		echo IP=${IP}
@@ -84,9 +86,9 @@
 
 		# 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) ]
+				if [ $(docker inspect --format '{{ .State.Running }}' ${COMPOSE_PREFIX}_dmaap_1) ] && \
+						[ $(docker inspect --format '{{ .State.Running }}' ${COMPOSE_PREFIX}_zookeeper_1) ] && \
+						[ $(docker inspect --format '{{ .State.Running }}' ${COMPOSE_PREFIX}_dmaap_1) ]
 				then
 						echo "DMaaP Service Running"
 						break
diff --git a/test/csit/scripts/dmaap-message-router/dmaap-mr-teardown.sh b/test/csit/scripts/dmaap-message-router/dmaap-mr-teardown.sh
index f573857..ac6d798 100755
--- a/test/csit/scripts/dmaap-message-router/dmaap-mr-teardown.sh
+++ b/test/csit/scripts/dmaap-message-router/dmaap-mr-teardown.sh
@@ -18,7 +18,7 @@
 #
 
 function dmaap_mr_teardown() {
-kill-instance.sh dockercompose_dmaap_1 
-kill-instance.sh dockercompose_kafka_1 
-kill-instance.sh dockercompose_zookeeper_1
+kill-instance.sh docker-compose_dmaap_1 
+kill-instance.sh docker-compose_kafka_1 
+kill-instance.sh docker-compose_zookeeper_1
 }
diff --git a/test/csit/tests/dmaap-buscontroller/ssl_suite/__init__.robot b/test/csit/tests/dmaap-buscontroller/ssl_suite/__init__.robot
new file mode 100644
index 0000000..41c7a00
--- /dev/null
+++ b/test/csit/tests/dmaap-buscontroller/ssl_suite/__init__.robot
@@ -0,0 +1,3 @@
+*** Settings ***
+Documentation    dmaap-buscontroller - Suite 1
+
diff --git a/test/csit/tests/dmaap-buscontroller/ssl_suite/test1.robot b/test/csit/tests/dmaap-buscontroller/ssl_suite/test1.robot
new file mode 100644
index 0000000..999c6ba
--- /dev/null
+++ b/test/csit/tests/dmaap-buscontroller/ssl_suite/test1.robot
@@ -0,0 +1,77 @@
+*** Settings ***
+Library       OperatingSystem
+Library       RequestsLibrary
+Library       HttpLibrary.HTTP
+Library       Collections
+Library       String
+
+*** 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
+
+HTTPS Heartbeat Test
+    [Documentation]        Check ${DBC_URI}/info SSL endpoint
+    Create Session         heartbeat          https://${DMAAPBC_IP}:8443
+    CheckUrl               heartbeat          ${DBC_URI}/info   204
+
+HTTPS Dmaap Init Test
+    [Documentation]        Check ${DBC_URI}/dmaap SSL endpoint
+    Create Session         heartbeat          https://${DMAAPBC_IP}:8443
+    CheckStatus               heartbeat          ${DBC_URI}/dmaap   "VALID"
+
+HTTPS Dmaap dcaeLocations Test
+    [Documentation]        Check ${DBC_URI}/dcaeLocations SSL endpoint
+    Create Session         heartbeat          https://${DMAAPBC_IP}:8443
+    CheckStatus0               heartbeat          ${DBC_URI}/dcaeLocations   "VALID"
+
+HTTPS Dmaap mr_clusters Test
+    [Documentation]        Check ${DBC_URI}/mr_clusters SSL endpoint
+    Create Session         heartbeat          https://${DMAAPBC_IP}:8443
+    CheckStatus0               heartbeat          ${DBC_URI}/mr_clusters   "VALID"
+
+
+*** 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}
+
+CheckStatus
+    [Arguments]                  ${session}   ${path}     ${expect}
+    ${resp}=                     Get Request          ${session}               ${path}
+    log                          ${resp.content}
+    ${val}=                      Get Json value       ${resp.content}     /status
+    log                          ${val}
+    should be equal as strings   ${val}      ${expect}
+
+CheckStatus0
+    [Arguments]                  ${session}   ${path}     ${expect}
+    ${resp}=                     Get Request          ${session}               ${path}
+    log                          ${resp.json()}
+    log                          ${resp.content}
+# silliness to strip off the brackets returned for a List to get a Dict
+    ${t1}=                       Remove String       ${resp.content}       [
+    ${dict}=                     Remove String       ${t1}                 ]
+    log                          ${dict}
+    ${val}=                      Get Json value       ${dict}     /status
+    log                          ${val}
+    should be equal as strings   ${val}      ${expect}
+