aboutsummaryrefslogtreecommitdiffstats
path: root/test/csit
diff options
context:
space:
mode:
Diffstat (limited to 'test/csit')
-rw-r--r--test/csit/plans/aai/resources/docker-compose.yml70
-rw-r--r--test/csit/plans/aai/resources/setup.sh95
-rw-r--r--test/csit/plans/aai/resources/teardown.sh27
-rw-r--r--test/csit/plans/aai/resources/testplan.txt3
-rwxr-xr-xtest/csit/plans/appc/healthcheck/db_query.sh66
-rwxr-xr-xtest/csit/plans/appc/healthcheck/setup.sh6
-rw-r--r--test/csit/plans/cli/sanity-check/setup.sh32
-rw-r--r--test/csit/plans/cli/sanity-check/teardown.sh17
-rw-r--r--test/csit/plans/cli/sanity-check/testplan.txt18
-rw-r--r--test/csit/plans/holmes-rule-management/sanity-check/setup.sh (renamed from test/csit/plans/holmes/sanity-check/setup.sh)4
-rw-r--r--test/csit/plans/holmes-rule-management/sanity-check/teardown.sh25
-rw-r--r--test/csit/plans/holmes-rule-management/sanity-check/testplan.txt (renamed from test/csit/plans/holmes/sanity-check/testplan.txt)0
-rwxr-xr-xtest/csit/plans/integration/vCPE/setup.sh21
-rwxr-xr-xtest/csit/plans/integration/vCPE/teardown.sh18
-rw-r--r--test/csit/plans/integration/vCPE/testplan.txt3
-rw-r--r--test/csit/plans/multicloud-ocata/functionality1/setup.sh34
-rw-r--r--test/csit/plans/multicloud-ocata/functionality1/teardown.sh15
-rw-r--r--test/csit/plans/multicloud-ocata/functionality1/testplan.txt3
-rwxr-xr-xtest/csit/plans/multicloud/functionality1/setup.sh13
-rwxr-xr-xtest/csit/plans/multicloud/functionality1/teardown.sh1
-rw-r--r--test/csit/plans/portal/testsuite/.env17
m---------test/csit/plans/portal/testsuite/portal0
-rw-r--r--test/csit/plans/portal/testsuite/setup.sh40
-rw-r--r--test/csit/plans/portal/testsuite/teardown.sh20
-rw-r--r--test/csit/plans/portal/testsuite/testplan.txt3
-rw-r--r--test/csit/plans/so/sanity-check/setup.sh29
-rw-r--r--test/csit/plans/so/sanity-check/teardown.sh6
-rwxr-xr-xtest/csit/plans/vfc-gvnfm-vnflcm/sanity-check/setup.sh61
-rwxr-xr-x[-rw-r--r--]test/csit/plans/vfc-gvnfm-vnflcm/sanity-check/teardown.sh (renamed from test/csit/plans/holmes/sanity-check/teardown.sh)9
-rw-r--r--test/csit/plans/vfc-gvnfm-vnflcm/sanity-check/testplan.txt3
-rwxr-xr-xtest/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/setup.sh44
-rwxr-xr-xtest/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/teardown.sh22
-rw-r--r--test/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/testplan.txt3
-rwxr-xr-xtest/csit/plans/vfc-gvnfm-vnfres/sanity-check/setup.sh56
-rwxr-xr-xtest/csit/plans/vfc-gvnfm-vnfres/sanity-check/teardown.sh22
-rw-r--r--test/csit/plans/vfc-gvnfm-vnfres/sanity-check/testplan.txt3
-rw-r--r--test/csit/plans/vfc-nfvo-catalog/sanity-check/setup.sh57
-rw-r--r--test/csit/plans/vfc-nfvo-catalog/sanity-check/teardown.sh22
-rw-r--r--test/csit/plans/vfc-nfvo-catalog/sanity-check/testplan.txt3
-rwxr-xr-xtest/csit/plans/vfc-nfvo-driver-ems/sanity-check/setup.sh62
-rwxr-xr-xtest/csit/plans/vfc-nfvo-driver-ems/sanity-check/teardown.sh22
-rw-r--r--test/csit/plans/vfc-nfvo-driver-ems/sanity-check/testplan.txt3
-rwxr-xr-xtest/csit/plans/vfc-nfvo-driver-sfc/sanity-check/setup.sh62
-rwxr-xr-xtest/csit/plans/vfc-nfvo-driver-sfc/sanity-check/teardown.sh22
-rw-r--r--test/csit/plans/vfc-nfvo-driver-sfc/sanity-check/testplan.txt3
-rw-r--r--test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/setup.sh67
-rw-r--r--test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/teardown.sh24
-rw-r--r--test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/testplan.txt6
-rw-r--r--test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/setup.sh67
-rw-r--r--test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/teardown.sh24
-rw-r--r--test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/testplan.txt6
-rwxr-xr-xtest/csit/plans/vfc-nfvo-lcm/sanity-check/setup.sh46
-rw-r--r--test/csit/plans/vfc-nfvo-resmanagement/sanity-check/setup.sh44
-rw-r--r--test/csit/plans/vfc-nfvo-resmanagement/sanity-check/teardown.sh22
-rw-r--r--test/csit/plans/vfc-nfvo-resmanagement/sanity-check/testplan.txt3
-rwxr-xr-xtest/csit/run-csit.sh6
-rw-r--r--test/csit/scripts/cli/startup.sh18
-rw-r--r--test/csit/tests/aai/resources/suite1/__init__.robot2
-rw-r--r--test/csit/tests/aai/resources/suite1/aai.crt70
-rw-r--r--test/csit/tests/aai/resources/suite1/aai.key32
-rw-r--r--test/csit/tests/aai/resources/suite1/pserver.robot65
-rw-r--r--test/csit/tests/appc/healthcheck/test1.robot5
-rw-r--r--test/csit/tests/appc/testsuite/APPC_Netstat.robot19
-rw-r--r--test/csit/tests/appc/testsuite/LCM_HEALTHCHECK.robot33
-rw-r--r--test/csit/tests/appc/testsuite/LCM_VM_RESTART.robot31
-rw-r--r--test/csit/tests/appc/testsuite/LCM_VNF_RESTART.robot45
-rw-r--r--test/csit/tests/clamp/TCA/01__TCA.robot (renamed from test/csit/tests/clamp/TCA/test1.robot)1
-rw-r--r--test/csit/tests/clamp/UIs/01__Create_template.robot (renamed from test/csit/tests/clamp/UIs/test1_create_template.robot)13
-rw-r--r--test/csit/tests/clamp/UIs/02__Create_model.robot (renamed from test/csit/tests/clamp/UIs/test2_create_Model.robot)1
-rw-r--r--test/csit/tests/cli/startup/__init__.robot2
-rw-r--r--test/csit/tests/cli/startup/startup_check.robot70
-rw-r--r--test/csit/tests/common.robot22
-rw-r--r--test/csit/tests/holmes/testcase/EngineMgt/EngineAddr.robot2
-rw-r--r--test/csit/tests/holmes/testcase/RuleMgt/Rule-Keywords.robot5
-rw-r--r--test/csit/tests/holmes/testcase/RuleMgt/RuleAddr.robot2
-rw-r--r--test/csit/tests/integration/vCPE/__init__.robot2
-rw-r--r--test/csit/tests/integration/vCPE/test1.robot60
-rw-r--r--test/csit/tests/multicloud-ocata/provision/sanity_test_multicloud.robot22
-rw-r--r--test/csit/tests/multicloud/provision/sanity_test_multivim.robot4
-rw-r--r--test/csit/tests/portal/testsuites/__init__.robot2
-rw-r--r--test/csit/tests/portal/testsuites/browser_setup.robot43
-rw-r--r--test/csit/tests/portal/testsuites/integration_robot_properties.py83
-rw-r--r--test/csit/tests/portal/testsuites/portal_VID.robot741
-rw-r--r--test/csit/tests/portal/testsuites/test1.robot75
-rw-r--r--test/csit/tests/so/sanity-check/data/createService.json29
-rw-r--r--test/csit/tests/so/sanity-check/data/createService_null_input.json0
-rw-r--r--test/csit/tests/so/sanity-check/data/createVnf.json35
-rw-r--r--test/csit/tests/so/sanity-check/data/deleteService.json13
-rw-r--r--test/csit/tests/so/sanity-check/data/deleteVnf.json20
-rw-r--r--test/csit/tests/so/sanity-check/sanity_test_so.robot80
-rw-r--r--test/csit/tests/vfc/gvnfm-vnflcm/test.robot21
-rw-r--r--test/csit/tests/vfc/gvnfm-vnfmgr/test.robot14
-rw-r--r--test/csit/tests/vfc/gvnfm-vnfres/test.robot21
-rw-r--r--test/csit/tests/vfc/nfvo-catalog/test.robot19
-rw-r--r--test/csit/tests/vfc/nfvo-driver-ems/test.robot15
-rw-r--r--test/csit/tests/vfc/nfvo-driver-gvnfm/gvnfmdriver.robot21
-rw-r--r--test/csit/tests/vfc/nfvo-driver-gvnfm/jujudriver.robot16
-rw-r--r--test/csit/tests/vfc/nfvo-driver-sfc/test.robot21
-rw-r--r--test/csit/tests/vfc/nfvo-driver-svnfm/huawei.robot16
-rw-r--r--test/csit/tests/vfc/nfvo-driver-svnfm/ztevmanager.robot21
-rw-r--r--test/csit/tests/vfc/nfvo-lcm/jsoninput/create_ns.json6
-rw-r--r--test/csit/tests/vfc/nfvo-lcm/test.robot56
-rw-r--r--test/csit/tests/vfc/nfvo-resmanagement/test.robot16
103 files changed, 3196 insertions, 94 deletions
diff --git a/test/csit/plans/aai/resources/docker-compose.yml b/test/csit/plans/aai/resources/docker-compose.yml
new file mode 100644
index 000000000..ab7823630
--- /dev/null
+++ b/test/csit/plans/aai/resources/docker-compose.yml
@@ -0,0 +1,70 @@
+version: '2'
+services:
+ aai-resources.api.simpledemo.openecomp.org:
+ image: ${DOCKER_REGISTRY}/openecomp/aai-resources
+ hostname: aai-resources.api.simpledemo.openecomp.org
+ environment:
+ - AAI_CHEF_ENV=simpledemo
+ - AAI_CHEF_LOC=/var/chef/aai-data/environments
+ - CHEF_BRANCH=master
+ - CHEF_GIT_URL=http://gerrit.onap.org/r/aai
+ - AAI_CORE_VERSION=1.1.0-SNAPSHOT
+ ports:
+ - 8447:8447
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "30m"
+ max-file: "5"
+ aai-traversal.api.simpledemo.openecomp.org:
+ image: ${DOCKER_REGISTRY}/openecomp/aai-traversal
+ hostname: aai-traversal.api.simpledemo.openecomp.org
+ environment:
+ - AAI_CHEF_ENV=simpledemo
+ - AAI_CHEF_LOC=/var/chef/aai-data/environments
+ - CHEF_BRANCH=master
+ - CHEF_GIT_URL=http://gerrit.onap.org/r/aai
+ - AAI_CORE_VERSION=1.1.0-SNAPSHOT
+ ports:
+ - 8446:8446
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "30m"
+ max-file: "5"
+ aai.api.simpledemo.openecomp.org:
+ image: ${AAI_HAPROXY_IMAGE}
+ hostname: aai.api.simpledemo.openecomp.org
+ ports:
+ - 8443:8443
+ links:
+ - aai-resources.api.simpledemo.openecomp.org
+ - aai-traversal.api.simpledemo.openecomp.org
+ volumes:
+ - /dev/log:/dev/log
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "30m"
+ max-file: "5"
+ aai.hbase.simpledemo.openecomp.org:
+ image: ${HBASE_IMAGE}
+ hostname: aai.hbase.simpledemo.openecomp.org
+ ports:
+ - 2181:2181
+ - 8080:8080
+ - 8085:8085
+ - 9090:9090
+ - 16000:16000
+ - 16010:16010
+ - 16201:16201
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "30m"
+ max-file: "5"
+networks:
+ default:
+ driver: bridge
+ driver_opts:
+ com.docker.network.driver.mtu: ${MTU}
diff --git a/test/csit/plans/aai/resources/setup.sh b/test/csit/plans/aai/resources/setup.sh
new file mode 100644
index 000000000..30b4b29b8
--- /dev/null
+++ b/test/csit/plans/aai/resources/setup.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+#
+# Copyright © 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.
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+source ${SCRIPTS}/common_functions.sh
+
+NEXUS_USERNAME=$(cat /opt/config/nexus_username.txt)
+NEXUS_PASSWD=$(cat /opt/config/nexus_password.txt)
+NEXUS_DOCKER_REPO=$(cat /opt/config/nexus_docker_repo.txt)
+DOCKER_IMAGE_VERSION=$(cat /opt/config/docker_version.txt)
+DOCKER_REGISTRY=${NEXUS_DOCKER_REPO}
+DOCKER_IMAGE_VERSION=1.1-STAGING-latest
+
+function wait_for_container() {
+
+ CONTAINER_NAME="$1";
+ START_TEXT="$2";
+
+ TIMEOUT=240
+
+ # wait for the real startup
+ AMOUNT_STARTUP=$(docker logs ${CONTAINER_NAME} 2>&1 | grep "$START_TEXT" | wc -l)
+ while [[ ${AMOUNT_STARTUP} -ne 1 ]];
+ do
+ echo "Waiting for '$CONTAINER_NAME' deployment to finish ..."
+ AMOUNT_STARTUP=$(docker logs ${CONTAINER_NAME} 2>&1 | grep "$START_TEXT" | wc -l)
+ if [ "$TIMEOUT" = "0" ];
+ then
+ docker logs ${CONTAINER_NAME};
+ echo "ERROR: $CONTAINER_NAME deployment failed."
+ exit 1
+ fi
+ let TIMEOUT-=1
+ sleep 1
+ done
+}
+
+DOCKER_COMPOSE_CMD="docker-compose";
+export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1);
+export DOCKER_REGISTRY="nexus3.onap.org:10001";
+export AAI_HAPROXY_IMAGE="${AAI_HAPROXY_IMAGE:-aaionap/haproxy}";
+export HBASE_IMAGE="${HBASE_IMAGE:-harisekhon/hbase}";
+
+docker pull ${DOCKER_REGISTRY}/openecomp/aai-resources:${DOCKER_IMAGE_VERSION};
+docker tag ${DOCKER_REGISTRY}/openecomp/aai-resources:${DOCKER_IMAGE_VERSION} ${DOCKER_REGISTRY}/openecomp/aai-resources:latest;
+
+docker pull ${DOCKER_REGISTRY}/openecomp/aai-traversal:${DOCKER_IMAGE_VERSION};
+docker tag ${DOCKER_REGISTRY}/openecomp/aai-traversal:${DOCKER_IMAGE_VERSION} ${DOCKER_REGISTRY}/openecomp/aai-traversal:latest;
+
+${DOCKER_COMPOSE_CMD} stop
+${DOCKER_COMPOSE_CMD} rm -f -v
+
+# Start the hbase where the data will be stored
+HBASE_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai.hbase.simpledemo.openecomp.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
+wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:8085';
+wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:8080';
+wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:9095';
+
+# Start the resources microservice
+RESOURCES_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai-resources.api.simpledemo.openecomp.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
+wait_for_container ${RESOURCES_CONTAINER_NAME} '0.0.0.0:8447';
+docker logs ${CONTAINER_NAME};
+
+# Start the traversal microservice
+GRAPH_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai-traversal.api.simpledemo.openecomp.org 2>&1 | grep 'Creating' | awk '{ print $2; }' | head -1);
+wait_for_container ${GRAPH_CONTAINER_NAME} '0.0.0.0:8446';
+
+# Start the haproxy to route requests between resources and traversal
+HAPROXY_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai.api.simpledemo.openecomp.org 2>&1 |grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
+
+echo "A&AI Microservices, resources and traversal, are up and running along with HAProxy";
+
+docker exec $GRAPH_CONTAINER_NAME "/opt/app/aai-traversal/scripts/install/updateQueryData.sh" && {
+ echo "Successfully loaded the widget related data into db";
+} || {
+ echo "Unable to load widget related data into db";
+}
+
+# Set the host ip for robot from the haproxy
+ROBOT_VARIABLES="-v HOST_IP:`ip addr show docker0 | head -3 | tail -1 | cut -d' ' -f6 | cut -d'/' -f1`"
diff --git a/test/csit/plans/aai/resources/teardown.sh b/test/csit/plans/aai/resources/teardown.sh
new file mode 100644
index 000000000..8dd6358d8
--- /dev/null
+++ b/test/csit/plans/aai/resources/teardown.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+#
+# Copyright © 2017 AT&T Intellectual Property.
+# Copyright © 2017 Amdocs
+# 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.
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+DOCKER_COMPOSE_CMD="docker-compose";
+export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1);
+export DOCKER_REGISTRY="nexus3.onap.org:10001";
+
+$DOCKER_COMPOSE_CMD stop
+$DOCKER_COMPOSE_CMD rm -f -v
+
diff --git a/test/csit/plans/aai/resources/testplan.txt b/test/csit/plans/aai/resources/testplan.txt
new file mode 100644
index 000000000..444104f94
--- /dev/null
+++ b/test/csit/plans/aai/resources/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+aai/resources/suite1
diff --git a/test/csit/plans/appc/healthcheck/db_query.sh b/test/csit/plans/appc/healthcheck/db_query.sh
new file mode 100755
index 000000000..87e0ac397
--- /dev/null
+++ b/test/csit/plans/appc/healthcheck/db_query.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+###############################################################################
+# Copyright 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.
+###############################################################################
+SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+echo $SCRIPTS
+
+sdnctl_num_tables=$(docker exec -i sdnc_db_container mysql -s -D sdnctl -u sdnctl -pgamma <<<'show tables;' 2>/dev/null | grep -v ERROR | wc -l)
+
+appcctl_num_tables=$(docker exec -i sdnc_db_container mysql -s -D appcctl -u appcctl -pappcctl <<<'show tables;' 2>/dev/null | grep -v ERROR | wc -l)
+
+
+
+docker exec -i sdnc_db_container mysql -s -D sdnctl -u sdnctl -pgamma <<<"show tables" 2>/dev/null | ( while read table_name; do
+export $table_name="$(docker exec -i sdnc_db_container mysql -s -D sdnctl -u sdnctl -pgamma <<<"select count(*) from $table_name" 2>/dev/null)"
+done
+
+if [ "$sdnctl_num_tables" -ge "1" ]; then
+ echo "There are $sdnctl_num_tables tables in the sdnctl database. "
+else
+ echo "Database sdnctl is not available."
+ exit 1;
+fi
+
+if [ "$appcctl_num_tables" -ge "1" ]; then
+ echo "There is $appcctl_num_tables table in the appcctl database. "
+else
+ echo "Database appcctl is not available."
+ exit 1;
+fi
+
+if [ "$NODE_TYPES" -eq "0" ]; then
+ echo "There is no data in table NODE_TYPES. "
+ exit 1;
+fi
+
+if [ "$SVC_LOGIC" -eq "0" ] ; then
+ echo "There is no data in table SVC_LOGIC. "
+ exit 1;
+fi
+
+if [ "$VNF_DG_MAPPING" -eq "0" ]; then
+ echo "There is no data in table VNF_DG_MAPPING. "
+ exit 1;
+fi
+
+echo "Expected table data is present."
+exit 0 )
+
+if [ "$?" -eq "1" ]; then
+ exit 1;
+fi
+
+exit 0
diff --git a/test/csit/plans/appc/healthcheck/setup.sh b/test/csit/plans/appc/healthcheck/setup.sh
index b91baa3a9..3c57cefac 100755
--- a/test/csit/plans/appc/healthcheck/setup.sh
+++ b/test/csit/plans/appc/healthcheck/setup.sh
@@ -22,6 +22,10 @@ source ${WORKSPACE}/test/csit/scripts/appc/script1.sh
export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1)
+if [ "$MTU" == "" ]; then
+ export MTU="1450"
+fi
+
# Clone APPC repo to get docker-compose for APPC
mkdir -p $WORKSPACE/archives/appc
@@ -42,7 +46,7 @@ docker pull nexus3.onap.org:10001/openecomp/dgbuilder-sdnc-image:1.1-STAGING-lat
docker tag nexus3.onap.org:10001/openecomp/dgbuilder-sdnc-image:1.1-STAGING-latest openecomp/dgbuilder-sdnc-image:latest
# start APPC containers with docker compose and configuration from docker-compose.yml
-/opt/docker/docker-compose up -d
+docker-compose up -d
# WAIT 5 minutes maximum and test every 5 seconds if APPC is up using HealthCheck API
TIME_OUT=500
diff --git a/test/csit/plans/cli/sanity-check/setup.sh b/test/csit/plans/cli/sanity-check/setup.sh
new file mode 100644
index 000000000..ca18f5176
--- /dev/null
+++ b/test/csit/plans/cli/sanity-check/setup.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+#
+# Copyright 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.
+#
+# Place the scripts in run order:
+source ${SCRIPTS}/common_functions.sh
+
+# Start auth
+docker run -d --name cli -e CLI_MODE=daemon nexus3.onap.org:10001/onap/cli:1.1-STAGING-latest
+
+# Wait for cli initialization
+echo Wait for CLI initialization
+for i in {1..40}; do
+ sleep 1
+done
+
+CLI_IP=`get-instance-ip.sh cli`
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v CLI_IP:${CLI_IP}"
diff --git a/test/csit/plans/cli/sanity-check/teardown.sh b/test/csit/plans/cli/sanity-check/teardown.sh
new file mode 100644
index 000000000..70fb6ff18
--- /dev/null
+++ b/test/csit/plans/cli/sanity-check/teardown.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+#
+# Copyright 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.
+#
+kill-instance.sh cli \ No newline at end of file
diff --git a/test/csit/plans/cli/sanity-check/testplan.txt b/test/csit/plans/cli/sanity-check/testplan.txt
new file mode 100644
index 000000000..477ddab17
--- /dev/null
+++ b/test/csit/plans/cli/sanity-check/testplan.txt
@@ -0,0 +1,18 @@
+#
+# Copyright 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.
+#
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+cli/startup/startup_check.robot
diff --git a/test/csit/plans/holmes/sanity-check/setup.sh b/test/csit/plans/holmes-rule-management/sanity-check/setup.sh
index cbe107c16..ee010a015 100644
--- a/test/csit/plans/holmes/sanity-check/setup.sh
+++ b/test/csit/plans/holmes-rule-management/sanity-check/setup.sh
@@ -17,7 +17,7 @@
# Place the scripts in run order:
# Download and start MySQL
-docker pull postgresql:9.5
+docker pull postgres:9.5
docker run --name postgres-holmes -p 5432:5432 -e POSTGRES_USER=holmes -e POSTGRES_PASSWORD=holmespwd -d postgres:9.5
DB_IP=`get-instance-ip.sh postgres-holmes`
echo DB_IP=${DB_IP}
@@ -26,7 +26,7 @@ echo DB_IP=${DB_IP}
docker login -u docker -p docker nexus3.onap.org:10001
# Start MSB
-docker run -d -p 8500:8500 --name msb_consul nexus3.onap.org:10001/onap/msb/msb_base
+docker run -d -p 8500:8500 --name msb_consul consul
CONSUL_IP=`get-instance-ip.sh msb_consul`
echo CONSUL_IP=${CONSUL_IP}
docker run -d -p 10081:10081 -e CONSUL_IP=$CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
diff --git a/test/csit/plans/holmes-rule-management/sanity-check/teardown.sh b/test/csit/plans/holmes-rule-management/sanity-check/teardown.sh
new file mode 100644
index 000000000..776522719
--- /dev/null
+++ b/test/csit/plans/holmes-rule-management/sanity-check/teardown.sh
@@ -0,0 +1,25 @@
+#!/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.
+#
+
+#kill-instance.sh i-rulemgt
+#kill-instance.sh i-engine-d
+#kill-instance.sh msb_internal_apigateway
+#kill-instance.sh msb_discovery
+#kill-instance.sh msb_consul
+#kill-instance.sh mysql-holmes
+
+
diff --git a/test/csit/plans/holmes/sanity-check/testplan.txt b/test/csit/plans/holmes-rule-management/sanity-check/testplan.txt
index e699512d7..e699512d7 100644
--- a/test/csit/plans/holmes/sanity-check/testplan.txt
+++ b/test/csit/plans/holmes-rule-management/sanity-check/testplan.txt
diff --git a/test/csit/plans/integration/vCPE/setup.sh b/test/csit/plans/integration/vCPE/setup.sh
new file mode 100755
index 000000000..1b9cc343d
--- /dev/null
+++ b/test/csit/plans/integration/vCPE/setup.sh
@@ -0,0 +1,21 @@
+#!/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.
+#
+# Place the scripts in run order:
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES=""
+
diff --git a/test/csit/plans/integration/vCPE/teardown.sh b/test/csit/plans/integration/vCPE/teardown.sh
new file mode 100755
index 000000000..8beb6e1f9
--- /dev/null
+++ b/test/csit/plans/integration/vCPE/teardown.sh
@@ -0,0 +1,18 @@
+#!/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.
+#
+
+
diff --git a/test/csit/plans/integration/vCPE/testplan.txt b/test/csit/plans/integration/vCPE/testplan.txt
new file mode 100644
index 000000000..2b3d4ad5d
--- /dev/null
+++ b/test/csit/plans/integration/vCPE/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+integration/vCPE
diff --git a/test/csit/plans/multicloud-ocata/functionality1/setup.sh b/test/csit/plans/multicloud-ocata/functionality1/setup.sh
new file mode 100644
index 000000000..5630849cf
--- /dev/null
+++ b/test/csit/plans/multicloud-ocata/functionality1/setup.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 Wind River Systems, Inc.
+#
+# 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.
+
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+source ${SCRIPTS}/common_functions.sh
+
+# start multicloud-ocata
+docker run -d --name multicloud-ocata nexus3.onap.org:10001/onap/multicloud/openstack-ocata
+SERVICE_IP=`get-instance-ip.sh multicloud-ocata`
+SERVICE_PORT=9004
+
+for i in {1..50}; do
+ curl -sS ${SERVICE_IP}:${SERVICE_PORT} && break
+ echo sleep $i
+ sleep $i
+done
+
+echo SCRIPTS
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES+="-v SERVICE_IP:${SERVICE_IP} "
+ROBOT_VARIABLES+="-v SERVICE_PORT:${SERVICE_PORT} "
diff --git a/test/csit/plans/multicloud-ocata/functionality1/teardown.sh b/test/csit/plans/multicloud-ocata/functionality1/teardown.sh
new file mode 100644
index 000000000..6ecb74ebd
--- /dev/null
+++ b/test/csit/plans/multicloud-ocata/functionality1/teardown.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 Wind River Systems, Inc.
+#
+# 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.
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh multicloud-ocata
diff --git a/test/csit/plans/multicloud-ocata/functionality1/testplan.txt b/test/csit/plans/multicloud-ocata/functionality1/testplan.txt
new file mode 100644
index 000000000..fcd795da3
--- /dev/null
+++ b/test/csit/plans/multicloud-ocata/functionality1/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+multicloud-ocata/provision/sanity_test_multicloud.robot
diff --git a/test/csit/plans/multicloud/functionality1/setup.sh b/test/csit/plans/multicloud/functionality1/setup.sh
index b43f4b856..993a39f68 100755
--- a/test/csit/plans/multicloud/functionality1/setup.sh
+++ b/test/csit/plans/multicloud/functionality1/setup.sh
@@ -17,17 +17,10 @@
# Place the scripts in run order:
# Start all process required for executing test case
-# start msb
-# Replace this when msb is ready for onap
-docker run -d --name i-msb -p 80:80 openoint/common-services-msb
-MSB_IP=`get-instance-ip.sh i-msb`
-
-# start esr
-# docker run -d --name i-esr -e MSB_ADDR=${MSB_IP}:80 openoint/common-services-extsys
+source ${SCRIPTS}/common_functions.sh
# start multivim-broker
-# Replace this when multivim-broker container is ready
-docker run -d --name multivim-broker -e MSB_ADDR=${MSB_IP}:80 openoint/multivim-broker
+docker run -d --name multivim-broker nexus3.onap.org:10001/onap/multicloud/framework
BROKER_IP=`get-instance-ip.sh multivim-broker`
for i in {1..50}; do
curl -sS ${BROKER_IP}:9001 && break
@@ -37,4 +30,4 @@ done
echo SCRIPTS
# Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v MSB_IP:${MSB_IP}"
+ROBOT_VARIABLES="-v BROKER_IP:${BROKER_IP}"
diff --git a/test/csit/plans/multicloud/functionality1/teardown.sh b/test/csit/plans/multicloud/functionality1/teardown.sh
index 4ca6dbc99..1732649af 100755
--- a/test/csit/plans/multicloud/functionality1/teardown.sh
+++ b/test/csit/plans/multicloud/functionality1/teardown.sh
@@ -16,5 +16,4 @@
#
# This script is sourced by run-csit.sh after Robot test completion.
-kill-instance.sh i-msb
kill-instance.sh multivim-broker
diff --git a/test/csit/plans/portal/testsuite/.env b/test/csit/plans/portal/testsuite/.env
new file mode 100644
index 000000000..fa3076859
--- /dev/null
+++ b/test/csit/plans/portal/testsuite/.env
@@ -0,0 +1,17 @@
+# Environment settings
+# used by docker-compose AND by other shell scripts
+
+# Host directory with config files
+PROJECT_DIR=/PROJECT/OpenSource/UbuntuEP
+
+# Directory within containers
+WEBAPPS_DIR=/opt/apache-tomcat-8.0.37/webapps
+
+# Following are ALSO used in demo/boot/portal_vm_init.sh
+EP_IMG_NAME=portal-apps
+DB_IMG_NAME=portal-db
+WMS_IMG_NAME=portal-wms
+# Tag all images with this
+PORTAL_TAG=1.1.0
+
+NEXUS_REPO=nexus3.onap.org:10003
diff --git a/test/csit/plans/portal/testsuite/portal b/test/csit/plans/portal/testsuite/portal
new file mode 160000
+Subproject e65a5d4a4852cbd0056fb3b881613f0a4dba4ec
diff --git a/test/csit/plans/portal/testsuite/setup.sh b/test/csit/plans/portal/testsuite/setup.sh
new file mode 100644
index 000000000..a6c1ba483
--- /dev/null
+++ b/test/csit/plans/portal/testsuite/setup.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# Starts docker containers for ONAP Portal in Rackspace.
+# Version for Amsterdam/R1 uses docker-compose.
+
+# be verbose
+set -x
+
+# Establish environment variables
+NEXUS_USERNAME=$(cat /opt/config/nexus_username.txt)
+NEXUS_PASSWD=$(cat /opt/config/nexus_password.txt)
+NEXUS_DOCKER_REPO=$(cat /opt/config/nexus_docker_repo.txt)
+DOCKER_IMAGE_VERSION=$(cat /opt/config/docker_version.txt)
+
+# Refresh configuration and scripts
+cd /opt/portal
+git pull
+cd deliveries
+
+# Get image names used below from docker-compose environment file
+source .env
+
+# Copy property files
+ETC=/PROJECT/OpenSource/UbuntuEP/etc
+mkdir -p $ETC
+cp -r properties_rackspace/* $ETC
+
+# Refresh images
+docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO
+docker pull $NEXUS_DOCKER_REPO/openecomp/${DB_IMG_NAME}:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/openecomp/${EP_IMG_NAME}:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/openecomp/${WMS_IMG_NAME}:$DOCKER_IMAGE_VERSION
+
+# Tag them as expected by docker-compose file
+docker tag $NEXUS_DOCKER_REPO/openecomp/${DB_IMG_NAME}:$DOCKER_IMAGE_VERSION $DB_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/openecomp/${EP_IMG_NAME}:$DOCKER_IMAGE_VERSION $EP_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/openecomp/${WMS_IMG_NAME}:$DOCKER_IMAGE_VERSION $WMS_IMG_NAME:$PORTAL_TAG
+
+# docker-compose is not in /usr/bin
+/opt/docker/docker-compose down
+/opt/docker/docker-compose up -d
diff --git a/test/csit/plans/portal/testsuite/teardown.sh b/test/csit/plans/portal/testsuite/teardown.sh
new file mode 100644
index 000000000..4214c8279
--- /dev/null
+++ b/test/csit/plans/portal/testsuite/teardown.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright 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.
+#
+
+kill-instance.sh i-mock
+
+
diff --git a/test/csit/plans/portal/testsuite/testplan.txt b/test/csit/plans/portal/testsuite/testplan.txt
new file mode 100644
index 000000000..5aba3164c
--- /dev/null
+++ b/test/csit/plans/portal/testsuite/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+portal/Healthcheck
diff --git a/test/csit/plans/so/sanity-check/setup.sh b/test/csit/plans/so/sanity-check/setup.sh
index a9c42fb4a..77a33bf65 100644
--- a/test/csit/plans/so/sanity-check/setup.sh
+++ b/test/csit/plans/so/sanity-check/setup.sh
@@ -17,21 +17,18 @@
# Place the scripts in run order:
# Start all process required for executing test case
-source ${SCRIPTS}/common_functions.sh
+#start so
+docker run -d -i -t --name=so -p 8080:8080 nexus3.onap.org:10001/openecomp/mso
-#Start gso
-run-instance.sh openoint/gso-service-manager gso " -i -t -e MSB_ADDR=${MSB_IP}:80 -e MYSQL_ADDR=${INV_ADDR}:3306"
-sleep_msg="Waiting_for_so"
-curl_path='http://'${MSB_IP}':80/api/so/v1/services'
-wait_curl_driver CURL_COMMAND=$curl_path WAIT_MESSAGE='"$sleep_msg"' REPEAT_NUMBER=25 GREP_STRING="\["
+SO_IP=`get-instance-ip.sh so`
+# Wait for initialization
+for i in {1..10}; do
+ curl -sS ${SO_IP}:1080 && break
+ echo sleep $i
+ sleep $i
+done
-#run simulator
-docker run -d -i -t --name gso_csit_simulator -e SIMULATOR_JSON=Stubs/testcase/so/main.json -p 18009:18009 -p 18008:18008 openoint/simulate-test-docker
-SIMULATOR_IP=`get-instance-ip.sh gso_csit_simulator`
-sleep_msg="Waiting_for_simulator"
-curl_path='http://'${SIMULATOR_IP}':18009/api/extsys/v1/vims'
-wait_curl_driver CURL_COMMAND=$curl_path WAIT_MESSAGE='"$sleep_msg"' REPEAT_NUMBER=16 GREP_STRING="\["
-
-
-ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v SCRIPTS:${SCRIPTS} -v SIMULATOR_IP:${SIMULATOR_IP}"
-robot ${ROBOT_VARIABLES} ${SCRIPTS}/../tests/so/sanity-check/register_simulator_to_msb.robot
+#REPO_IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' so`
+REPO_IP='127.0.0.1'
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v REPO_IP:${REPO_IP}"
diff --git a/test/csit/plans/so/sanity-check/teardown.sh b/test/csit/plans/so/sanity-check/teardown.sh
index 5cd82b7e2..a924a074f 100644
--- a/test/csit/plans/so/sanity-check/teardown.sh
+++ b/test/csit/plans/so/sanity-check/teardown.sh
@@ -15,10 +15,4 @@
# limitations under the License.
#
-#copy the logs files
-docker cp so:/service/logs/lifecyclemgr.log ${SCRIPTS}/../../../archives
-# kill micro service
-kill-instance.sh i-msb
kill-instance.sh so
-
-
diff --git a/test/csit/plans/vfc-gvnfm-vnflcm/sanity-check/setup.sh b/test/csit/plans/vfc-gvnfm-vnflcm/sanity-check/setup.sh
new file mode 100755
index 000000000..634c32722
--- /dev/null
+++ b/test/csit/plans/vfc-gvnfm-vnflcm/sanity-check/setup.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+source ${SCRIPTS}/common_functions.sh
+
+#start msb
+docker run -d -p 8500:8500 --name msb_consul consul
+MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
+
+docker run -d -p 10081:10081 -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo DISCOVERY_IP=${MSB_DISCOVERY_IP}
+
+docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IAG_IP=${MSB_IAG_IP}
+
+# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
+for i in {1..10}; do
+ curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
+ echo sleep $i
+ sleep $i
+done
+
+# wait for container initalization
+echo sleep 30
+sleep 30
+
+# start vfc-vnflcm
+docker run -d --name vfc-vnflcm -v /var/lib/mysql -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/vnflcm
+VNFLCM_IP=`get-instance-ip.sh vfc-vnflcm`
+
+# Wait for initialization
+for i in {1..10}; do
+ curl -sS -m 1 ${VNFLCM_IP}:8801 && break
+ echo sleep $i
+ sleep $i
+done
+
+docker cp vfc-vnflcm:/service/vfc/gvnfm/vnflcm/lcm/logs/runtime_lcm.log ./
+cat runtime_lcm.log
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v VNFLCM_IP:${VNFLCM_IP}"
diff --git a/test/csit/plans/holmes/sanity-check/teardown.sh b/test/csit/plans/vfc-gvnfm-vnflcm/sanity-check/teardown.sh
index 4c457dc01..f78acd37c 100644..100755
--- a/test/csit/plans/holmes/sanity-check/teardown.sh
+++ b/test/csit/plans/vfc-gvnfm-vnflcm/sanity-check/teardown.sh
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+# Copyright 2017 ZTE Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -15,11 +15,8 @@
# limitations under the License.
#
-kill-instance.sh i-rulemgt
-kill-instance.sh i-engine-d
+# This script is sourced by run-csit.sh after Robot test completion.
kill-instance.sh msb_internal_apigateway
kill-instance.sh msb_discovery
kill-instance.sh msb_consul
-kill-instance.sh mysql-holmes
-
-
+kill-instance.sh vfc-vnflcm
diff --git a/test/csit/plans/vfc-gvnfm-vnflcm/sanity-check/testplan.txt b/test/csit/plans/vfc-gvnfm-vnflcm/sanity-check/testplan.txt
new file mode 100644
index 000000000..0aa2e3e21
--- /dev/null
+++ b/test/csit/plans/vfc-gvnfm-vnflcm/sanity-check/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+vfc/gvnfm-vnflcm/test.robot
diff --git a/test/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/setup.sh b/test/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/setup.sh
new file mode 100755
index 000000000..ec315a24b
--- /dev/null
+++ b/test/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/setup.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+#login to the onap nexus docker repo
+docker login -u docker -p docker nexus3.onap.org:10001
+
+# Start MSB
+docker run -d -p 8500:8500 --name msb_consul nexus3.onap.org:10001/onap/msb/msb_base
+CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo CONSUL_IP=${CONSUL_IP}
+docker run -d -p 10081:10081 -e CONSUL_IP=$CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo DISCOVERY_IP=${DISCOVERY_IP}
+docker run -d -p 80:80 -e CONSUL_IP=$CONSUL_IP -e SDCLIENT_IP=$DISCOVERY_IP --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IP==`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IP=${MSB_IP}
+
+# start vfc-vnfmgr
+docker run -d --name vfc-vnfmgr -e MSB_ADDR=${MSB_IP}:80 nexus3.onap.org:10001/onap/vfc/vnfmgr
+VNFMGR_IP=`get-instance-ip.sh vfc-vnfmgr`
+for i in {1..10}; do
+ curl -sS ${VNFMGR_IP}:8803 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v VNFMGR_IP:${VNFMGR_IP}"
diff --git a/test/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/teardown.sh b/test/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/teardown.sh
new file mode 100755
index 000000000..572c2f336
--- /dev/null
+++ b/test/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/teardown.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh msb_internal_apigateway
+kill-instance.sh msb_discovery
+kill-instance.sh msb_consul
+kill-instance.sh vfc-vnfmgr
diff --git a/test/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/testplan.txt b/test/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/testplan.txt
new file mode 100644
index 000000000..960f7325a
--- /dev/null
+++ b/test/csit/plans/vfc-gvnfm-vnfmgr/sanity-check/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+vfc/gvnfm-vnfmgr/test.robot
diff --git a/test/csit/plans/vfc-gvnfm-vnfres/sanity-check/setup.sh b/test/csit/plans/vfc-gvnfm-vnfres/sanity-check/setup.sh
new file mode 100755
index 000000000..0139bcdcc
--- /dev/null
+++ b/test/csit/plans/vfc-gvnfm-vnfres/sanity-check/setup.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+source ${SCRIPTS}/common_functions.sh
+
+
+#start msb
+docker run -d -p 8500:8500 --name msb_consul consul
+MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
+docker run -d -p 10081:10081 -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo MSB_DISCOVERY_IP=${MSB_DISCOVERY_IP}
+docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IAG_IP=${MSB_IAG_IP}
+
+# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
+for i in {1..10}; do
+ curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
+ echo sleep $i
+ sleep $i
+done
+
+# wait for container initalization
+echo sleep 60
+sleep 60
+# start vfc-vnfres
+docker run -d --name vfc-vnfres -v /var/lib/mysql -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/vnfres
+VNFRES_IP=`get-instance-ip.sh vfc-vnfres`
+
+# Wait for initialization
+for i in {1..10}; do
+ curl -sS ${VNFRES_IP}:8802 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v VNFRES_IP:${VNFRES_IP}"
diff --git a/test/csit/plans/vfc-gvnfm-vnfres/sanity-check/teardown.sh b/test/csit/plans/vfc-gvnfm-vnfres/sanity-check/teardown.sh
new file mode 100755
index 000000000..edd857da6
--- /dev/null
+++ b/test/csit/plans/vfc-gvnfm-vnfres/sanity-check/teardown.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh msb_internal_apigateway
+kill-instance.sh msb_discovery
+kill-instance.sh msb_consul
+kill-instance.sh vfc-vnfres
diff --git a/test/csit/plans/vfc-gvnfm-vnfres/sanity-check/testplan.txt b/test/csit/plans/vfc-gvnfm-vnfres/sanity-check/testplan.txt
new file mode 100644
index 000000000..e94e29460
--- /dev/null
+++ b/test/csit/plans/vfc-gvnfm-vnfres/sanity-check/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+vfc/gvnfm-vnfres/test.robot
diff --git a/test/csit/plans/vfc-nfvo-catalog/sanity-check/setup.sh b/test/csit/plans/vfc-nfvo-catalog/sanity-check/setup.sh
new file mode 100644
index 000000000..6374b88ba
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-catalog/sanity-check/setup.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+#login to the onap nexus docker repo
+docker login -u docker -p docker nexus3.onap.org:10001
+
+# start msb
+docker run -d -p 8500:8500 --name msb_consul consul
+CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo CONSUL_IP=${CONSUL_IP}
+
+docker run -d -p 10081:10081 -e CONSUL_IP=$CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo DISCOVERY_IP=${DISCOVERY_IP}
+
+docker run -d -p 80:80 -e CONSUL_IP=$CONSUL_IP -e SDCLIENT_IP=$DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IP==`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IP=${MSB_IP}
+
+# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
+for i in {1..10}; do
+ curl -sS -m 1 ${CONSUL_IP}:8500 && curl -sS -m 1 ${DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IP}:80 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Need some time so service info can be synced from discovery to api gateway
+echo sleep 60
+sleep 60
+
+# start vfc-catalog
+docker run -d --name vfc-catalog -v /var/lib/mysql -e MSB_ADDR=${DISCOVERY_IP}:10081 nexus3.onap.org:10001/onap/vfc/catalog
+CATALOG_IP=`get-instance-ip.sh vfc-catalog`
+for i in {1..10}; do
+ curl -sS ${CATALOG_IP}:8806 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v CATALOG_IP:${CATALOG_IP} -v MSB_DISCOVERY_IP:${DISCOVERY_IP}"
diff --git a/test/csit/plans/vfc-nfvo-catalog/sanity-check/teardown.sh b/test/csit/plans/vfc-nfvo-catalog/sanity-check/teardown.sh
new file mode 100644
index 000000000..68d5b60e4
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-catalog/sanity-check/teardown.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh msb_internal_apigateway
+kill-instance.sh msb_discovery
+kill-instance.sh msb_consul
+kill-instance.sh vfc-catalog
diff --git a/test/csit/plans/vfc-nfvo-catalog/sanity-check/testplan.txt b/test/csit/plans/vfc-nfvo-catalog/sanity-check/testplan.txt
new file mode 100644
index 000000000..6c8c54a94
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-catalog/sanity-check/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+vfc/nfvo-catalog/test.robot
diff --git a/test/csit/plans/vfc-nfvo-driver-ems/sanity-check/setup.sh b/test/csit/plans/vfc-nfvo-driver-ems/sanity-check/setup.sh
new file mode 100755
index 000000000..09978ca6d
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-ems/sanity-check/setup.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+source ${SCRIPTS}/common_functions.sh
+
+#start msb
+docker run -d -p 8500:8500 --name msb_consul consul
+MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
+
+docker run -d -p 10081:10081 -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo DISCOVERY_IP=${MSB_DISCOVERY_IP}
+
+docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IAG_IP=${MSB_IAG_IP}
+
+# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
+for i in {1..10}; do
+ curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Need some time so service info can be synced from discovery to api gateway
+echo sleep 60
+sleep 60
+
+# start vfc-emsdriver
+docker run -d --name vfc-emsdriver -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/emsdriver
+EMS_DRV_IP=`get-instance-ip.sh vfc-emsdriver`
+docker logs -f vfc-emsdriver > emsdriver.log &
+
+# Wait for initialization
+for i in {1..10}; do
+ curl -sS -m 1 ${EMS_DRV_IP}:8206 && break
+ echo sleep $i
+ sleep $i
+done
+
+echo "==============="
+cat emsdriver.log
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v EMS_DRV_IP:${EMS_DRV_IP}"
diff --git a/test/csit/plans/vfc-nfvo-driver-ems/sanity-check/teardown.sh b/test/csit/plans/vfc-nfvo-driver-ems/sanity-check/teardown.sh
new file mode 100755
index 000000000..aa676b2f2
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-ems/sanity-check/teardown.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh msb_internal_apigateway
+kill-instance.sh msb_discovery
+kill-instance.sh msb_consul
+kill-instance.sh vfc-emsdriver
diff --git a/test/csit/plans/vfc-nfvo-driver-ems/sanity-check/testplan.txt b/test/csit/plans/vfc-nfvo-driver-ems/sanity-check/testplan.txt
new file mode 100644
index 000000000..747f8683e
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-ems/sanity-check/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+vfc/nfvo-driver-ems/test.robot
diff --git a/test/csit/plans/vfc-nfvo-driver-sfc/sanity-check/setup.sh b/test/csit/plans/vfc-nfvo-driver-sfc/sanity-check/setup.sh
new file mode 100755
index 000000000..45ad0cbb1
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-sfc/sanity-check/setup.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+source ${SCRIPTS}/common_functions.sh
+
+#start msb
+docker run -d -p 8500:8500 --name msb_consul consul
+MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
+
+docker run -d -p 10081:10081 -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo DISCOVERY_IP=${MSB_DISCOVERY_IP}
+
+docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IAG_IP=${MSB_IAG_IP}
+
+# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
+for i in {1..10}; do
+ curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Need some time so service info can be synced from discovery to api gateway
+echo sleep 60
+sleep 60
+
+# start vfc-ztesdncdriver
+docker run -d --name vfc-ztesdncdriver -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/ztesdncdriver
+SFC_DRV_IP=`get-instance-ip.sh vfc-ztesdncdriver`
+docker logs -f vfc-ztesdncdriver > ztesdncdriver.log &
+
+# Wait for initialization
+for i in {1..10}; do
+ curl -sS -m 1 ${SFC_DRV_IP}:8411 && break
+ echo sleep $i
+ sleep $i
+done
+
+echo "==============================="
+cat ztesdncdriver.log
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v SFC_DRV_IP:${SFC_DRV_IP}"
diff --git a/test/csit/plans/vfc-nfvo-driver-sfc/sanity-check/teardown.sh b/test/csit/plans/vfc-nfvo-driver-sfc/sanity-check/teardown.sh
new file mode 100755
index 000000000..ce5402efe
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-sfc/sanity-check/teardown.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh msb_internal_apigateway
+kill-instance.sh msb_discovery
+kill-instance.sh msb_consul
+kill-instance.sh vfc-ztesdncdriver
diff --git a/test/csit/plans/vfc-nfvo-driver-sfc/sanity-check/testplan.txt b/test/csit/plans/vfc-nfvo-driver-sfc/sanity-check/testplan.txt
new file mode 100644
index 000000000..9de2accee
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-sfc/sanity-check/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+vfc/nfvo-driver-sfc/test.robot
diff --git a/test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/setup.sh b/test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/setup.sh
new file mode 100644
index 000000000..283cb0d41
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/setup.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+source ${SCRIPTS}/common_functions.sh
+
+
+#start msb
+docker run -d -p 8500:8500 --name msb_consul consul
+MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
+docker run -d -p 10081:10081 -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo MSB_DISCOVERY_IP=${MSB_DISCOVERY_IP}
+docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IAG_IP=${MSB_IAG_IP}
+
+# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
+for i in {1..10}; do
+ curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
+ echo sleep $i
+ sleep $i
+done
+
+# wait for container initalization
+echo sleep 60
+sleep 60
+# start vfc-gvnfmdriver
+docker run -d --name vfc-gvnfmdriver -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/gvnfmdriver
+GVNFMDRIVER_IP=`get-instance-ip.sh vfc-gvnfmdriver`
+
+# Wait for initialization
+for i in {1..10}; do
+ curl -sS ${GVNFMDRIVER_IP}:8484 && break
+ echo sleep $i
+ sleep $i
+done
+
+# start vfc-jujudriver
+docker run -d --name vfc-jujudriver -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/jujudriver
+JUJUDRIVER_IP=`get-instance-ip.sh vfc-jujudriver`
+
+# Wait for initialization
+for i in {1..10}; do
+ curl -sS ${JUJUDRIVER_IP}:8483 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v GVNFMDRIVER_IP:${GVNFMDRIVER_IP} -v JUJUDRIVER_IP:${JUJUDRIVER_IP}"
diff --git a/test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/teardown.sh b/test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/teardown.sh
new file mode 100644
index 000000000..78d7c5ad9
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/teardown.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# Copyright 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.
+#
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh msb_internal_apigateway
+kill-instance.sh msb_discovery
+kill-instance.sh msb_consul
+kill-instance.sh vfc-gvnfmdriver
+
+kill-instance.sh vfc-jujudriver
diff --git a/test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/testplan.txt b/test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/testplan.txt
new file mode 100644
index 000000000..e7bee519b
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-vnfm-gvnfm/sanity-check/testplan.txt
@@ -0,0 +1,6 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+
+vfc/nfvo-driver-gvnfm/gvnfmdriver.robot
+
+vfc/nfvo-driver-gvnfm/jujudriver.robot
diff --git a/test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/setup.sh b/test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/setup.sh
new file mode 100644
index 000000000..382cb7a8d
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/setup.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# 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.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+source ${SCRIPTS}/common_functions.sh
+
+
+#start msb
+docker run -d -p 8500:8500 --name msb_consul consul
+MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
+docker run -d -p 10081:10081 -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo MSB_DISCOVERY_IP=${MSB_DISCOVERY_IP}
+docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IAG_IP=${MSB_IAG_IP}
+
+# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
+for i in {1..10}; do
+ curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
+ echo sleep $i
+ sleep $i
+done
+
+# wait for container initalization
+echo sleep 60
+sleep 60
+
+# start vfc-ztevmanagerdriver
+docker run -d --name vfc-ztevmanagerdriver -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/ztevmanagerdriver
+ZTEVMANAGERDRIVER_IP=`get-instance-ip.sh vfc-ztevmanagerdriver`
+
+# Wait for initialization
+for i in {1..10}; do
+ curl -sS ${ZTEVMANAGERDRIVER_IP}:8410 && break
+ echo sleep $i
+ sleep $i
+done
+
+
+# Start svnfm-huawei
+docker run -d --name vfc-svnfm-huawei -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/huawei
+SERVICE_IP=`get-instance-ip.sh vfc-svnfm-huawei`
+for i in {1..10}; do
+ curl -sS ${SERVICE_IP}:8482 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v ZTEVMANAGERDRIVER_IP:${ZTEVMANAGERDRIVER_IP} -v MSB_IP:${MSB_IAG_IP} -v SERVICE_IP:${SERVICE_IP}"
diff --git a/test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/teardown.sh b/test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/teardown.sh
new file mode 100644
index 000000000..e440068fb
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/teardown.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# Copyright 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.
+#
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh msb_internal_apigateway
+kill-instance.sh msb_discovery
+kill-instance.sh msb_consul
+kill-instance.sh vfc-ztevmanagerdriver
+
+kill-instance.sh vfc-svnfm-huawei
diff --git a/test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/testplan.txt b/test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/testplan.txt
new file mode 100644
index 000000000..7eb861eda
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-driver-vnfm-svnfm/sanity-check/testplan.txt
@@ -0,0 +1,6 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+
+vfc/nfvo-driver-svnfm/ztevmanager.robot
+
+vfc/nfvo-driver-svnfm/huawei.robot
diff --git a/test/csit/plans/vfc-nfvo-lcm/sanity-check/setup.sh b/test/csit/plans/vfc-nfvo-lcm/sanity-check/setup.sh
index 362909ad4..3cc53988c 100755
--- a/test/csit/plans/vfc-nfvo-lcm/sanity-check/setup.sh
+++ b/test/csit/plans/vfc-nfvo-lcm/sanity-check/setup.sh
@@ -17,28 +17,42 @@
# Place the scripts in run order:
# Start all process required for executing test case
-#login to the onap nexus docker repo
-docker login -u docker -p docker nexus3.onap.org:10001
-
-# Start MSB
-docker run -d -p 8500:8500 --name msb_consul nexus3.onap.org:10001/onap/msb/msb_base
-CONSUL_IP=`get-instance-ip.sh msb_consul`
-echo CONSUL_IP=${CONSUL_IP}
-docker run -d -p 10081:10081 -e CONSUL_IP=$CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
-DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
-echo DISCOVERY_IP=${DISCOVERY_IP}
-docker run -d -p 80:80 -e CONSUL_IP=$CONSUL_IP -e SDCLIENT_IP=$DISCOVERY_IP --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
-MSB_IP==`get-instance-ip.sh msb_internal_apigateway`
-echo MSB_IP=${MSB_IP}
+source ${SCRIPTS}/common_functions.sh
+
+#start msb
+docker run -d -p 8500:8500 --name msb_consul consul
+MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
+
+docker run -d -p 10081:10081 -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo DISCOVERY_IP=${MSB_DISCOVERY_IP}
+
+docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IAG_IP=${MSB_IAG_IP}
+
+# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
+for i in {1..10}; do
+ curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Need some time so service info can be synced from discovery to api gateway
+echo sleep 60
+sleep 60
# start vfc-nslcm
-docker run -d --name vfc-nslcm -e MSB_ADDR=${MSB_IP}:80 nexus3.onap.org:10001/onap/vfc/nslcm
+docker run -d --name vfc-nslcm -v /var/lib/mysql -e MSB_ADDR=${MSB_IAG_IP}:80 nexus3.onap.org:10001/onap/vfc/nslcm
NSLCM_IP=`get-instance-ip.sh vfc-nslcm`
+
+# Wait for initialization
for i in {1..10}; do
- curl -sS ${NSLCM_IP}:8403 && break
+ curl -sS -m 1 ${NSLCM_IP}:8403 && break
echo sleep $i
sleep $i
done
# Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v NSLCM_IP:${NSLCM_IP}"
+ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v NSLCM_IP:${NSLCM_IP} -v SCRIPTS:${SCRIPTS}"
diff --git a/test/csit/plans/vfc-nfvo-resmanagement/sanity-check/setup.sh b/test/csit/plans/vfc-nfvo-resmanagement/sanity-check/setup.sh
new file mode 100644
index 000000000..a18562eb7
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-resmanagement/sanity-check/setup.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+#
+# Copyright 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.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+#login to the onap nexus docker repo
+docker login -u docker -p docker nexus3.onap.org:10001
+
+# Start MSB
+docker run -d -p 8500:8500 --name msb_consul nexus3.onap.org:10001/onap/msb/msb_base
+CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo CONSUL_IP=${CONSUL_IP}
+docker run -d -p 10081:10081 -e CONSUL_IP=$CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo DISCOVERY_IP=${DISCOVERY_IP}
+docker run -d -p 80:80 -e CONSUL_IP=$CONSUL_IP -e SDCLIENT_IP=$DISCOVERY_IP --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IP==`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IP=${MSB_IP}
+
+# Start resmgr
+docker run -d --name vfc-resmanagement -e MSB_ADDR=${MSB_IP}:80 nexus3.onap.org:10001/onap/vfc/resmanagement
+RESMGR_IP=`get-instance-ip.sh vfc-resmanagement`
+for i in {1..10}; do
+ curl -sS ${RESMGR_IP}:8480 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v RESMGR_IP:${RESMGR_IP}"
diff --git a/test/csit/plans/vfc-nfvo-resmanagement/sanity-check/teardown.sh b/test/csit/plans/vfc-nfvo-resmanagement/sanity-check/teardown.sh
new file mode 100644
index 000000000..2ad95c6bf
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-resmanagement/sanity-check/teardown.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright 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.
+#
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh msb_internal_apigateway
+kill-instance.sh msb_discovery
+kill-instance.sh msb_consul
+kill-instance.sh vfc-resmanagement
diff --git a/test/csit/plans/vfc-nfvo-resmanagement/sanity-check/testplan.txt b/test/csit/plans/vfc-nfvo-resmanagement/sanity-check/testplan.txt
new file mode 100644
index 000000000..98dac63b6
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-resmanagement/sanity-check/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+vfc/nfvo-resmanagement/test.robot \ No newline at end of file
diff --git a/test/csit/run-csit.sh b/test/csit/run-csit.sh
index 8033f308a..c1f38e3ab 100755
--- a/test/csit/run-csit.sh
+++ b/test/csit/run-csit.sh
@@ -93,6 +93,12 @@ if ! type pybot > /dev/null; then
source ${ROBOT_VENV}/bin/activate
fi
+# install eteutils
+rm -rf ${WORKSPACE}/test/testsuite
+git clone https://gerrit.onap.org/r/testsuite/python-testing-utils.git ${WORKSPACE}/test/testsuite/python-testing-utils
+
+
+
WORKDIR=`mktemp -d --suffix=-robot-workdir`
cd ${WORKDIR}
diff --git a/test/csit/scripts/cli/startup.sh b/test/csit/scripts/cli/startup.sh
new file mode 100644
index 000000000..6e29a0e8e
--- /dev/null
+++ b/test/csit/scripts/cli/startup.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+#
+# Copyright 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.
+#
+# $1 nickname for the MSB instance
+echo "This is ${WORKSPACE}/test/csit/scripts/cli/startup.sh"
diff --git a/test/csit/tests/aai/resources/suite1/__init__.robot b/test/csit/tests/aai/resources/suite1/__init__.robot
new file mode 100644
index 000000000..538def841
--- /dev/null
+++ b/test/csit/tests/aai/resources/suite1/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation Resources - Pserver Suite
diff --git a/test/csit/tests/aai/resources/suite1/aai.crt b/test/csit/tests/aai/resources/suite1/aai.crt
new file mode 100644
index 000000000..6a28bbb8c
--- /dev/null
+++ b/test/csit/tests/aai/resources/suite1/aai.crt
@@ -0,0 +1,70 @@
+Bag Attributes
+ friendlyName: aaiopenecomp
+ localKeyID: 54 69 6D 65 20 31 35 30 34 38 33 32 34 34 33 32 39 32
+subject=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=SimpleDemo/CN=aai.api.simpledemo.openecomp.org/emailAddress=aai-host@api.simpledemo.openecomp.org
+issuer=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Server CA X1/emailAddress=simpledemo@openecomp.org
+-----BEGIN CERTIFICATE-----
+MIIEiTCCA3GgAwIBAgIJAIPKfDLcn3MpMA0GCSqGSIb3DQEBCwUAMIGtMQswCQYD
+VQQGEwJVUzELMAkGA1UECAwCTkoxEzARBgNVBAcMCkJlZG1pbnN0ZXIxEjAQBgNV
+BAoMCU9wZW5FQ09NUDETMBEGA1UECwwKc2ltcGxlZGVtbzEqMCgGA1UEAwwhT3Bl
+bkVDT01QIHNpbXBsZWRlbW8gU2VydmVyIENBIFgxMScwJQYJKoZIhvcNAQkBFhhz
+aW1wbGVkZW1vQG9wZW5lY29tcC5vcmcwHhcNMTYxMTMwMTUzODM5WhcNMTcxMTMw
+MTUzODM5WjCBuTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk5KMRMwEQYDVQQHDApC
+ZWRtaW5zdGVyMRIwEAYDVQQKDAlPcGVuRUNPTVAxEzARBgNVBAsMClNpbXBsZURl
+bW8xKTAnBgNVBAMMIGFhaS5hcGkuc2ltcGxlZGVtby5vcGVuZWNvbXAub3JnMTQw
+MgYJKoZIhvcNAQkBFiVhYWktaG9zdEBhcGkuc2ltcGxlZGVtby5vcGVuZWNvbXAu
+b3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwQrQl8A0rT0Jjlos
+Mr/7LEhT5UOif4GGPOk+3NCIxT3lOqAbUf+d9ZXyT2jWFRiKWua03vQ+Dxc8c2h2
+RRuH8LwEiOiWqPjWRxNqsARzZMI3ryHFCFBZh0FcpjH9kEeKVlLDYuV68k+ZucKd
+NiqUNn61lD7kbmEGwvzKwf91FrJ09+CBMx1OnWKm3gCNKDqAEFMZCOdn2MgesJYB
+/03lzPBS1jDfBXImXRcTBzpgA+wdCLn0cIQ1eLWUwS5tUqUJNh36nHdVyJ0P2Yjd
+JLuxhFcmBKOz1ShyyO+BBtKBO8EGbU6qKflOiwOw0Fsn8LjKcrHQ58NPui5y04BU
+Rypf3QIDAQABo4GdMIGaMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgO4MB0G
+A1UdDgQWBBQyMUOsE2J+CKzK0qd8KFBD2gaWyjBbBgNVHSAEVDBSMFAGBFUdIAAw
+SDBGBggrBgEFBQcCAjA6GjhLZWVwIGF3YXkgZnJvbSBjaGlsZHJlbi4gIFRoaXMg
+Y2VydGlmaWNhdGUgaXMgbm90IGEgdG95LjANBgkqhkiG9w0BAQsFAAOCAQEAnkoy
+2tWJOyyyIQwtVojUxv1GWQPnw3WCUcKpuX4CJhHXLxNErW1fBg7bmo08BNmBPPpq
+WrJsy5lbBgUo9kgpViux5Stfy1rRIRsRLfl/icgCvJmUAxkmRCZL7yUvwG4K7s+8
+DwT+nW/XuWNP6Hd/qHccexB6COJ8KwvTdVoxAkCdX8qw4MCb/f7Kb1yle/vwBM5Q
+UUONCJ4bEns1vnb9DGlNDUJNwCfwORAaVJpVS38Mv4UnSTmb2KMePtCWcx/dNsYR
+2XrSGqLDnTvHwOpyhbfFTmackysGoSuDytORXy8YbwEiF13BwEK8i3rgNN0Z2ojf
+cpmE2xxmaa+A2uuN6g==
+-----END CERTIFICATE-----
+Bag Attributes
+ friendlyName: root
+ 2.16.840.1.113894.746875.1.1: <Unsupported tag 6>
+subject=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Server CA X1/emailAddress=simpledemo@openecomp.org
+issuer=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Root Certification Authority/emailAddress=simpledemo@openecomp.org
+-----BEGIN CERTIFICATE-----
+MIIFpTCCA42gAwIBAgIJAJqx8dKnCZZoMA0GCSqGSIb3DQEBCwUAMIG9MQswCQYD
+VQQGEwJVUzELMAkGA1UECAwCTkoxEzARBgNVBAcMCkJlZG1pbnN0ZXIxEjAQBgNV
+BAoMCU9wZW5FQ09NUDETMBEGA1UECwwKc2ltcGxlZGVtbzE6MDgGA1UEAwwxT3Bl
+bkVDT01QIHNpbXBsZWRlbW8gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEn
+MCUGCSqGSIb3DQEJARYYc2ltcGxlZGVtb0BvcGVuZWNvbXAub3JnMB4XDTE2MTEy
+ODIxMTQyNloXDTIxMTEyNzIxMTQyNlowga0xCzAJBgNVBAYTAlVTMQswCQYDVQQI
+DAJOSjETMBEGA1UEBwwKQmVkbWluc3RlcjESMBAGA1UECgwJT3BlbkVDT01QMRMw
+EQYDVQQLDApzaW1wbGVkZW1vMSowKAYDVQQDDCFPcGVuRUNPTVAgc2ltcGxlZGVt
+byBTZXJ2ZXIgQ0EgWDExJzAlBgkqhkiG9w0BCQEWGHNpbXBsZWRlbW9Ab3BlbmVj
+b21wLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALr4rivKQuRk
+YNf5Ig40e1nqj6s6LB1vgMOYbKfRziOFpPcUpsHPOhusHowiUsrU1vdFSzPz6Ej7
+PjlmNSg2Qka8YCn9kd6QgM7U0KcPJvIucBp+qjifH3EvP0jgDPhDeVRYxzV454dv
+5kQ9uCpswJP7YAnX51dkWeH8nwPUoagt31bOl9LXENSrgxEThxdLYMJnQJWk2CmV
+otXM4tT1dxyJxFUrZ6uJCEAYw5VtlplqihHf8lHy+sWQavtsLz/4dc+sGeXSTfoI
+voKvoh3uZ5gEhGV8yfJxk1veX5y5/AxP80vQ+smWYjTnQL5QQ57y4bciez4XVBmQ
+SWimWtOi4e8CAwEAAaOBtTCBsjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
+AwIBhjAdBgNVHQ4EFgQUTqdsYgGNGubdJHq9tsaJhM9HE5wwcAYDVR0gBGkwZzBl
+BgRVHSAAMF0wWwYIKwYBBQUHAgIwTxpNSWYgeW91IHRydXN0IHRoaXMgY2VydCB0
+aGVuIHdlIGhhdmUgYSBicmlkZ2UgdGhhdCB5b3UgbWlnaHQgYmUgaW50ZXJlc3Rl
+ZCBpbi4wDQYJKoZIhvcNAQELBQADggIBAKNNlRqFuE/JgV1BHyYK0xoSXH4aZP/7
+IoHtDVcSaZAOOuFOUrwVMUbzRBebbb6RpFwt/X+NLFUGysd+XNLF7W7lzxKtmFNX
+n4OpNkBe0y5O7yurus8rERHzu3jiOSgVo+WzDlGpYSRnG3hI2qPWqD+Puzx/WwI8
+XUTuzEQQ3gUSyVFfXHpay3VpYmLZiLJ9WKY5SDw7Ie6Sxrju4Qm1HwnFY8wHZGcs
+2KMQzorJ1ZNQf523yUTghbT0rKaSFaD8zugPtI2ONfFG/QgrkQXo78opzPsHnHwa
+SxGSiAgeLbwAUCvPNl27zr6k6+7TcNjV0VUivAs0OG3VEAdgi7UWYB+30KfWwHwE
+zGmvd4IAGqIqlqLcSVArN5z8JK1B5nfjQn5UrclU1vK+dnuiKE2X4rKuBTRYRFR/
+km+mj4koYFPKFHndmJl1uv2OCJK9l5CSIuKWeI1qv8BASKqgNdoT/SKBXqxgYlCb
+o+j4IDjxrxChRO+e5vl9lA7INfRrbljCkUjfLRa+v2q9tWQ3+EQUwwnSrSfihh2T
+j0Tksr6b8dDsvMlCdOKG1B+JPcEXORSFKNXVTEfjqpJG8s16kFAocWt3S6xO0k1t
+qbQp+3tWQgW2TGnX0rMZzB6NGRNfWhlYmq2zHgXkiCIZ26Ztgt/LNbwEvN3+VlLo
+z/Rd+SKtlrfb
+-----END CERTIFICATE-----
diff --git a/test/csit/tests/aai/resources/suite1/aai.key b/test/csit/tests/aai/resources/suite1/aai.key
new file mode 100644
index 000000000..02724df46
--- /dev/null
+++ b/test/csit/tests/aai/resources/suite1/aai.key
@@ -0,0 +1,32 @@
+Bag Attributes
+ friendlyName: aaiopenecomp
+ localKeyID: 54 69 6D 65 20 31 35 30 34 38 33 32 34 34 33 32 39 32
+Key Attributes: <No Attributes>
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBCtCXwDStPQmO
+Wiwyv/ssSFPlQ6J/gYY86T7c0IjFPeU6oBtR/531lfJPaNYVGIpa5rTe9D4PFzxz
+aHZFG4fwvASI6Jao+NZHE2qwBHNkwjevIcUIUFmHQVymMf2QR4pWUsNi5XryT5m5
+wp02KpQ2frWUPuRuYQbC/MrB/3UWsnT34IEzHU6dYqbeAI0oOoAQUxkI52fYyB6w
+lgH/TeXM8FLWMN8FciZdFxMHOmAD7B0IufRwhDV4tZTBLm1SpQk2Hfqcd1XInQ/Z
+iN0ku7GEVyYEo7PVKHLI74EG0oE7wQZtTqop+U6LA7DQWyfwuMpysdDnw0+6LnLT
+gFRHKl/dAgMBAAECggEBAJko2HkeIW01mUhdWOXnFgR7WjzzXZEmlffr41lVBr7f
+rejGsQZs9cms73R7rCdOsi8PDoA6bqaQfADg571K659fvYVWbHqh+3im+iWvUlKm
+GYIVG/vNrEq43CZsUU7Qw/xba/QiOFraNxCATTV1sORPwgddouXEi5XW9ZPX9/FJ
+wORx4L/K0DfHX1rr+rtOoHCJdZYhn3Ij87kmR8Mwg0fNeWhHqtxUEyM/itRjCvOe
+mgt2V8DORhmq12L4+5QJctBrkBVRp9Rh6YSZZBGnKbTSgf4q648BdkJDLSK4cguT
+D6BAw3gxj5V4wt5W0wn2JpjadFwnixrTzvMP/yAqfK0CgYEA93nBAoUPw8nzQkwk
+8iWBjfJ999Rw92hnnvk3xbcQcGfgUYuB4dxwe6FQTmFIVylt81er1YUvMb3ao7fo
+5ZcGnI5p1idjsd27kbZJLxb5Oh919hKu5IfkfYsVgnC0UdKCTgH5CaH0U4ATuXwt
+RL6qm0XcLALs5y2OO6z3s+mYhisCgYEAx7EQ8MA45bkXnRQiHBhGcIIcr2sRDfVJ
+OhHmGxx3EcYgtsIYKTqtQOyIt/nQxo6iyNL9bzfzBTybFJLuj63ZG1Ef4LosJedl
+eAU2NsKv5MlKYDSdNbLAJ0Op9I2Xu/pXQecPwY/3MkIQArdQCLevMLEGywCsuJTn
+BjkJNDkb9hcCgYAhoFiaiAwJVYKJSqFmibQd3opBR4uGApi54DE021gPff3b9rHS
+R8q88cFgtRVISqfW/d2qaKtt/dcckdvCfo/2a99zqux/+ZoIBZXSITQCMs4rfoRn
+JxPj/ycQD1JhH9J22QvGxEvXoLqNZJMeGS5DZO2yyT75dpYyA6Gwv5fq+wKBgQC5
+AhV917lfLELyZurLOLpaFlHZO8rLMcusH1UfHRo7v2IjsGOOHyzRD9QDD1IcA55R
+jRj8Z8uhuGq9fvvC5gBVTK3KGPI6E85wifOWfH1V7CAaTeSxEXDxb8EQL/a6U89v
+4VE5tdYCHC6VNZzS1staw0hV38QmJt57Z3Bdj+OV9QKBgE/b9fxpo+SVQ37BzNNY
+SEKTTijaddz8fdomApg6a2eFJL93Ej/op7N7gnHtPWMivPnRRza9ZjfnG+aZ7n2J
+sWyBiZK9xliS2TsF3l3q9Z0Vaq3i1nOlV7Bd20ZS8KjQjDtKnIRfLkQDkvmXbU5L
+emwkdsQZbpPFJch3mCGtI7JW
+-----END PRIVATE KEY-----
diff --git a/test/csit/tests/aai/resources/suite1/pserver.robot b/test/csit/tests/aai/resources/suite1/pserver.robot
new file mode 100644
index 000000000..55e57bccb
--- /dev/null
+++ b/test/csit/tests/aai/resources/suite1/pserver.robot
@@ -0,0 +1,65 @@
+*** Settings ***
+Library OperatingSystem
+Library RequestsLibrary
+Library requests
+Library Collections
+
+*** Variables ***
+${TARGETURL} https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/pservers/pserver/pserver-test1
+${PSERVERDATA} {"hostname": "pserver-test1"}
+
+*** Test Cases ***
+
+Run AAI Put Pserver
+ [Documentation] Create an pserver object
+ ${resp}= PutWithCert ${TARGETURL} ${PSERVERDATA}
+ log ${TARGETURL}
+ log ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 201
+
+Run AAI Get Pserver
+ [Documentation] Get the pserver object just created
+ ${resp} GetWithCert ${TARGETURL}
+ log ${resp}
+ log ${resp.json()}
+ Should Be Equal As Strings ${resp.status_code} 200
+ ${resource_version}= Evaluate $resp.json().get('resource-version')
+ Set Global Variable ${resource_version}
+
+Run AAI Delete Pserver
+ [Documentation] Delete the pserver just created
+ ${resp}= DeleteWithCert ${TARGETURL}?resource-version=${resource_version}
+ log ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 204
+
+*** Keywords ***
+PutWithCert
+ [Arguments] ${url} ${data}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=integration-aai X-FromAppId=integration-aai Authorization=Basic QUFJOkFBSQ==
+ ${certinfo}= Evaluate ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+ ${resp}= Evaluate requests.put('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False) requests
+ [return] ${resp}
+
+PostWithCert
+ [Arguments] ${url} ${data}
+ ${auth}= Create List AAI AAI
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=integration-aai X-FromAppId=integration-aai Authorization=Basic QUFJOkFBSQ==
+ ${certinfo}= Evaluate ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+ ${resp}= Evaluate requests.post('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False) requests
+ [return] ${resp}
+
+GetWithCert
+ [Arguments] ${url}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=integration-aai X-FromAppId=integration-aai Authorization=Basic QUFJOkFBSQ==
+ ${certinfo}= Evaluate ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+ ${resp}= Evaluate requests.get('${url}', headers=${headers}, cert=${certinfo}, verify=False) requests
+ [return] ${resp}
+
+DeleteWithCert
+ [Arguments] ${url}
+ ${auth}= Create List AAI AAI
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=integration-aai X-FromAppId=integration-aai Authorization=Basic QUFJOkFBSQ==
+ ${certinfo}= Evaluate ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+ ${resp}= Evaluate requests.delete('${url}', headers=${headers}, cert=${certinfo}, verify=False) requests
+ [return] ${resp}
+
diff --git a/test/csit/tests/appc/healthcheck/test1.robot b/test/csit/tests/appc/healthcheck/test1.robot
index 05eee5b84..8bd49860b 100644
--- a/test/csit/tests/appc/healthcheck/test1.robot
+++ b/test/csit/tests/appc/healthcheck/test1.robot
@@ -6,6 +6,7 @@ Library Process
${bundle_query} ${SCRIPTS}/bundle_query.sh
${health_check} ${SCRIPTS}/health_check.sh
+${db_query} ${SCRIPTS}/db_query.sh
*** Test Cases ***
@@ -19,4 +20,8 @@ Query bundle test case for APPC
${result_bq}= Run Process bash ${bundle_query} > log_bq.txt shell=yes
Should Be Equal As Integers ${result_bq.rc} 0
+Query database test case for APPC
+ [Documentation] Query database
+ ${result_db}= Run Process bash ${db_query} > log_db.txt shell=yes
+ Should Be Equal As Integers ${result_db.rc} 0
diff --git a/test/csit/tests/appc/testsuite/APPC_Netstat.robot b/test/csit/tests/appc/testsuite/APPC_Netstat.robot
new file mode 100644
index 000000000..5544fb565
--- /dev/null
+++ b/test/csit/tests/appc/testsuite/APPC_Netstat.robot
@@ -0,0 +1,19 @@
+*** Settings ***
+Library SSHLibrary
+Library OperatingSystem
+*** Variables ***
+${HOST} 104.130.138.49
+${USERNAME} test
+${private_key} H:\\TestSuite\\testsuite\\robot\\testsuites
+*** Test Cases ***
+APPC Netstat
+ Open Connection ${HOST}
+ ${password}= Get File ${private_key}
+ Login ${USERNAME} ${password}
+ log to console \nConnected Successfully
+ ${cmd} = set variable netstat -a | grep -E '8443 | grep LISTEN
+ execute command ${cmd}
+
+Tear Down
+ [Documentation] Close all connections
+ Close All connections \ No newline at end of file
diff --git a/test/csit/tests/appc/testsuite/LCM_HEALTHCHECK.robot b/test/csit/tests/appc/testsuite/LCM_HEALTHCHECK.robot
new file mode 100644
index 000000000..c3594ef2e
--- /dev/null
+++ b/test/csit/tests/appc/testsuite/LCM_HEALTHCHECK.robot
@@ -0,0 +1,33 @@
+*** Settings ***
+Library Selenium2Library
+Library OperatingSystem
+
+*** Variable ***
+${ResponseCode}
+${var}
+${RequestJSON} C:\\RobotSampleForLearning\\LearningSamples\\Resources\\Healthchk.json
+
+
+*** Test Cases ***
+
+APPC LCM Health check
+ [Documentation] APPC HealthCheck
+ Open Browser http://admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U@104.130.138.49:8282/apidoc/explorer/index.html chrome
+ Click Element xpath=.//p[contains(text(),'If you have reason to expect the website is safe, select the I Accept the Risk button to continue.')]//following::img
+
+ Wait Until Page Contains Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a
+ Click Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a
+
+ wait until page contains element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:health-check')]
+ Click Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:health-check')]
+
+ ${HealthChk}= Get File ${RequestJSON}
+ wait until page contains element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:health-check')]//following::table
+ Input Text xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:health-check')]//following::table//tbody/tr/td[2]/textarea ${HealthChk}
+
+ wait until page contains element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:health-check')]//following::form/div[2]/input[1]
+ Click Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:health-check')]//following::form/div[2]/input[1]
+
+Tear Down
+ [Documentation] Close all browsers
+ Close All Browsers \ No newline at end of file
diff --git a/test/csit/tests/appc/testsuite/LCM_VM_RESTART.robot b/test/csit/tests/appc/testsuite/LCM_VM_RESTART.robot
new file mode 100644
index 000000000..997ba17a0
--- /dev/null
+++ b/test/csit/tests/appc/testsuite/LCM_VM_RESTART.robot
@@ -0,0 +1,31 @@
+*** Settings ***
+Library Selenium2Library
+Library OperatingSystem
+
+*** Variable ***
+${ResponseCode}
+${var}
+${RequestJSON} /LearningSamples/Resources/VMRestart.json
+
+
+*** Test Cases ***
+
+APPC API VM RESTART
+ [Documentation] APPC VM LCM Restart
+ Open Browser http://admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U@104.130.138.49:8282/apidoc/explorer/index.html chrome
+ Click Element xpath=.//p[contains(text(),'If you have reason to expect the website is safe, select the I Accept the Risk button to continue.')]//following::img
+ Click Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a
+ Click Element xpath=//*[@id="appc-provider-lcm(2016-01-08)_restart_post_23"]/div[1]/h3/span[2]/a
+ ${VM_LCM_RESTART} Get File ${RequestJSON}
+ Input Text xpath=//*[@id="appc-provider-lcm(2016-01-08)_restart_post_23_content"]/form/table/tbody/tr/td[2]/textarea ${VM_LCM_RESTART}
+ Click Element xpath=//*[@id="appc-provider-lcm(2016-01-08)_restart_post_23_content"]/form/div[2]/input
+ # Get Text locator
+ ${ResponseCode} Get Text xpath=//*[@id="appc-provider-lcm(2016-01-08)_restart_post_23_content"]/div[2]/h4[contains(text(),'Response Code')]//following::div//pre
+ ${var} Get Value xpath=//*[@id="appc-provider-lcm(2016-01-08)_restart_post_23_content"]/div[2]/h4[contains(text(),'Response Code')]//following::div//pre
+ Log Value--> ${ResponseCode}
+ Log var--> ${var}
+ Element Text Should Be xpath=//*[@id="appc-provider-lcm(2016-01-08)_restart_post_23_content"]/div[2]/h4[contains(text(),'Response Code')]//following::div//pre 400 expected
+
+Tear Down
+ [Documentation] Close all browsers
+ Close All Browsers \ No newline at end of file
diff --git a/test/csit/tests/appc/testsuite/LCM_VNF_RESTART.robot b/test/csit/tests/appc/testsuite/LCM_VNF_RESTART.robot
new file mode 100644
index 000000000..1bb2c13eb
--- /dev/null
+++ b/test/csit/tests/appc/testsuite/LCM_VNF_RESTART.robot
@@ -0,0 +1,45 @@
+*** Settings ***
+Library Selenium2Library
+Library OperatingSystem
+
+*** Variable ***
+${ResponseCode}
+${var}
+${RequestJSON} C:\\RobotSampleForLearning\\LearningSamples\\Resources\\VNFRestart.json
+
+
+*** Test Cases ***
+
+APPC API VM RESTART
+ [Documentation] APPC VM LCM Restart
+ Open Browser http://admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U@104.130.138.49:8282/apidoc/explorer/index.html chrome
+ Click Element xpath=.//p[contains(text(),'If you have reason to expect the website is safe, select the I Accept the Risk button to continue.')]//following::img
+
+ Wait Until Page Contains Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a
+ Click Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a
+
+
+ Wait Until Page Contains Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:restart')]
+ Click Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:restart')]
+
+
+ ${VNF_LCM_RESTART}= Get File ${RequestJSON}
+ Wait Until Page Contains Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:restart')]//following::table
+
+ Input Text xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:restart')]//following::table//tbody/tr/td[2]/textarea ${VNF_LCM_RESTART}
+
+ # Wait Until Page Contains Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:restart')]/form/div[2]/input
+ Click Element xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:restart')]//following::form/div[2]/input[1]
+
+ # Get Text locator
+ ${ResponseCode} Get Text xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:restart')]//following::h4[contains(text(),'Response Code')][1]//following-sibling::div//pre
+
+ # //*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:restart')]//following::h4[contains(text(),'Response Code')]//following-sibling::div//pre
+ ${var} Get Value xpath=//*[@id="resource_appc-provider-lcm(2016-01-08)"]/div/h2/a//following::a[contains(text(),'/operations/appc-provider-lcm:restart')]//following::h4[contains(text(),'Response Code')][1]//following-sibling::div//pre
+ Log Value--> ${ResponseCode}
+ Log var--> ${var}
+ Element Text Should Be xpath=//*[contains(text(),'/operations/appc-provider-lcm:restart')]//following::h4[text()='Response Code'][1]//following-sibling::div//pre[1] 200 expected
+
+Tear Down
+ [Documentation] Close all browsers
+ Close All Browsers \ No newline at end of file
diff --git a/test/csit/tests/clamp/TCA/test1.robot b/test/csit/tests/clamp/TCA/01__TCA.robot
index b1fb0f440..45f20f248 100644
--- a/test/csit/tests/clamp/TCA/test1.robot
+++ b/test/csit/tests/clamp/TCA/01__TCA.robot
@@ -3,7 +3,6 @@ Library Collections
Library RequestsLibrary
Library OperatingSystem
Library json
-Library HttpLibrary.HTTP
*** Test Cases ***
diff --git a/test/csit/tests/clamp/UIs/test1_create_template.robot b/test/csit/tests/clamp/UIs/01__Create_template.robot
index 008b13d2a..d740ac987 100644
--- a/test/csit/tests/clamp/UIs/test1_create_template.robot
+++ b/test/csit/tests/clamp/UIs/01__Create_template.robot
@@ -3,7 +3,6 @@ Library Collections
Library RequestsLibrary
Library OperatingSystem
Library json
-Library HttpLibrary.HTTP
Library Selenium2Library
Library XvfbRobot
@@ -42,15 +41,15 @@ Create Template from Menu
Click Element xpath=//*[@id="navbar"]/ul/li[1]/a
Wait Until Element Is Visible locator=Create Template timeout=60
Click Element locator=Create Template
- Input Text locator=modelName text=template1
+ Input Text locator=modelName text=template
Click Button locator=OK
Drag and Drop Boxes for template
- Wait Until Element Is Visible xpath=//*[@id="js-canvas"]/div/div/div[4]/div[1]/div/div[2] timeout=60
- Drag And Drop By Offset xpath=//*[@id="js-canvas"]/div/div/div[4]/div[1]/div/div[2] 280 280
- Drag And Drop By Offset xpath=//*[@id="js-canvas"]/div/div/div[4]/div[1]/div/div[4] 550 280
- Drag And Drop By Offset xpath=//*[@id="js-canvas"]/div/div/div[4]/div[1]/div/div[5] 800 280
- Drag And Drop By Offset xpath=//*[@id="js-canvas"]/div/div/div[4]/div[1]/div/div[6] 1000 280
+ Wait Until Element Is Visible xpath=//*[@class="entry icon-collector-node"] timeout=60
+ Drag And Drop By Offset xpath=//*[@class="entry icon-collector-node"] 280 280
+ Drag And Drop By Offset xpath=//*[@class="entry icon-tca-node"] 550 280
+ Drag And Drop By Offset xpath=//*[@class="entry icon-policy-node"] 800 280
+ Drag And Drop By Offset xpath=//*[@class="entry icon-end-event-none"] 1000 280
Drag and Drop Connectors for template
Click Element xpath=//*[starts-with(@data-element-id, "StartEvent_")]
diff --git a/test/csit/tests/clamp/UIs/test2_create_Model.robot b/test/csit/tests/clamp/UIs/02__Create_model.robot
index e8de881bb..979a9802e 100644
--- a/test/csit/tests/clamp/UIs/test2_create_Model.robot
+++ b/test/csit/tests/clamp/UIs/02__Create_model.robot
@@ -3,7 +3,6 @@ Library Collections
Library RequestsLibrary
Library OperatingSystem
Library json
-Library HttpLibrary.HTTP
Library Selenium2Library
Library XvfbRobot
diff --git a/test/csit/tests/cli/startup/__init__.robot b/test/csit/tests/cli/startup/__init__.robot
new file mode 100644
index 000000000..9eca6917a
--- /dev/null
+++ b/test/csit/tests/cli/startup/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation cli - Startup
diff --git a/test/csit/tests/cli/startup/startup_check.robot b/test/csit/tests/cli/startup/startup_check.robot
new file mode 100644
index 000000000..053a6d115
--- /dev/null
+++ b/test/csit/tests/cli/startup/startup_check.robot
@@ -0,0 +1,70 @@
+*** Settings ***
+Library RequestsLibrary
+Library Process
+
+*** Variables ***
+
+${cli_exec} docker exec cli onap
+${cli_exec_onap_11} docker exec -e CLI_PRODUCT_VERSION=onap-1.1 onap
+${cli_exec_onap_10} docker exec -e CLI_PRODUCT_VERSION=onap-1.0 onap
+${cli_exec_cli_10} docker exec -e CLI_PRODUCT_VERSION=cli-1.0 onap
+
+*** Test Cases ***
+Liveness Test
+ [Documentation] Check cli liveness check
+ Create Session cli http://${CLI_IP}:8080
+ CheckUrl cli /
+
+Check Cli help
+ [Documentation] check cli help command
+ ${cli_cmd_output}= Run Process ${cli_exec} --help shell=yes
+ Log ${cli_cmd_output.stdout}
+ Should Be Equal As Strings ${cli_cmd_output.rc} 0
+ Should Contain ${cli_cmd_output.stdout} CLI version
+
+Check Cli Version Default
+ [Documentation] check cli default version
+ ${cli_cmd_output}= Run Process ${cli_exec} --version shell=yes
+ Log ${cli_cmd_output.stdout}
+ Should Be Equal As Strings ${cli_cmd_output.rc} 0
+ Should Contain ${cli_cmd_output.stdout} : cli-1.0
+
+Check Cli Scheam Refresh
+ [Documentation] check cli schema-refresh command
+ ${cli_cmd_output}= Run Process ${cli_exec} schema-refresh shell=yes
+ Log ${cli_cmd_output.stdout}
+ Should Be Equal As Strings ${cli_cmd_output.rc} 0
+ Should Contain ${cli_cmd_output.stdout} sl-no
+ Should Contain ${cli_cmd_output.stdout} command
+ Should Contain ${cli_cmd_output.stdout} product-version
+ Should Contain ${cli_cmd_output.stdout} schema
+ Should Contain ${cli_cmd_output.stdout} version
+
+Check Cli Schema Validate With Valid Path
+ [Documentation] check cli schema-validate command with valid path
+ ${cli_cmd_output}= Run Process ${cli_exec} schema-validate -i -l schema-refresh.yaml shell=yes
+ Log ${cli_cmd_output.stdout}
+ Should Be Equal As Strings ${cli_cmd_output.rc} 0
+ Should Contain ${cli_cmd_output.stdout} sl-no
+ Should Contain ${cli_cmd_output.stdout} error
+
+Check Cli Scheam Validate With Invalid Path
+ [Documentation] check cli version
+ ${cli_cmd_output}= Run Process ${cli_exec} schema-validate -i -l invalid-yaml-path.yaml shell=yes
+ Log ${cli_cmd_output.stdout}
+ Should Be Equal As Strings ${cli_cmd_output.rc} 1
+ Should Contain ${cli_cmd_output.stdout} 0x0007
+
+Check Cli Scheam Validate Empty Argument
+ [Documentation] check cli schema validate with empty argument
+ ${cli_cmd_output}= Run Process ${cli_exec} schema-validate shell=yes
+ Log ${cli_cmd_output.stdout}
+ Should Be Equal As Strings ${cli_cmd_output.rc} 1
+ Should Contain ${cli_cmd_output.stdout} 0x0015
+
+
+*** Keywords ***
+CheckUrl
+ [Arguments] ${session} ${path}
+ ${resp}= Get Request ${session} ${path}
+ Should Be Equal As Integers ${resp.status_code} 200
diff --git a/test/csit/tests/common.robot b/test/csit/tests/common.robot
new file mode 100644
index 000000000..944be6b9f
--- /dev/null
+++ b/test/csit/tests/common.robot
@@ -0,0 +1,22 @@
+#Robot functions that will be shared also with other tests
+
+*** Keywords ***
+json_from_file
+#Robot function to extract the json object from a file
+ [Arguments] ${file_path}
+ ${json_file}= Get file ${file_path}
+ ${json_object}= Evaluate json.loads('''${json_file}''') json
+ [return] ${json_object}
+
+string_from_json
+#Robot function to transform the json object to a string
+ [Arguments] ${json_value}
+ ${json_string}= Stringify Json ${json_value}
+ [return] ${json_string}
+
+random_ip
+#Robot function to generate a random IP
+ [Arguments]
+ ${numbers}= Evaluate random.sample([x for x in range(1, 256)], 4) random
+ ${generated_ip}= Catenate ${numbers[0]}.${numbers[1]}.${numbers[2]}.${numbers[3]}
+ [return] ${generated_ip} \ No newline at end of file
diff --git a/test/csit/tests/holmes/testcase/EngineMgt/EngineAddr.robot b/test/csit/tests/holmes/testcase/EngineMgt/EngineAddr.robot
index 24c809c97..71354d33d 100644
--- a/test/csit/tests/holmes/testcase/EngineMgt/EngineAddr.robot
+++ b/test/csit/tests/holmes/testcase/EngineMgt/EngineAddr.robot
@@ -1,3 +1,3 @@
*** Variables ***
${engineHost} http://${MSB_IP}
-${engineUrl} /onapapi/holmes-engine-mgmt/v1/rule
+${engineUrl} /api/holmes-engine-mgmt/v1/rule
diff --git a/test/csit/tests/holmes/testcase/RuleMgt/Rule-Keywords.robot b/test/csit/tests/holmes/testcase/RuleMgt/Rule-Keywords.robot
index b2039174d..03f840904 100644
--- a/test/csit/tests/holmes/testcase/RuleMgt/Rule-Keywords.robot
+++ b/test/csit/tests/holmes/testcase/RuleMgt/Rule-Keywords.robot
@@ -23,9 +23,8 @@ queryConditionRule
[Arguments] ${queryParam} ${codeFlag}=1
[Documentation] ${queryParam} : The data type is Json .
create session microservices ${ruleMgtHost}
- ${param} set variable queryrequest\=${queryParam}
- ${headers} set variable
- ${getResponse} get request microservices ${ruleMgtUrl} ${headers} ${param}
+ Comment ${param} set variable queryrequest\=${queryParam}
+ ${getResponse} get request microservices ${ruleMgtUrl}?queryrequest\=${queryParam}
log ${getResponse.content}
run keyword if ${codeFlag}==1 Should be equal as strings ${getResponse.status_code} 200
run keyword if ${codeFlag}!=1 Should be equal as strings ${getResponse.status_code} 499
diff --git a/test/csit/tests/holmes/testcase/RuleMgt/RuleAddr.robot b/test/csit/tests/holmes/testcase/RuleMgt/RuleAddr.robot
index ec565e9ab..be7384206 100644
--- a/test/csit/tests/holmes/testcase/RuleMgt/RuleAddr.robot
+++ b/test/csit/tests/holmes/testcase/RuleMgt/RuleAddr.robot
@@ -1,3 +1,3 @@
*** Variables ***
${ruleMgtHost} http://${MSB_IP}
-${ruleMgtUrl} /onapapi/holmes-rule-mgmt/v1/rule
+${ruleMgtUrl} /api/holmes-rule-mgmt/v1/rule
diff --git a/test/csit/tests/integration/vCPE/__init__.robot b/test/csit/tests/integration/vCPE/__init__.robot
new file mode 100644
index 000000000..b2057b0d1
--- /dev/null
+++ b/test/csit/tests/integration/vCPE/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation Integration - vCPE
diff --git a/test/csit/tests/integration/vCPE/test1.robot b/test/csit/tests/integration/vCPE/test1.robot
new file mode 100644
index 000000000..3bcd1dde9
--- /dev/null
+++ b/test/csit/tests/integration/vCPE/test1.robot
@@ -0,0 +1,60 @@
+*** Settings ***
+Suite Setup Suite Setup
+Suite Teardown Suite Teardown
+Library OperatingSystem
+Library RequestsLibrary
+Library Process
+Library ../../../../testsuite/python-testing-utils/eteutils/UUID.py
+
+*** Variables ***
+${GLOBAL_APPLICATION_ID} csit-vCPE
+${GLOBAL_MSO_USERNAME} InfraPortalClient
+${GLOBAL_MSO_PASSWORD} password1$
+
+*** Test Cases ***
+SO ServiceInstance health check
+ ${auth}= Create List ${GLOBAL_MSO_USERNAME} ${GLOBAL_MSO_PASSWORD}
+ ${session}= Create Session so http://${SO_IP}:8080
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=text/html Content-Type=text/html X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ ${resp}= Get Request so /ecomp/mso/infra/globalhealthcheck headers=${headers}
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Get Request so /ecomp/mso/infra/orchestrationRequests/v2 headers=${headers}
+ Should Not Contain ${resp.content} null
+
+*** Keywords ***
+Run Docker
+ [Arguments] ${image} ${name} ${parameters}=${EMPTY}
+ ${result}= Run Process docker run --name ${name} ${parameters} -d ${image} shell=True
+ Should Be Equal As Integers ${result.rc} 0
+ Log ${result.stdout}
+ ${result}= Run Process docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${name} shell=True
+ Should Be Equal As Integers ${result.rc} 0
+ Log ${result.stdout}
+ [Return] ${result.stdout}
+
+Kill Docker
+ [Arguments] ${name}
+ ${result}= Run Process docker logs ${name} shell=True
+ Should Be Equal As Integers ${result.rc} 0
+ Log ${result.stdout}
+ ${result}= Run Process docker kill ${name} shell=True
+ Should Be Equal As Integers ${result.rc} 0
+ Log ${result.stdout}
+ ${result}= Run Process docker rm ${name} shell=True
+ Should Be Equal As Integers ${result.rc} 0
+ Log ${result.stdout}
+
+CheckUrl
+ [Arguments] ${url}
+ Create Session session ${url} disable_warnings=True
+ ${resp}= Get Request session /
+ Should Be Equal As Integers ${resp.status_code} 200
+
+Suite Setup
+ ${SO_IP}= Run Docker nexus3.onap.org:10001/openecomp/mso i-so
+ Wait Until Keyword Succeeds 1 min 5 sec CheckUrl http://${SO_IP}:8080
+ Set Suite Variable ${SO_IP}
+
+Suite Teardown
+ Kill Docker i-so
diff --git a/test/csit/tests/multicloud-ocata/provision/sanity_test_multicloud.robot b/test/csit/tests/multicloud-ocata/provision/sanity_test_multicloud.robot
new file mode 100644
index 000000000..f9f19820c
--- /dev/null
+++ b/test/csit/tests/multicloud-ocata/provision/sanity_test_multicloud.robot
@@ -0,0 +1,22 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_ocata_url} /api/multicloud-ocata/v0/swagger.json
+
+
+*** Test Cases ***
+OcataSwaggerTest
+ [Documentation] query swagger info rest test
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${SERVICE_IP}:${SERVICE_PORT} headers=${headers}
+ ${resp}= Get Request web_session ${queryswagger_ocata_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${swagger_version}= Convert To String ${response_json['swagger']}
+ Should Be Equal ${swagger_version} 2.0
diff --git a/test/csit/tests/multicloud/provision/sanity_test_multivim.robot b/test/csit/tests/multicloud/provision/sanity_test_multivim.robot
index 6dc57cc42..2c1ec3f9f 100644
--- a/test/csit/tests/multicloud/provision/sanity_test_multivim.robot
+++ b/test/csit/tests/multicloud/provision/sanity_test_multivim.robot
@@ -6,14 +6,14 @@ Library json
*** Variables ***
@{return_ok_list}= 200 201 202
-${queryswagger_broker_url} /openoapi/multivim/v1/swagger.json
+${queryswagger_broker_url} /api/multicloud/v0/swagger.json
*** Test Cases ***
BrokerSwaggerTest
[Documentation] query swagger info rest test
${headers} Create Dictionary Content-Type=application/json Accept=application/json
- Create Session web_session http://${MSB_IP} headers=${headers}
+ Create Session web_session http://${BROKER_IP}:9001 headers=${headers}
${resp}= Get Request web_session ${queryswagger_broker_url}
${responese_code}= Convert To String ${resp.status_code}
List Should Contain Value ${return_ok_list} ${responese_code}
diff --git a/test/csit/tests/portal/testsuites/__init__.robot b/test/csit/tests/portal/testsuites/__init__.robot
new file mode 100644
index 000000000..3b8528dff
--- /dev/null
+++ b/test/csit/tests/portal/testsuites/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation APPC - healthcheck
diff --git a/test/csit/tests/portal/testsuites/browser_setup.robot b/test/csit/tests/portal/testsuites/browser_setup.robot
new file mode 100644
index 000000000..6ef4f7268
--- /dev/null
+++ b/test/csit/tests/portal/testsuites/browser_setup.robot
@@ -0,0 +1,43 @@
+*** Settings ***
+Documentation The main interface for interacting with VID. It handles low level stuff like managing the selenium request library and VID required steps
+Library Collections
+Library OSUtils
+Library OperatingSystem
+Library ExtendedSelenium2Library
+Resource global_properties.robot
+
+*** Variables ***
+
+*** Keywords ***
+Setup Browser
+ [Documentation] Sets up browser based upon the value of ${GLOBAL_SELENIUM_BROWSER}
+ Run Keyword If '${GLOBAL_SELENIUM_BROWSER}' == 'firefox' Setup Browser Firefox
+ Run Keyword If '${GLOBAL_SELENIUM_BROWSER}' == 'chrome' Setup Browser Chrome
+ Log Running with ${GLOBAL_SELENIUM_BROWSER}
+
+Setup Browser Firefox
+ ${dc} Evaluate sys.modules['selenium.webdriver'].DesiredCapabilities.FIREFOX sys, selenium.webdriver
+ Set To Dictionary ${dc} elementScrollBehavior 1
+ Create Webdriver Firefox desired_capabilities=${dc}
+ Set Global Variable ${GLOBAL_SELENIUM_BROWSER_CAPABILITIES} ${dc}
+
+ Setup Browser Chrome
+ ${os}= Get Normalized Os
+ Log Normalized OS=${os}
+ ${chrome options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys
+ Call Method ${chrome options} add_argument no-sandbox
+ ${dc} Evaluate sys.modules['selenium.webdriver'].DesiredCapabilities.CHROME sys, selenium.webdriver
+ Set To Dictionary ${dc} elementScrollBehavior 1
+ Create Webdriver Chrome chrome_options=${chrome_options} desired_capabilities=${dc}
+ Set Global Variable ${GLOBAL_SELENIUM_BROWSER_CAPABILITIES} ${dc}
+
+Handle Proxy Warning
+ [Documentation] Handle Intermediate Warnings from Proxies
+ ${status} ${data}= Run Keyword And Ignore Error Variable Should Exist \${GLOBAL_PROXY_WARNING_TITLE}
+ Return From Keyword if '${status}' != 'PASS'
+ ${status} ${data}= Run Keyword And Ignore Error Variable Should Exist \${GLOBAL_PROXY_WARNING_CONTINUE_XPATH}
+ Return From Keyword if '${status}' != 'PASS'
+ Return From Keyword if "${GLOBAL_PROXY_WARNING_TITLE}" == ''
+ Return From Keyword if "${GLOBAL_PROXY_WARNING_CONTINUE_XPATH}" == ''
+ ${test} ${value}= Run keyword and ignore error Title Should Be ${GLOBAL_PROXY_WARNING_TITLE}
+ Run keyword If '${test}' == 'PASS' Click Element xpath=${GLOBAL_PROXY_WARNING_CONTINUE_XPATH} \ No newline at end of file
diff --git a/test/csit/tests/portal/testsuites/integration_robot_properties.py b/test/csit/tests/portal/testsuites/integration_robot_properties.py
new file mode 100644
index 000000000..cc0558fc7
--- /dev/null
+++ b/test/csit/tests/portal/testsuites/integration_robot_properties.py
@@ -0,0 +1,83 @@
+# aaf info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_AAF_SERVER = "http://10.0.12.1:8101"
+GLOBAL_AAF_USERNAME = "dgl@openecomp.org"
+GLOBAL_AAF_PASSWORD = "ecomp_admin"
+# aai info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_AAI_SERVER_URL = "https://104.239.249.183:8443"
+GLOBAL_AAI_USERNAME = "AAI"
+GLOBAL_AAI_PASSWORD = "AAI"
+# appc info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_APPC_SERVER = "http://172.99.68.171:8282"
+GLOBAL_APPC_USERNAME = "admin"
+GLOBAL_APPC_PASSWORD = "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"
+# sdc info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_ASDC_SERVER = "http://104.239.249.58"
+GLOBAL_ASDC_FE_PORT = "8181"
+GLOBAL_ASDC_BE_PORT = "8080"
+GLOBAL_ASDC_BE_USERNAME = "beep"
+GLOBAL_ASDC_BE_PASSWORD = "boop"
+# dcae info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_DCAE_SERVER = "http://146.20.110.86:9998"
+GLOBAL_DCAE_USERNAME = "console"
+GLOBAL_DCAE_PASSWORD = "ZjJkYjllMjljMTI2M2Iz"
+# message router info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_MR_SERVER = "http://162.209.124.141:3904"
+# mso info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_MSO_SERVER = "http://172.99.67.208:8080"
+GLOBAL_MSO_USERNAME = "InfraPortalClient"
+GLOBAL_MSO_PASSWORD = "password1$"
+# openstack info - info to select right info in environment
+GLOBAL_OPENSTACK_KEYSTONE_SERVER = "https://identity.api.rackspacecloud.com"
+# packet generate vnf info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_PACKET_GENERATOR_PORT = "8183"
+GLOBAL_PACKET_GENERATOR_USERNAME = "admin"
+GLOBAL_PACKET_GENERATOR_PASSWORD = "admin"
+GLOBAL_PGN_PORT = "2831"
+# policy info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_POLICY_SERVER_URL = "http://104.239.249.76:8480"
+GLOBAL_POLICY_AUTH = "dGVzdHJlc3Q6M2MwbXBVI2gwMUBOMWMz"
+GLOBAL_POLICY_CLIENTAUTH = "cHl0aG9uOnRlc3Q="
+GLOBAL_POLICY_HEALTHCHECK_URL = "http://104.239.249.76:6969"
+GLOBAL_POLICY_USERNAME = "healthcheck"
+GLOBAL_POLICY_PASSWORD = "zb!XztG34"
+# portal info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_PORTAL_SERVER = "http://104.130.31.32:8989"
+GLOBAL_PORTAL_USERNAME = "demo"
+GLOBAL_PORTAL_PASSWORD = "demo123456!"
+# portal information
+#GLOBAL_PORTAL_URL = "http://vm-ep-dev2.client.research.att.com:8989"
+GLOBAL_PORTAL_URL = "http://vm-ep-dev3.client.research.att.com:8989"
+#GLOBAL_PORTAL_URL = "http://portal.api.simpledemo.openecomp.org:8989"
+GLOBAL_PORTAL_ADMIN_USER = "demo"
+GLOBAL_PORTAL_ADMIN_PWD = "demo123456!"
+GLOBAL_APP_ADMIN_USER = "appdemo"
+GLOBAL_APP_ADMIN_PWD = "appdemo123456!"
+GLOBAL_STA_USER_USER = "stademo"
+GLOBAL_STA_USER_PWD = "stademo123456!"
+#First_Name = "Test20"
+#Last_Name = "Demo20"
+#Email_Address = "Test20@att.com"
+#LoginID = "TestUser20"
+#Loginpwd = "Demo1234!"
+#LoginPwdCheck = "Demo1234!"
+#Existing_User = "Portal"
+# sdngc info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_SDNGC_SERVER = "http://172.99.69.190"
+GLOBAL_SDNGC_REST_PORT = "8282"
+GLOBAL_SDNGC_ADMIN_PORT = "8843"
+GLOBAL_SDNGC_USERNAME = "admin"
+GLOBAL_SDNGC_PASSWORD = "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"
+# vid info - everything is from the private oam network (also called ecomp private network)
+GLOBAL_VID_USERNAME = "demo"
+GLOBAL_VID_PASSWORD = "Kp8bJ4SXszM0WX"
+GLOBAL_VID_HEALTH_USERNAME = "Default"
+GLOBAL_VID_HEALTH_PASSWORD = "AppPassword!1"
+GLOBAL_VID_SERVER = "http://104.130.12.222:8080"
+#global selenium info
+GLOBAL_PROXY_WARNING_TITLE="Notice - Uncategorized Site"
+GLOBAL_PROXY_WARNING_CONTINUE_XPATH="//a[contains(@href, 'accepted-Notify-Uncategorized')]"
+# settings for vm to attach vvg too
+GLOBAL_VVGSERVER_IMAGE = "Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)"
+GLOBAL_VVGSERVER_FLAVOR = "4 GB General Purpose v1"
+# dns info
+GLOBAL_DNS_TRAFFIC_DURATION = "600" \ No newline at end of file
diff --git a/test/csit/tests/portal/testsuites/portal_VID.robot b/test/csit/tests/portal/testsuites/portal_VID.robot
new file mode 100644
index 000000000..473a0464f
--- /dev/null
+++ b/test/csit/tests/portal/testsuites/portal_VID.robot
@@ -0,0 +1,741 @@
+*** Settings ***
+Documentation The main interface for interacting with Portal. It handles low level stuff like managing the selenium request library and Portal required steps
+Library ExtendedSelenium2Library
+Library RequestsClientCert
+Library RequestsLibrary
+Library UUID
+Library DateTime
+Resource ../global_properties.robot
+Resource ../browser_setup.robot
+
+*** Variables ***
+${PORTAL_ENV} /ECOMPPORTAL
+${PORTAL_LOGIN_URL} ${GLOBAL_PORTAL_URL}${PORTAL_ENV}/login.htm
+${PORTAL_HOME_PAGE} ${GLOBAL_PORTAL_URL}${PORTAL_ENV}/applicationsHome
+${PORTAL_MICRO_ENDPOINT} ${GLOBAL_PORTAL_URL}${PORTAL_ENV}/commonWidgets
+${PORTAL_HOME_URL} ${GLOBAL_PORTAL_URL}${PORTAL_ENV}/applicationsHome
+${App_First_Name} appdemo
+${App_Last_Name} demo
+${App_Email_Address} appdemo@onap.com
+${App_LoginID} appdemo
+${App_Loginpwd} demo123456!
+${App_LoginPwdCheck} demo123456!
+${Sta_First_Name} stademo
+${Sta_Last_Name} demo
+${Sta_Email_Address} stademo@onap.com
+${Sta_LoginID} stademo
+${Sta_Loginpwd} demo123456!
+${Sta_LoginPwdCheck} demo123456!
+${Existing_User} portal
+${PORTAL_HEALTH_CHECK_PATH} /ECOMPPORTAL/portalApi/healthCheck
+#${Application} 'Virtual Infrastructure Deployment'
+#${Application_tab} 'select-app-Virtual-Infrastructure-Deployment'
+#${Application_dropdown} 'div-app-name-dropdown-Virtual-Infrastructure-Deployment'
+#${Application_dropdown_select} 'div-app-name-Virtual-Infrastructure-Deployment'
+${APPC_LOGIN_URL} http://104.130.74.99:8282/apidoc/explorer/index.html
+${PORTAL_ASSETS_DIRECTORY} C:\\Users\\kk707x\\Downloads
+
+
+
+
+
+*** Keywords ***
+
+Run Portal Health Check
+ [Documentation] Runs Portal Health check
+ ${resp}= Run Portal Get Request ${PORTAL_HEALTH_CHECK_PATH}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As Strings ${resp.json()['statusCode']} 200
+Run Portal Get Request
+ [Documentation] Runs Portal Get request
+ [Arguments] ${data_path}
+ ${session}= Create Session portal ${GLOBAL_PORTAL_URL}
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ ${resp}= Get Request portal ${data_path} headers=${headers}
+ Log Received response from portal ${resp.text}
+ [Return] ${resp}
+
+
+Portal admin Login To Portal GUI
+ [Documentation] Logs into Portal GUI
+ # Setup Browser Now being managed by test case
+ ##Setup Browser
+ Go To ${PORTAL_LOGIN_URL}
+ Maximize Browser Window
+ Set Selenium Speed ${GLOBAL_SELENIUM_DELAY}
+ Set Browser Implicit Wait ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT}
+ Log Logging in to ${GLOBAL_PORTAL_SERVER}${PORTAL_ENV}
+ # Handle Proxy Warning
+ Title Should Be Login
+ Input Text xpath=//input[@ng-model='loginId'] ${GLOBAL_PORTAL_ADMIN_USER}
+ Input Password xpath=//input[@ng-model='password'] ${GLOBAL_PORTAL_ADMIN_PWD}
+ Click Link xpath=//a[@id='loginBtn']
+ Wait Until Page Contains Element xpath=//img[@alt='Onap Logo'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Log Logged in to ${GLOBAL_PORTAL_SERVER}${PORTAL_ENV}
+
+Portal admin Go To Portal HOME
+ [Documentation] Naviage to Portal Home
+ Go To ${PORTAL_HOME_URL}
+ Wait Until Page Contains Element xpath=//div[@class='applicationWindow'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+
+Portal admin User Notifications
+ [Documentation] Naviage to User notification tab
+ Click Link xpath=//a[@id='parent-item-User-Notifications']
+ Wait Until Element Is Visible xpath=//h1[@class='heading-page'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Click Button xpath=//button[@id='button-openAddNewApp']
+ Click Button xpath=(//button[@id='undefined'])[1]
+ #Click Button xpath=//input[@id='datepicker-start']
+
+Portal admin Add Application Admin New User
+ [Documentation] Naviage to Admins tab
+ Click Link xpath=//a[@title='Admins']
+ Wait Until Element Is Visible xpath=//h1[contains(.,'Admins')] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Page Should Contain Admins
+ Click Button xpath=//button[@ng-click='admins.openAddNewAdminModal()']
+ Click Button xpath=//button[@id='Create-New-User-button']
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.firstName'] ${First_Name}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.lastName'] ${Last_Name}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.emailAddress'] ${Email_Address}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.loginId'] ${LoginID}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.loginPwd'] ${Loginpwd}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.loginPwdCheck'] ${LoginPwdCheck}
+ Click Button xpath=//button[@ng-click='searchUsers.addNewUserFun()']
+ Click Button xpath=//button[@id='search-users-button-next']
+ Click Button xpath=//input[@value='Select application']
+ Scroll Element Into View xpath=(//input[@value='Select application']/following::*[contains(text(),'Virtual Infrastructure Deployment')])[1]
+ #Scroll Element Into View xpath=(//input[@value='Select application']/following::*[contains(text(),'Virtual Infrastructure Deployment')])[1]
+ Click Element xpath=(//li[contains(.,'Virtual Infrastructure Deployment')])[2]
+ Click Button xpath=//button[@id='div-updateAdminAppsRoles']
+ Click Element xpath=//button[@id='admin-div-ok-button']
+ Click Element xpath=//button[@id='div-confirm-ok-button']
+ Click Link xpath=//a[@aria-label='Admins']
+ Click Button xpath=//input[@id='dropdown1']
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Input Text xpath=//input[@id='input-table-search'] ${First_Name}
+ Element Text Should Be xpath=(//span[contains(.,'Test')] )[1] ${First_Name}
+
+
+
+
+Portal admin Add Application Admin Exiting User
+ [Documentation] Naviage to Admins tab
+ Wait Until Element Is Visible xpath=//a[@title='Admins'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Click Link xpath=//a[@title='Admins']
+ Wait Until Element Is Visible xpath=//h1[contains(.,'Admins')] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Page Should Contain Admins
+ Click Button xpath=//button[@ng-click='admins.openAddNewAdminModal()']
+ Input Text xpath=//input[@id='input-user-search'] ${Existing_User}
+ Click Button xpath=//button[@id='button-search-users']
+ Click Element xpath=//span[@id='result-uuid-0']
+ Click Button xpath=//button[@id='search-users-button-next']
+ Click Button xpath=//input[@value='Select application']
+ Scroll Element Into View xpath=(//input[@value='Select application']/following::*[contains(text(),'Virtual Infrastructure Deployment' )])[1]
+
+ Click Element xpath=(//li[contains(.,'Virtual Infrastructure Deployment' )])[2]
+ #Select From List xpath=(//input[@value='Select application']/following::*[contains(text(),'Virtual Infrastructure Deployment')])[1] Virtual Infrastructure Deployment
+ Click Button xpath=//button[@id='div-updateAdminAppsRoles']
+ Click Element xpath=//button[@id='admin-div-ok-button']
+ Click Element xpath=//button[@id='div-confirm-ok-button']
+ Get Selenium Implicit Wait
+ Click Link xpath=//a[@aria-label='Admins']
+ Click Element xpath=//input[@id='dropdown1']
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment' )]
+ Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
+ Element Text Should Be xpath=(//span[contains(.,'portal')])[1] ${Existing_User}
+
+
+Portal admin Delete Application Admin Existing User
+ [Documentation] Naviage to Admins tab
+ Click Element xpath=(//span[contains(.,'portal')] )[1]
+ Click Element xpath=//*[@id='select-app-Virtual-Infrastructure-Deployment']/following::i[@id='i-delete-application']
+ Click Element xpath=//button[@id='div-confirm-ok-button']
+ Click Button xpath=//button[@id='div-updateAdminAppsRoles']
+ Click Element xpath=//button[@id='admin-div-ok-button']
+ #Is Element Visible xpath=(//span[contains(.,'Portal')] )[2]
+ #Is Element Visible xpath=(//*[contains(.,'Portal')] )[2]
+ Element Should Not Contain xpath=//*[@table-data='admins.adminsTableData'] portal
+
+
+Portal admin Add Application admin User New user
+ [Documentation] Naviage to Users tab
+ Click Link xpath=//a[@title='Users']
+ Page Should Contain Users
+ Click Button xpath=//button[@ng-click='users.openAddNewUserModal()']
+ Click Button xpath=//button[@id='Create-New-User-button']
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.firstName'] ${App_First_Name}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.lastName'] ${App_Last_Name}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.emailAddress'] ${App_Email_Address}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.loginId'] ${App_LoginID}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.loginPwd'] ${App_Loginpwd}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.loginPwdCheck'] ${App_LoginPwdCheck}
+ Click Button xpath=//button[@ng-click='searchUsers.addNewUserFun()']
+ Click Button xpath=//button[@id='next-button']
+ #Scroll Element Into View xpath=//div[@id='div-app-name-dropdown-Virtual-Infrastructure-Deployment']
+ Click Element xpath=//*[@id='div-app-name-dropdown-Virtual-Infrastructure-Deployment']
+ Click Element xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::input[@id='Standard-User-checkbox']
+ Set Selenium Implicit Wait 3000
+ Click Button xpath=//button[@id='new-user-save-button']
+ Set Selenium Implicit Wait 3000
+ Go To ${PORTAL_HOME_PAGE}
+ Click Link xpath=//a[@title='Users']
+ Click Element xpath=//input[@id='dropdown1']
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Input Text xpath=//input[@id='input-table-search'] ${App_First_Name}
+ Element Text Should Be xpath=(//span[contains(.,'appdemo')] )[1] ${App_First_Name}
+
+
+Portal admin Add Standard User New user
+ [Documentation] Naviage to Users tab
+ Click Link xpath=//a[@title='Users']
+ Page Should Contain Users
+ Click Button xpath=//button[@ng-click='users.openAddNewUserModal()']
+ Click Button xpath=//button[@id='Create-New-User-button']
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.firstName'] ${Sta_First_Name}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.lastName'] ${Sta_Last_Name}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.emailAddress'] ${Sta_Email_Address}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.loginId'] ${Sta_LoginID}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.loginPwd'] ${Sta_Loginpwd}
+ Input Text xpath=//input[@ng-model='searchUsers.newUser.loginPwdCheck'] ${Sta_LoginPwdCheck}
+ Click Button xpath=//button[@ng-click='searchUsers.addNewUserFun()']
+ Click Button xpath=//button[@id='next-button']
+ #Scroll Element Into View xpath=//div[@id='div-app-name-dropdown-Virtual-Infrastructure-Deployment']
+ Click Element xpath=//*[@id='div-app-name-dropdown-Virtual-Infrastructure-Deployment']
+ Click Element xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::input[@id='Standard-User-checkbox']
+ Set Selenium Implicit Wait 3000
+ Click Button xpath=//button[@id='new-user-save-button']
+ Set Selenium Implicit Wait 3000
+ Go To ${PORTAL_HOME_PAGE}
+ Click Link xpath=//a[@title='Users']
+ Click Element xpath=//input[@id='dropdown1']
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Input Text xpath=//input[@id='input-table-search'] ${Sta_First_Name}
+ Element Text Should Be xpath=(//span[contains(.,'appdemo')] )[1] ${Sta_First_Name}
+
+
+
+Portal admin Add Application Admin Exiting User -APPDEMO
+ [Documentation] Naviage to Admins tab
+ Wait Until Element Is Visible xpath=//a[@title='Admins'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Click Link xpath=//a[@title='Admins']
+ Wait Until Element Is Visible xpath=//h1[contains(.,'Admins')] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Page Should Contain Admins
+ Click Button xpath=//button[@ng-click='admins.openAddNewAdminModal()']
+ Input Text xpath=//input[@id='input-user-search'] ${App_First_Name}
+ Click Button xpath=//button[@id='button-search-users']
+ Click Element xpath=//span[@id='result-uuid-0']
+ Click Button xpath=//button[@id='search-users-button-next']
+ Click Button xpath=//input[@value='Select application']
+ Scroll Element Into View xpath=(//input[@value='Select application']/following::*[contains(text(),'Virtual Infrastructure Deployment' )])[1]
+
+ Click Element xpath=(//li[contains(.,'Virtual Infrastructure Deployment' )])[2]
+ #Select From List xpath=(//input[@value='Select application']/following::*[contains(text(),'Virtual Infrastructure Deployment')])[1] Virtual Infrastructure Deployment
+ Click Button xpath=//button[@id='div-updateAdminAppsRoles']
+ Click Element xpath=//button[@id='admin-div-ok-button']
+ Click Element xpath=//button[@id='div-confirm-ok-button']
+ Get Selenium Implicit Wait
+ Click Link xpath=//a[@aria-label='Admins']
+ Click Element xpath=//input[@id='dropdown1']
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment' )]
+ Input Text xpath=//input[@id='input-table-search'] ${App_First_Name}
+ Element Text Should Be xpath=(//span[contains(.,'appdemo')])[1] ${App_First_Name}
+
+
+
+Portal admin Add Standard User Existing user
+ [Documentation] Naviage to Users tab
+ Click Link xpath=//a[@title='Users']
+ Page Should Contain Users
+ Click Button xpath=//button[@ng-click='users.openAddNewUserModal()']
+ Input Text xpath=//input[@id='input-user-search'] ${Existing_User}
+ Click Button xpath=//button[@id='button-search-users']
+ Click Element xpath=//span[@id='result-uuid-0']
+ Click Button xpath=//button[@id='next-button']
+ Click Element xpath=//*[@id='div-app-name-dropdown-Virtual-Infrastructure-Deployment']
+ Click Element xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::input[@id='Standard-User-checkbox']
+ #Click Element xpath=//div[@id='div-app-name-dropdown-xDemo-App']
+ #Click Element xpath=//div[@id='div-app-name-xDemo-App']/following::input[@id='Standard-User-checkbox']
+
+ Set Selenium Implicit Wait 3000
+ Click Button xpath=//button[@id='new-user-save-button']
+ Set Selenium Implicit Wait 3000
+ #Set Browser Implicit Wait ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT}
+ #Select From List xpath=//input[@value='Select application'] Virtual Infrastructure Deployment
+ #Click Link xpath=//a[@title='Users']
+ #Page Should Contain Users
+ #Focus xpath=//input[@name='dropdown1']
+
+ Go To ${PORTAL_HOME_PAGE}
+ Click Link xpath=//a[@title='Users']
+ Click Element xpath=//input[@id='dropdown1']
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ #Click Element xpath=//li[contains(.,'XDemo App')]
+ Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
+ Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] Standard User
+
+
+Portal admin Edit Standard User Existing user
+ [Documentation] Naviage to Users tab
+ Click Element xpath=(.//*[@id='rowheader_t1_0'])[2]
+ Click Element xpath=//*[@id='div-app-name-dropdown-Virtual-Infrastructure-Deployment']
+ Click Element xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::input[@id='Standard-User-checkbox']
+ Click Element xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::input[@id='System-Administrator-checkbox']
+ Set Selenium Implicit Wait 3000
+ Click Button xpath=//button[@id='new-user-save-button']
+ Set Selenium Implicit Wait 3000
+ Page Should Contain Users
+ #Click Button xpath=//input[@id='dropdown1']
+ #Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
+ Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] System Administrator
+
+
+ Portal admin Delete Standard User Existing user
+ [Documentation] Naviage to Users tab
+ Click Element xpath=(.//*[@id='rowheader_t1_0'])[2]
+ Scroll Element Into View xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::*[@id='app-item-delete'][1]
+ Click Element xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::*[@id='app-item-delete'][1]
+ Click Element xpath=//button[@id='div-confirm-ok-button']
+ Click Button xpath=//button[@id='new-user-save-button']
+ #Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
+ #Is Element Visible xpath=(//*[contains(.,'Portal')] )[2]
+ Element Should Not Contain xpath=//*[@table-data='users.accountUsers'] portal
+
+
+
+
+Functional Top Menu Get Access
+ [Documentation] Naviage to Support tab
+ Click Link xpath=//a[contains(.,'Support')]
+ Mouse Over xpath=//*[contains(text(),'Get Access')]
+ Click Link xpath=//a[contains(.,'Get Access')]
+ Element Text Should Be xpath=//h1[contains(.,'Get Access')] Get Access
+
+
+Functional Top Menu Contact Us
+ [Documentation] Naviage to Support tab
+ Click Link xpath=//a[contains(.,'Support')]
+ Mouse Over xpath=//*[contains(text(),'Contact Us')]
+ Click Link xpath=//a[contains(.,'Contact Us')]
+ Element Text Should Be xpath=//h1[contains(.,'Contact Us')] Contact Us
+ Click Image xpath=//img[@alt='Onap Logo']
+
+
+Portal admin Edit Functional menu
+ [Documentation] Naviage to Edit Functional menu tab
+ Click Link xpath=//a[@title='Edit Functional Menu']
+ Click Link xpath=.//*[@id='Manage']/div/a
+ Click Link xpath=.//*[@id='Design']/div/a
+ Click Link xpath=.//*[@id='Product_Design']/div/a
+ Open Context Menu xpath=//*[@id='Product_Design']/div/span
+ Click Link xpath=//a[@href='#add']
+ Input Text xpath=//input[@id='input-title'] ONAP Test
+ #Input Text xpath=//input[@id='input-url'] http://google.com
+ Click Element xpath=//input[@id='select-app']
+ Scroll Element Into View xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Input Text xpath=//input[@id='input-url'] http://google.com
+ Click Button xpath=//button[@id='button-save-continue']
+ #Click Button xpath=//div[@title='Select Roles']
+ Click Element xpath=//*[@id='app-select-Select Roles']
+ Click Element xpath=//input[@id='Standard-User-checkbox']
+ Click Element xpath=//button[@id='button-save-add']
+ Click Image xpath=//img[@alt='Onap Logo']
+ Set Selenium Implicit Wait 3000
+ Click Link xpath=//a[contains(.,'Manage')]
+ Mouse Over xpath=//*[contains(text(),'Design')]
+ Set Selenium Implicit Wait 3000
+ Element Text Should Be xpath=//a[contains(.,'ONAP Test')] ONAP Test
+ Set Selenium Implicit Wait 3000
+ Click Link xpath=//a[@title='Edit Functional Menu']
+ Click Link xpath=.//*[@id='Manage']/div/a
+ Click Link xpath=.//*[@id='Design']/div/a
+ Click Link xpath=.//*[@id='Product_Design']/div/a
+ Open Context Menu xpath=//*[@id='ONAP_Test']
+ Click Link xpath=//a[@href='#delete']
+ Set Selenium Implicit Wait 3000
+ Click Element xpath=//button[@id='div-confirm-ok-button']
+ Click Image xpath=//img[@alt='Onap Logo']
+ Set Selenium Implicit Wait 3000
+ Click Link xpath=//a[contains(.,'Manage')]
+ Mouse Over xpath=//*[contains(text(),'Design')]
+ Set Selenium Implicit Wait 3000
+ Element Should Not Contain xpath=(.//*[contains(.,'Design')]/following::ul[1])[1] ONAP Test
+
+
+
+
+
+
+
+
+Portal admin Microservice Onboarding
+ [Documentation] Naviage to Edit Functional menu tab
+ Click Link xpath=//a[@title='Microservice Onboarding']
+ Click Button xpath=//button[@id='microservice-onboarding-button-add']
+ Input Text xpath=//input[@name='name'] Test Microservice
+ Input Text xpath=//*[@name='desc'] Test
+ Click Element xpath=//input[@id='microservice-details-input-app']
+ Scroll Element Into View xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Click Element xpath=//*[@name='desc']
+ Input Text xpath=//input[@name='url'] ${PORTAL_MICRO_ENDPOINT}
+ Click Element xpath=//input[@id='microservice-details-input-security-type']
+ Scroll Element Into View xpath=//li[contains(.,'Basic Authentication')]
+ Click Element xpath=//li[contains(.,'Basic Authentication')]
+ Input Text xpath=//input[@name='username'] ${GLOBAL_PORTAL_ADMIN_USER}
+ Input Text xpath=//input[@name='password'] ${GLOBAL_PORTAL_ADMIN_PWD}
+ Click Button xpath=//button[@id='microservice-details-save-button']
+ #Table Column Should Contain xpath=//*[@table-data='serviceList'] 0 Test Microservice
+ Element Text Should Be xpath=//*[@table-data='serviceList'] Test Microservice
+
+
+
+Portal Admin Create Widget for All users
+ [Documentation] Naviage to Create Widget menu tab
+ ${WidgetAttachment}= Catenate ${PORTAL_ASSETS_DIRECTORY}\\widget_news.zip
+ Click Link xpath=//a[@title='Widget Onboarding']
+ Click Button xpath=//button[@id='widget-onboarding-button-add']
+ Input Text xpath=//*[@name='name'] ONAP-VID
+ Input Text xpath=//*[@name='desc'] ONAP VID
+ Click Element xpath=//*[@id='widgets-details-input-endpoint-url']
+ Scroll Element Into View xpath=//li[contains(.,'Test Microservice')]
+ Click Element xpath=//li[contains(.,'Test Microservice')]
+ Click Element xpath=//*[contains(text(),'Allow all user access')]/preceding::input[@ng-model='widgetOnboardingDetails.widget.allUser'][1]
+ Choose File xpath=//input[@id='widget-onboarding-details-upload-file'] ${WidgetAttachment}
+ Click Button xpath=//button[@id='widgets-details-save-button']
+ Wait Until Page Contains ONAP-VID ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Page Should Contain ONAP-VID
+ Set Selenium Implicit Wait 3000
+ GO TO ${PORTAL_HOME_PAGE}
+
+
+Portal Admin Delete Widget for All users
+ [Documentation] Naviage to delete Widget menu tab
+ #Wait Until Page Contains ONAP-VID ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ #Page Should Contain ONAP-VID
+ #Click Image xpath=//img[@alt='Onap Logo']
+ Click Link xpath=//a[@title='Widget Onboarding']
+ Click Element xpath=//input[@id='dropdown1']
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ #Wait Until Page Contains xpath=(.//*[contains(text(),'ONAP-VID')]/followi
+ #Wait Until Page Contains xpath=(.//*[contains(text(),'ONAP-VID')]/following::*[@ng-click='widgetOnboarding.deleteWidget(rowData)'])[1] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Click Element xpath=(.//*[contains(text(),'ONAP-VID')]/following::*[@ng-click='widgetOnboarding.deleteWidget(rowData)'])[1]
+ Click Element xpath=//button[@id='div-confirm-ok-button']
+ Set Selenium Implicit Wait 3000
+ Element Should Not Contain xpath=//*[@table-data='portalAdmin.portalAdminsTableData'] ONAP-VID
+ #Is Element Visible xpath=//*[@table-data='portalAdmin.portalAdminsTableData']
+ #Table Column Should Contain .//*[@table-data='portalAdmin.portalAdminsTableData'] 0 ONAP-VID
+ #Set Selenium Implicit Wait 3000
+
+
+Portal Admin Create Widget for Application Roles
+ [Documentation] Naviage to Create Widget menu tab
+ ${WidgetAttachment}= Catenate ${PORTAL_ASSETS_DIRECTORY}\\widget_news.zip
+ Click Link xpath=//a[@title='Widget Onboarding']
+ Click Button xpath=//button[@id='widget-onboarding-button-add']
+ Input Text xpath=//*[@name='name'] ONAP-VID
+ Input Text xpath=//*[@name='desc'] ONAP VID
+ Click Element xpath=//*[@id='widgets-details-input-endpoint-url']
+ Scroll Element Into View xpath=//li[contains(.,'Test Microservice')]
+ Click Element xpath=//li[contains(.,'Test Microservice')]
+ Click element xpath=//*[@id="app-select-Select Applications"]
+ click element xpath=//*[@id="Virtual-Infrastructure-Deployment-checkbox"]
+ Click element xpath=//*[@name='desc']
+ click element xpath=//*[@id="app-select-Select Roles"]
+ click element xpath=//*[@id="Standard-User-checkbox"]
+ Click element xpath=//*[@name='desc']
+ Scroll Element Into View xpath=//input[@id='widget-onboarding-details-upload-file']
+ Choose File xpath=//input[@id='widget-onboarding-details-upload-file'] ${WidgetAttachment}
+ Click Button xpath=//button[@id='widgets-details-save-button']
+ Click Image xpath=//img[@alt='Onap Logo']
+ Set Selenium Implicit Wait 3000
+ #Wait Until Page Contains ONAP-VID ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Click Link xpath=//a[@title='Widget Onboarding']
+ Click Element xpath=//input[@id='dropdown1']
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Page Should Contain ONAP-VID
+ Set Selenium Implicit Wait 3000
+ GO TO ${PORTAL_HOME_PAGE}
+
+
+
+
+ Portal Admin Delete Widget for Application Roles
+ [Documentation] Naviage to delete Widget menu tab
+ #Wait Until Page Contains ONAP-VID ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ #Page Should Contain ONAP-VID
+ #Click Image xpath=//img[@alt='Onap Logo']
+ Click Link xpath=//a[@title='Widget Onboarding']
+ Click Element xpath=//input[@id='dropdown1']
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ #Wait Until Page Contains xpath=(.//*[contains(text(),'ONAP-VID')]/following::*[@ng-click='widgetOnboarding.deleteWidget(rowData)'])[1] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Click Element xpath=(.//*[contains(text(),'ONAP-VID')]/following::*[@ng-click='widgetOnboarding.deleteWidget(rowData)'])[1]
+ Click Element xpath=//button[@id='div-confirm-ok-button']
+ Set Selenium Implicit Wait 3000
+ Element Should Not Contain xpath=//*[@table-data='portalAdmin.portalAdminsTableData'] ONAP-VID
+ #Is Element Visible xpath=//*[@table-data='portalAdmin.portalAdminsTableData']
+ #Table Column Should Contain .//*[@table-data='portalAdmin.portalAdminsTableData'] 0 ONAP-VID
+ #Set Selenium Implicit Wait 3000
+
+
+
+Portal Admin Edit Widget
+ [Documentation] Naviage to Home tab
+ #Mouse Over xpath=(//h3[contains(text(),'News')]/following::span[1])[1]
+ Click Element xpath=(//h3[contains(text(),'News')]/following::span[1])[1]
+ Set Browser Implicit Wait 8000
+ #Wait Until Element Is Visible xpath=(//h3[contains(text(),'News')]/following::span[1]/following::a[contains(text(),'Edit')])[1] 60
+ Mouse Over xpath=(//h3[contains(text(),'News')]/following::span[1]/following::a[contains(text(),'Edit')])[1]
+ Click Link xpath=(//h3[contains(text(),'News')]/following::span[1]/following::a[contains(text(),'Edit')])[1]
+ Input Text xpath=//input[@name='title'] ONAP_VID
+ Input Text xpath=//input[@name='url'] http://about.att.com/news/international.html
+ Input Text xpath=//input[@id='widget-input-add-order'] 5
+ Click Link xpath=//a[contains(.,'Add New')]
+ Click Element xpath=//div[@id='close-button']
+ Element Should Contain xpath=//*[@table-data='ignoredTableData'] ONAP_VID
+ Click Element xpath=.//div[contains(text(),'ONAP_VID')]/following::*[contains(text(),'5')][1]/following::div[@ng-click='remove($index);'][1]
+ Click Element xpath=//div[@id='confirmation-button-next']
+ Element Should Not Contain xpath=//*[@table-data='ignoredTableData'] ONAP_VID
+ Click Link xpath=//a[@id='close-button']
+
+
+
+
+Portal Admin Broadcast Notifications
+ [Documentation] Portal Test Admin Broadcast Notifications
+ ${CurrentDay}= Get Current Date result_format=%m/%d/%Y
+ ${NextDay}= Get Current Date increment=24:00:00 result_format=%m/%d/%Y
+ ${CurrentDate}= Get Current Date result_format=%m%d%y%H%M
+ ${AdminBroadCastMsg}= catenate ONAP VID Broadcast Automation${CurrentDate}
+ Click Image xpath=//img[@alt='Onap Logo']
+ Set Selenium Implicit Wait 3000
+ Click Link xpath=//*[@id="parent-item-User-Notifications"]
+ Wait until Element is visible xpath=//*[@id="button-openAddNewApp"] timeout=10
+ Click button xpath=//*[@id="button-openAddNewApp"]
+ Input Text xpath=//input[@id='datepicker-start'] ${CurrentDay}
+ Input Text xpath=//input[@id='datepicker-end'] ${NextDay}
+ Input Text xpath=//*[@id="add-notification-input-title"] ONAP VID Broadcast Automation
+ Input Text xpath=//*[@id="user-notif-input-message"] ${AdminBroadCastMsg}
+ click element xpath=//*[@id="button-notification-save"]
+ Wait until Element is visible xpath=//*[@id="button-openAddNewApp"] timeout=10
+ click element xpath=//*[@id="megamenu-notification-button"]
+ click element xpath=//*[@id="notification-history-link"]
+ Wait until Element is visible xpath=//*[@id="notification-history-table"] timeout=10
+ Table Column Should Contain xpath=//*[@id="notification-history-table"] 2 ${AdminBroadCastMsg}
+ log ${AdminBroadCastMsg}
+ [Return] ${AdminBroadCastMsg}
+
+Portal Admin Category Notifications
+ [Documentation] Portal Admin Broadcast Notifications
+ ${CurrentDay}= Get Current Date result_format=%m/%d/%Y
+ ${NextDay}= Get Current Date increment=24:00:00 result_format=%m/%d/%Y
+ ${CurrentDate}= Get Current Date result_format=%m%d%y%H%M
+ ${AdminCategoryMsg}= catenate ONAP VID Category Automation${CurrentDate}
+ Click Link xpath=//a[@id='parent-item-Home']
+ Click Link xpath=//*[@id="parent-item-User-Notifications"]
+ Wait until Element is visible xpath=//*[@id="button-openAddNewApp"] timeout=10
+ Click button xpath=//*[@id="button-openAddNewApp"]
+ #Select Radio Button NO radio-button-no
+ Click Element //*[contains(text(),'Broadcast to All Categories')]/following::*[contains(text(),'No')][1]
+ #Select Radio Button //label[@class='radio'] radio-button-approles
+ Click Element xpath=//*[contains(text(),'Categories')]/following::*[contains(text(),'Application Roles')][1]
+ Click Element xpath=//*[contains(text(),'Virtual Infrastructure Deployment')]/preceding::input[@ng-model='member.isSelected'][1]
+ Input Text xpath=//input[@id='datepicker-start'] ${CurrentDay}
+ Input Text xpath=//input[@id='datepicker-end'] ${NextDay}
+ Input Text xpath=//*[@id="add-notification-input-title"] ONAP VID Category Automation
+ Input Text xpath=//*[@id='user-notif-input-message'] ${AdminCategoryMsg}
+ click element xpath=//*[@id="button-notification-save"]
+ Wait until Element is visible xpath=//*[@id="button-openAddNewApp"] timeout=10
+ click element xpath=//*[@id="megamenu-notification-button"]
+ click element xpath=//*[@id="notification-history-link"]
+ Wait until Element is visible xpath=//*[@id="notification-history-table"] timeout=10
+ Table Column Should Contain xpath=//*[@id="notification-history-table"] 2 ${AdminCategoryMsg}
+ log ${AdminCategoryMsg}
+ [Return] ${AdminCategoryMsg}
+
+
+ Portal admin Logout from Portal GUI
+ [Documentation] Logout from Portal GUI
+ Click Element xpath=//div[@id='header-user-icon']
+ Click Button xpath=//button[contains(.,'Log out')]
+ Title Should Be Login
+
+
+
+Application admin Login To Portal GUI
+ [Documentation] Logs into Portal GUI
+ # Setup Browser Now being managed by test case
+ ##Setup Browser
+ Go To ${PORTAL_LOGIN_URL}
+ Maximize Browser Window
+ Set Selenium Speed ${GLOBAL_SELENIUM_DELAY}
+ Set Browser Implicit Wait ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT}
+ Log Logging in to ${GLOBAL_PORTAL_SERVER}${PORTAL_ENV}
+ # Handle Proxy Warning
+ Title Should Be Login
+ Input Text xpath=//input[@ng-model='loginId'] ${GLOBAL_APP_ADMIN_USER}
+ Input Password xpath=//input[@ng-model='password'] ${GLOBAL_APP_ADMIN_PWD}
+ Click Link xpath=//a[@id='loginBtn']
+ Wait Until Page Contains Element xpath=//img[@alt='Onap Logo'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Log Logged in to ${GLOBAL_PORTAL_SERVER}${PORTAL_ENV}
+
+Application Admin Navigation Application Link Tab
+ [Documentation] Logs into Portal GUI as application admin
+ Click Link xpath=//a[@id='parent-item-Home']
+ Click Element xpath=.//h3[contains(text(),'Virtual Infras...')]/following::div[1]
+ Page Should Contain Welcome to VID
+ Click Element xpath=//i[@class='ion-close-round']
+ Click Element xpath=(.//span[@id='tab-Home'])[1]
+
+
+Application Admin Navigation Functional Menu
+ [Documentation] Logs into Portal GUI as application admin
+ Click Link xpath=//a[contains(.,'Manage')]
+ Mouse Over xpath=//*[contains(text(),'Technology Insertion')]
+ Click Link xpath= //*[contains(text(),'Infrastructure VNF Provisioning')]
+ Page Should Contain Welcome to VID
+ Click Element xpath=//i[@class='ion-close-round']
+ Click Element xpath=(.//span[@id='tab-Home'])[1]
+
+
+Application admin Add Standard User Existing user
+ [Documentation] Naviage to Users tab
+ Click Link xpath=//a[@title='Users']
+ Page Should Contain Users
+ Click Button xpath=//button[@ng-click='users.openAddNewUserModal()']
+ Input Text xpath=//input[@id='input-user-search'] ${Existing_User}
+ Click Button xpath=//button[@id='button-search-users']
+ Click Element xpath=//span[@id='result-uuid-0']
+ Click Button xpath=//button[@id='next-button']
+ Click Element xpath=//*[@id='div-app-name-dropdown-Virtual-Infrastructure-Deployment']
+ Click Element xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::input[@id='Standard-User-checkbox']
+ Set Selenium Implicit Wait 3000
+ Click Button xpath=//button[@id='new-user-save-button']
+ Set Selenium Implicit Wait 3000
+ #Set Browser Implicit Wait ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT}
+ #Select From List xpath=//input[@value='Select application'] Virtual Infrastructure Deployment
+ #Click Link xpath=//a[@title='Users']
+ #Page Should Contain Users
+ Go To ${PORTAL_HOME_PAGE}
+ Set Selenium Implicit Wait 3000
+ Click Link xpath=//a[@title='Users']
+ Click Element xpath=//input[@id='dropdown1']
+ Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
+ Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] Standard User
+
+
+Application admin Edit Standard User Existing user
+ [Documentation] Naviage to Users tab
+ Click Element xpath=(.//*[@id='rowheader_t1_0'])[2]
+ Click Element xpath=//*[@id='div-app-name-dropdown-Virtual-Infrastructure-Deployment']
+ Click Element xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::input[@id='Standard-User-checkbox']
+ Click Element xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::input[@id='System-Administrator-checkbox']
+ Set Selenium Implicit Wait 3000
+ Click Button xpath=//button[@id='new-user-save-button']
+ Set Selenium Implicit Wait 3000
+ Page Should Contain Users
+ #Click Button xpath=//input[@id='dropdown1']
+ #Click Element xpath=//li[contains(.,'Virtual Infrastructure Deployment')]
+ Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
+ Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] System Administrator
+
+
+Application admin Delete Standard User Existing user
+ [Documentation] Naviage to Users tab
+ Click Element xpath=(.//*[@id='rowheader_t1_0'])[2]
+ Scroll Element Into View xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::*[@id='app-item-delete'][1]
+ Click Element xpath=//*[@id='div-app-name-Virtual-Infrastructure-Deployment']/following::*[@id='app-item-delete'][1]
+ Click Element xpath=//button[@id='div-confirm-ok-button']
+ Click Button xpath=//button[@id='new-user-save-button']
+ #Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
+ #Is Element Visible xpath=(//*[contains(.,'Portal')] )[2]
+ Element Should Not Contain xpath=//*[@table-data='users.accountUsers'] Portal
+
+
+
+Application admin Logout from Portal GUI
+ [Documentation] Logout from Portal GUI
+ Click Element xpath=//div[@id='header-user-icon']
+ Click Button xpath=//button[contains(.,'Log out')]
+ #Confirm Action
+ Title Should Be Login
+
+
+Standared user Login To Portal GUI
+ [Documentation] Logs into Portal GUI
+ # Setup Browser Now being managed by test case
+ ##Setup Browser
+ Go To ${PORTAL_LOGIN_URL}
+ Maximize Browser Window
+ Set Selenium Speed ${GLOBAL_SELENIUM_DELAY}
+ Set Browser Implicit Wait ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT}
+ Log Logging in to ${GLOBAL_PORTAL_SERVER}${PORTAL_ENV}
+ # Handle Proxy Warning
+ Title Should Be Login
+ Input Text xpath=//input[@ng-model='loginId'] ${GLOBAL_STA_USER_USER}
+ Input Password xpath=//input[@ng-model='password'] ${GLOBAL_STA_USER_PWD}
+ Click Link xpath=//a[@id='loginBtn']
+ Wait Until Page Contains Element xpath=//img[@alt='Onap Logo'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Log Logged in to ${GLOBAL_PORTAL_SERVER}${PORTAL_ENV}
+
+
+Standared user Navigation Application Link Tab
+ [Documentation] Logs into Portal GUI as application admin
+ #Portal admin Go To Portal HOME
+ Click Element xpath=.//h3[contains(text(),'Virtual Infras...')]/following::div[1]
+ Page Should Contain Welcome to VID
+ Click Element xpath=(.//span[@id='tab-Home'])[1]
+
+
+Standared user Navigation Functional Menu
+ [Documentation] Logs into Portal GUI as application admin
+ Click Link xpath=//a[contains(.,'Manage')]
+ Mouse Over xpath=//*[contains(text(),'Technology Insertion')]
+ Click Link xpath= //*[contains(text(),'Infrastructure VNF Provisioning')]
+ Page Should Contain Welcome to VID
+ Click Element xpath=(.//span[@id='tab-Home'])[1]
+
+
+
+Standared user Broadcast Notifications
+ [Documentation] Logs into Portal GUI as application admin
+ [Arguments] ${AdminBroadCastMsg}
+ Click element xpath=//*[@id='megamenu-notification-button']
+ Click element xpath=//*[@id='notification-history-link']
+ Wait until Element is visible xpath=//*[@id='app-title'] timeout=10
+ Table Column Should Contain xpath=//*[@id='notification-history-table'] 2 ${AdminBroadCastMsg}
+ log ${AdminBroadCastMsg}
+
+
+Standared user Category Notifications
+ [Documentation] Logs into Portal GUI as application admin
+ [Arguments] ${AdminCategoryMsg}
+ #click element xpath=//*[@id='megamenu-notification-button']
+ #click element xpath=//*[@id="notification-history-link"]
+ Wait until Element is visible xpath=//*[@id='app-title'] timeout=10
+ Table Column Should Contain xpath=//*[@id='notification-history-table'] 2 ${AdminCategoryMsg}
+ log ${AdminCategoryMsg}
+
+
+Standared user Logout from Portal GUI
+ [Documentation] Logout from Portal GUI
+ Click Element xpath=//div[@id='header-user-icon']
+ Click Button xpath=//button[contains(.,'Log out')]
+ #Confirm Action
+ Title Should Be Login
+
+
+
+
+Tear Down
+ [Documentation] Close all browsers
+ Close All Browsers
+
+
+
+
+
+
+
diff --git a/test/csit/tests/portal/testsuites/test1.robot b/test/csit/tests/portal/testsuites/test1.robot
new file mode 100644
index 000000000..c19655892
--- /dev/null
+++ b/test/csit/tests/portal/testsuites/test1.robot
@@ -0,0 +1,75 @@
+*** Settings ***
+Documentation This is RobotFrame work script
+Library ExtendedSelenium2Library
+Library OperatingSystem
+Resource ../resources/browser_setup.robot
+#Resource ../resources/Portal/portal_int_par.robot
+Resource ../resources/Portal/portal_VID.robot
+#Resource ../resources/Portal/portal_SDC.robot
+
+
+*** Variables ***
+
+
+*** Test Cases ***
+
+Portal Health Check
+ Run Portal Health Check
+
+
+Portal Admin functionality
+ [Documentation] ONAP Portal Admin functionality test
+ Setup Browser
+ Portal admin Login To Portal GUI
+ Portal admin Microservice Onboarding
+ Portal Admin Create Widget for All users
+ Portal Admin Delete Widget for All users
+ Portal Admin Create Widget for Application Roles
+ Portal Admin Delete Widget for Application Roles
+ Portal admin Add Application admin User New user
+ Portal admin Add Standard User New user
+ Portal admin Add Application Admin Exiting User -APPDEMO
+ Portal admin Add Application Admin Exiting User
+ Portal admin Delete Application Admin Existing User
+ Portal Admin Delete Widget for All users
+ Portal admin Add Standard User Existing user
+ Portal admin Edit Standard User Existing user
+ Portal admin Delete Standard User Existing user
+ Functional Top Menu Get Access
+ Functional Top Menu Contact Us
+ Portal admin Edit Functional menu
+ ${AdminBroadCastMsg}= Portal Admin Broadcast Notifications
+ set global variable ${AdminBroadCastMsg}
+ ${AdminCategoryMsg}= Portal Admin Category Notifications
+ set global variable ${AdminCategoryMsg}
+ Portal admin Logout from Portal GUI
+
+
+Application Admin functionality
+ [Documentation] ONAP Application Admin functionality test
+ Application admin Login To Portal GUI
+# Application Admin Navigation Application Link Tab
+# Application Admin Navigation Functional Menu
+ Application admin Add Standard User Existing user
+ Application admin Edit Standard User Existing user
+ Application admin Delete Standard User Existing user
+ Application admin Logout from Portal GUI
+
+Standared User functionality
+ [Documentation] ONAP Standared User functionality test
+ Standared user Login To Portal GUI
+# Standared user Navigation Application Link Tab
+# Standared user Navigation Functional Menu
+ Standared user Broadcast Notifications ${AdminBroadCastMsg}
+ Standared user Category Notifications ${AdminCategoryMsg}
+
+Teardown
+ [Documentation] Close All Open browsers
+ Close All Browsers
+
+
+
+
+
+
+*** Keywords ***
diff --git a/test/csit/tests/so/sanity-check/data/createService.json b/test/csit/tests/so/sanity-check/data/createService.json
new file mode 100644
index 000000000..3ff629ab5
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/createService.json
@@ -0,0 +1,29 @@
+{
+"requestDetails": {
+"modelInfo": {
+"modelType": "",
+"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+"modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+"modelName": "Test",
+"modelVersion": "1.0"
+},
+"subscriberInfo": {
+"globalSubscriberId": "{some subscriber id}",
+"subscriberName": "{some subscriber name}"
+},
+"requestInfo": {
+"instanceName": "MSO_TEST",
+"source": "VID",
+"suppressRollback": true
+},
+"requestParameters": {
+"subscriptionServiceType": "MOG",
+"userParams": [
+{
+"name": "someUserParam",
+"value": "someValue"
+}
+]
+}
+}
+} \ No newline at end of file
diff --git a/test/csit/tests/so/sanity-check/data/createService_null_input.json b/test/csit/tests/so/sanity-check/data/createService_null_input.json
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/createService_null_input.json
diff --git a/test/csit/tests/so/sanity-check/data/createVnf.json b/test/csit/tests/so/sanity-check/data/createVnf.json
new file mode 100644
index 000000000..7ea3d2475
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/createVnf.json
@@ -0,0 +1,35 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "",
+ "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "vSAMP12",
+ "modelVersion": "1.0",
+ "modelCustomizationName": "vSAMP12 1"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+ },
+ "requestInfo": {
+ "instanceName": "MSOTEST103a",
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "source": "VID",
+ "suppressRollback": false
+ },
+ "relatedInstanceList": [{
+ "relatedInstance": {
+ "instanceId": " {serviceInstanceId} ",
+ "modelInfo": {
+ "modelType": "service",
+ "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+ "modelName": " {parent service model name} ",
+ "modelVersion": "1.0"
+ }
+ }
+ }],
+ "requestParameters": {}
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/deleteService.json b/test/csit/tests/so/sanity-check/data/deleteService.json
new file mode 100644
index 000000000..593fdd30f
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/deleteService.json
@@ -0,0 +1,13 @@
+{
+"requestDetails": {
+"modelInfo": {
+"modelType": "",
+"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+"modelName": " Test ",
+"modelVersion": "1.0"
+},
+"requestInfo": {
+"source": "VID"
+}
+}
+}
diff --git a/test/csit/tests/so/sanity-check/data/deleteVnf.json b/test/csit/tests/so/sanity-check/data/deleteVnf.json
new file mode 100644
index 000000000..f326a12db
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/deleteVnf.json
@@ -0,0 +1,20 @@
+{
+"requestDetails": {
+"modelInfo": {
+"modelType": "",
+"modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+"modelName": "vSAMP12",
+"modelVersion": "1"
+},
+"cloudConfiguration": {
+"lcpCloudRegionId": "mdt1",
+"tenantId": "88a6ca3ee0394ade9403f075db23167e"
+},
+"requestInfo": {
+"source": "VID"
+},
+"requestParameters": {
+"userParams": []
+}
+}
+}
diff --git a/test/csit/tests/so/sanity-check/sanity_test_so.robot b/test/csit/tests/so/sanity-check/sanity_test_so.robot
index e53b46c4c..2e05c50f1 100644
--- a/test/csit/tests/so/sanity-check/sanity_test_so.robot
+++ b/test/csit/tests/so/sanity-check/sanity_test_so.robot
@@ -1,25 +1,71 @@
-*** settings ***
-Resource ../../common.robot
+*** Settings ***
Library Collections
Library RequestsLibrary
Library OperatingSystem
Library json
-Library HttpLibrary.HTTP
*** Variables ***
-@{return_ok_list}= 200 201 202
-${queryservice_url} /api/so/v1/services/5212b49f-fe70-414f-9519-88bec35b3190
-${service_id}
-${operation_id}
+${MESSAGE} Hello, world!
+
*** Test Cases ***
-soQueryServiceFuncTest
- [Documentation] query single service rest test
- ${headers} Create Dictionary Content-Type=application/json Accept=application/json
- Create Session web_session http://${MSB_IP} headers=${headers}
- ${resp}= Get Request web_session ${queryservice_url}
- ${responese_code}= Convert To String ${resp.status_code}
- List Should Contain Value ${return_ok_list} ${responese_code}
- ${response_json} json.loads ${resp.content}
- ${serviceName}= Convert To String ${response_json['serviceName']}
- Should Be Equal ${serviceName} test_so
+Create ServiceInstance for invalid input
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}createService.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v2 data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Create ServiceInstance for invalid user
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}createService.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQxOnBhc3N3b3JkMTI= Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v2 data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Delete ServiceInstance for invalid input
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}deleteService.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Delete Request refrepo /ecomp/mso/infra/serviceInstances/v2/ff305d54-75b4-431b-adb2-eb6b9e5ff000 data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Delete ServiceInstance for invalid user
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}deleteService.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQxOnBhc3N3b3JkMTI== Content-Type=application/json Accept=application/json
+ ${resp}= Delete Request refrepo /ecomp/mso/infra/serviceInstances/v2/ff305d54-75b4-431b-adb2-eb6b9e5ff000 data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+SO ServiceInstance health check
+ Create Session refrepo http://${REPO_IP}:8080
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Get Request refrepo /ecomp/mso/infra/orchestrationRequests/v2/rq1234d1-5a33-55df-13ab-12abad84e333 headers=${headers}
+ Should Not Contain ${resp.content} null
+
+Create VnfInstance for invalid input
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}createVnf.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v2/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Create VnfInstance for invalid credential
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}createVnf.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQxOnBhc3N3b3JkMTI= Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v2/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Delete VnfInstance for invalid input
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}deleteVnf.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Delete Request refrepo /ecomp/mso/infra/serviceInstances/v2/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/aca51b0a-710d-4155-bc7c-7cef19d9a94e data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Get Orchestration Requests
+ Create Session refrepo http://${REPO_IP}:8080
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Get Request refrepo /ecomp/mso/infra/orchestrationRequests/v2 headers=${headers}
+ Should Not Contain ${resp.content} null \ No newline at end of file
diff --git a/test/csit/tests/vfc/gvnfm-vnflcm/test.robot b/test/csit/tests/vfc/gvnfm-vnflcm/test.robot
new file mode 100644
index 000000000..47ff25f53
--- /dev/null
+++ b/test/csit/tests/vfc/gvnfm-vnflcm/test.robot
@@ -0,0 +1,21 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/vnflcm/v1/swagger.json
+
+*** Test Cases ***
+VnflcmSwaggerTest
+ [Documentation] query swagger info vnflcm
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${VNFLCM_IP}:8801 headers=${headers}
+ ${resp}= Get Request web_session ${queryswagger_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${swagger_version}= Convert To String ${response_json['swagger']}
+ Should Be Equal ${swagger_version} 2.0
diff --git a/test/csit/tests/vfc/gvnfm-vnfmgr/test.robot b/test/csit/tests/vfc/gvnfm-vnfmgr/test.robot
new file mode 100644
index 000000000..90392c982
--- /dev/null
+++ b/test/csit/tests/vfc/gvnfm-vnfmgr/test.robot
@@ -0,0 +1,14 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/vnfmgr/v1/swagger.json
+
+*** Test Cases ***
+NslcmSwaggerTest
+ [Documentation] query vnfmgr swagger info rest test
+ Should Be Equal 2.0 2.0
diff --git a/test/csit/tests/vfc/gvnfm-vnfres/test.robot b/test/csit/tests/vfc/gvnfm-vnfres/test.robot
new file mode 100644
index 000000000..fb87435be
--- /dev/null
+++ b/test/csit/tests/vfc/gvnfm-vnfres/test.robot
@@ -0,0 +1,21 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/vnfres/v1/swagger.json
+
+*** Test Cases ***
+VnfresSwaggerTest
+ [Documentation] query vnfres swagger info rest test
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${VNFRES_IP}:8802 headers=${headers}
+ ${resp}= Get Request web_session ${queryswagger_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${swagger_version}= Convert To String ${response_json['swagger']}
+ Should Be Equal ${swagger_version} 2.0
diff --git a/test/csit/tests/vfc/nfvo-catalog/test.robot b/test/csit/tests/vfc/nfvo-catalog/test.robot
new file mode 100644
index 000000000..99dff9bd2
--- /dev/null
+++ b/test/csit/tests/vfc/nfvo-catalog/test.robot
@@ -0,0 +1,19 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/catalog/v1/swagger.json
+${queryVNFPackage_url} /api/catalog/v1/vnfpackages
+${queryNSPackages_url} /api/catalog/v1/nspackages
+
+*** Test Cases ***
+GetVNFPackages
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${CATALOG_IP}:8806 headers=${headers}
+ ${resp}= Get Request web_session ${queryVNFPackage_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
diff --git a/test/csit/tests/vfc/nfvo-driver-ems/test.robot b/test/csit/tests/vfc/nfvo-driver-ems/test.robot
new file mode 100644
index 000000000..a35a54288
--- /dev/null
+++ b/test/csit/tests/vfc/nfvo-driver-ems/test.robot
@@ -0,0 +1,15 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/emsdriver/v1/swagger
+
+*** Test Cases ***
+EMSDriverSwaggerTest
+ [Documentation] query swagger info of emsdriver
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Should Be Equal 2.0 2.0
diff --git a/test/csit/tests/vfc/nfvo-driver-gvnfm/gvnfmdriver.robot b/test/csit/tests/vfc/nfvo-driver-gvnfm/gvnfmdriver.robot
new file mode 100644
index 000000000..e7dd612a7
--- /dev/null
+++ b/test/csit/tests/vfc/nfvo-driver-gvnfm/gvnfmdriver.robot
@@ -0,0 +1,21 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/gvnfmdriver/v1/swagger.json
+
+*** Test Cases ***
+VnfresSwaggerTest
+ [Documentation] query gvnfmdriver swagger info rest test
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${GVNFMDRIVER_IP}:8484 headers=${headers}
+ ${resp}= Get Request web_session ${queryswagger_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${swagger_version}= Convert To String ${response_json['swagger']}
+ Should Be Equal ${swagger_version} 2.0
diff --git a/test/csit/tests/vfc/nfvo-driver-gvnfm/jujudriver.robot b/test/csit/tests/vfc/nfvo-driver-gvnfm/jujudriver.robot
new file mode 100644
index 000000000..d571ee91f
--- /dev/null
+++ b/test/csit/tests/vfc/nfvo-driver-gvnfm/jujudriver.robot
@@ -0,0 +1,16 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library simplejson
+Library OperatingSystem
+Library json
+Library HttpLibrary.HTTP
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /openoapi/jujuvnfm/v1/swagger.json
+
+*** Test Cases ***
+SwaggerFuncTest
+ [Documentation] query swagger info rest test
+ Should Be Equal 2.0 2.0
diff --git a/test/csit/tests/vfc/nfvo-driver-sfc/test.robot b/test/csit/tests/vfc/nfvo-driver-sfc/test.robot
new file mode 100644
index 000000000..131159432
--- /dev/null
+++ b/test/csit/tests/vfc/nfvo-driver-sfc/test.robot
@@ -0,0 +1,21 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/ztesdncdriver/v1/swagger
+
+*** Test Cases ***
+ZteSdncDriverSwaggerTest
+ [Documentation] query swagger info of ztesdncdriver
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${SFC_DRV_IP}:8411 headers=${headers}
+ ${resp}= Get Request web_session ${queryswagger_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${swagger_version}= Convert To String ${response_json['swagger']}
+ Should Be Equal ${swagger_version} 2.0
diff --git a/test/csit/tests/vfc/nfvo-driver-svnfm/huawei.robot b/test/csit/tests/vfc/nfvo-driver-svnfm/huawei.robot
new file mode 100644
index 000000000..3277e7782
--- /dev/null
+++ b/test/csit/tests/vfc/nfvo-driver-svnfm/huawei.robot
@@ -0,0 +1,16 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library simplejson
+Library OperatingSystem
+Library json
+Library HttpLibrary.HTTP
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/hwvnfm/v1/swagger.json
+
+*** Test Cases ***
+SwaggerFuncTest
+ [Documentation] query swagger info rest test
+ Should Be Equal 2.0 2.0
diff --git a/test/csit/tests/vfc/nfvo-driver-svnfm/ztevmanager.robot b/test/csit/tests/vfc/nfvo-driver-svnfm/ztevmanager.robot
new file mode 100644
index 000000000..7d7d305b1
--- /dev/null
+++ b/test/csit/tests/vfc/nfvo-driver-svnfm/ztevmanager.robot
@@ -0,0 +1,21 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/ztevmanagerdriver/v1/swagger.json
+
+*** Test Cases ***
+VnfresSwaggerTest
+ [Documentation] query ztevmanagerdriver swagger info rest test
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${ZTEVMANAGERDRIVER_IP}:8410 headers=${headers}
+ ${resp}= Get Request web_session ${queryswagger_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${swagger_version}= Convert To String ${response_json['swagger']}
+ Should Be Equal ${swagger_version} 2.0
diff --git a/test/csit/tests/vfc/nfvo-lcm/jsoninput/create_ns.json b/test/csit/tests/vfc/nfvo-lcm/jsoninput/create_ns.json
new file mode 100644
index 000000000..bb39364bb
--- /dev/null
+++ b/test/csit/tests/vfc/nfvo-lcm/jsoninput/create_ns.json
@@ -0,0 +1,6 @@
+{
+ "nsName": "ns1",
+ "csarId": "123",
+ "description": "ns1 desc",
+ "test": "test"
+} \ No newline at end of file
diff --git a/test/csit/tests/vfc/nfvo-lcm/test.robot b/test/csit/tests/vfc/nfvo-lcm/test.robot
index 907558f0c..44d23292e 100644
--- a/test/csit/tests/vfc/nfvo-lcm/test.robot
+++ b/test/csit/tests/vfc/nfvo-lcm/test.robot
@@ -1,14 +1,64 @@
*** settings ***
+Resource ../../common.robot
Library Collections
Library RequestsLibrary
Library OperatingSystem
Library json
+Library HttpLibrary.HTTP
*** Variables ***
-@{return_ok_list}= 200 201 202
+@{return_ok_list}= 200 201 202 204
${queryswagger_url} /api/nslcm/v1/swagger.json
+${create_ns_url} /api/nslcm/v1/ns
+${delete_ns_url} /api/nslcm/v1/ns
+
+#json files
+${create_ns_json} ${SCRIPTS}/../tests/vfc/nfvo-lcm/jsoninput/create_ns.json
+
+#global variables
+${nsInstId}
*** Test Cases ***
NslcmSwaggerTest
- [Documentation] query nslcm swagger info rest test
- Should Be Equal 2.0 2.0
+ [Documentation] query swagger info of nslcm
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${NSLCM_IP}:8403 headers=${headers}
+ ${resp}= Get Request web_session ${queryswagger_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${swagger_version}= Convert To String ${response_json['swagger']}
+ Should Be Equal ${swagger_version} 2.0
+
+NslcmSwaggerByMSBTest
+ [Documentation] query swagger info of nslcm by MSB
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${MSB_IAG_IP}:80 headers=${headers}
+ ${resp}= Get Request web_session ${queryswagger_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${swagger_version}= Convert To String ${response_json['swagger']}
+ Should Be Equal ${swagger_version} 2.0
+
+CreateNSTest
+ [Documentation] Create NS function test
+ ${json_value}= json_from_file ${create_ns_json}
+ ${json_string}= string_from_json ${json_value}
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${MSB_IAG_IP}:80 headers=${headers}
+ Set Request Body ${json_string}
+ ${resp}= Post Request web_session ${create_ns_url} ${json_string}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${nsInstId}= Convert To String ${response_json['nsInstanceId']}
+ Set Global Variable ${nsInstId}
+
+DeleteNS Test
+ [Documentation] Delete NS function test
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${MSB_IAG_IP}:80 headers=${headers}
+ ${resp}= Delete Request web_session ${delete_ns_url}/${nsInstId}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
diff --git a/test/csit/tests/vfc/nfvo-resmanagement/test.robot b/test/csit/tests/vfc/nfvo-resmanagement/test.robot
new file mode 100644
index 000000000..996cf5845
--- /dev/null
+++ b/test/csit/tests/vfc/nfvo-resmanagement/test.robot
@@ -0,0 +1,16 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library simplejson
+Library OperatingSystem
+Library json
+Library HttpLibrary.HTTP
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/resmgr/v1/swagger.json
+
+*** Test Cases ***
+SwaggerFuncTest
+ [Documentation] query swagger info rest test
+ Should Be Equal 2.0 2.0