download_packages(){
echo -e "\nDownloading packages ${PACKAGES}"
rm -rf ${PACKAGES_FOLDER}
- git clone https://osm.etsi.org/gitlab/vnf-onboarding/osm-packages.git ${PACKAGES_FOLDER} && (cd ${PACKAGES_FOLDER} && \
- git checkout ${PACKAGES})
+ git clone https://osm.etsi.org/gitlab/vnf-onboarding/osm-packages.git ${PACKAGES_FOLDER}
}
+download_tst010(){
+ # Fetch conformance tests
+ git clone --single-branch --branch ${NFV_TESTS_BRANCH} https://forge.etsi.org/rep/nfv/api-tests.git /robot-systest/conformance-tests/repo
+ python3 -m pip install -r /robot-systest/conformance-tests/repo/requirements.txt
+}
+
+create_vim(){
+
+ attempts=3
+ while [ $attempts -ge 0 ] ; do
+ echo -e "\n$( date '+%F_%H:%M:%S' ) Creating VIM ${VIM_TARGET}"
+ osm vim-create --name ${VIM_TARGET} --user ${OS_USERNAME} --password ${OS_PASSWORD} --tenant ${OS_PROJECT_NAME} \
+ --auth_url ${OS_AUTH_URL} --account_type openstack --description vim \
+ --config "{management_network_name: ${VIM_MGMT_NET}, dataplane_physical_net: ${DATAPLANE:-physnet2}}" || true
+ STATUS=""
+ i=0
+ while [[ ${STATUS} != "ENABLED" ]]
+ do
+ ((i++))
+ if [[ $i -eq 5 ]]; then
+ echo "VIM stuck for more than 50 seconds as: ${VIM_LIST}"
+ osm vim-delete --force ${VIM_TARGET}
+ sleep 5
+ break
+ fi
+ sleep 10
+ VIM_LIST=`osm vim-list --long | grep ${VIM_TARGET}`
+ echo VIM status: ${VIM_LIST}
+ STATUS=`echo ${VIM_LIST} | grep -io ENABLED`
+ done
+ if [[ ${STATUS} = "ENABLED" ]] ; then
+ break
+ fi
+ ((attempts--))
+ done
+ if [ $attempts -lt 0 ] ; then
+ echo "VIM failed to enter ENABLED state"
+ exit 1
+ fi
+ if [ -n "${SDNC_URL}" ]; then
+ osm sdnc-create --name sdnc-osm --type ${SDNC_TYPE} --user ${SDNC_USER} --password ${SDNC_PASSWORD} --url ${SDNC_URL}
+ COUNTER=0
+ STATUS=""
+ while [ ${COUNTER} -lt 5 ] ; do
+ echo "Checking status of SDNC sdnc-osm to see if it is enabled"
+ STATUS=$(osm sdnc-show sdnc-osm |grep -io ENABLED)
+ if [ "${STATUS}" == "ENABLED" ]; then
+ break
+ fi
+ ((COUNTER++))
+ sleep 10
+ done
+ if [ "${STATUS}" == "ENABLED" ]; then
+ echo "SDNC enabled"
+ else
+ echo "SDNC failed to enter ENABLED state"
+ osm sdnc-show sdnc-osm
+ exit 1
+ fi
+ if [ -f /root/port-mapping.yaml ]; then
+ osm vim-update ${VIM_TARGET} --sdn_controller sdnc-osm --sdn_port_mapping /root/port-mapping.yaml
+ COUNTER2=0
+ RESULT=""
+ while [ ${COUNTER2} -lt 5 ] ; do
+ echo "Checking status of VIM $VIM_TARGET to see if there is port-mapping"
+ osm vim-show $VIM_TARGET |grep sdn-port-mapping
+ if [ $? -eq 0 ]; then
+ RESULT="OK"
+ break
+ fi
+ ((COUNTER2++))
+ sleep 10
+ done
+ if [ "${RESULT}" == "OK" ]; then
+ echo "Port-mapping correctly added"
+ else
+ echo "Port-mapping failed to be added"
+ osm vim-show ${VIM_TARGET}
+ exit 1
+ fi
+ fi
+ fi
+}
+
+
PARAMS=""
+RUN_CONFORMANCE_TESTS=false
while (( "$#" )); do
case "$1" in
shift 2
;;
-o|--osmclientversion)
- OSMCLIENT=$2 install_osmclient
+ OSMCLIENT=$2 && install_osmclient
shift 2
;;
+ -c|--createvim)
+ create_vim
+ shift 1
+ ;;
+ -T)
+ NFV_TESTS_BRANCH=$2 && download_tst010
+ RUN_CONFORMANCE_TESTS=true
+ shift 1
+ ;;
-h|--help)
echo "OSM TESTS TOOL
-v <path_to_reports>:/reports osmtests \\
-v <path_to_clouds.yaml>:/robot-systest/clouds.yaml \\
-v <path_to_kubeconfig>:/root/.kube/config \\
+ -v <path_to_jujudata>:/root/.local/share/juju \\
-o <osmclient_version> \\
-p <package_branch> \\
-t <testing_tags>
-
+
Options:
--env-file: It is the environmental file where is described the OSM target and VIM
-o <osmclient_version> [OPTIONAL]: It is used to specify a particular osmclient version. Default: latest
-p <package_branch> [OPTIONAL]: OSM packages repository branch. Default: master
- -t <testing_tags> [OPTIONAL]: Robot tests tags. [sanity, regression, particular_test]. Default: sanity
+ -t <testing_tags> [OPTIONAL]: Robot tests tags. [sanity, daily, regression, particular_test]. Default: sanity
+ -T <testing_branch> [OPTIONAL]: Run SOL005 Robot conformance tests
+ -c To create a VIM for the tests
Volumes:
<path_to_reports> [OPTIONAL]: It is the absolute path to reports location in the host
<path_to_clouds.yaml> [OPTIONAL]: It is the absolute path to the clouds.yaml file in the host
- <path_to_kubeconfig> [OPTIONAL]: It is the kubeconfig file to be used for k8s clusters"
+ <path_to_kubeconfig> [OPTIONAL]: It is the kubeconfig file to be used for k8s clusters
+ <path_to_jujudata> [OPTIONAL]: It is the jujudata file to be used for juju cli"
exit 0
;;
eval set -- "$PARAMS"
-if [[ -z $TEST ]]; then
+if [[ -n "$BRANCH_NAME" ]]; then
+ PACKAGES=$BRANCH_NAME && download_packages
+ OSMCLIENT=$BRANCH_NAME && install_osmclient
+fi
+
+
+if [ "$RUN_CONFORMANCE_TESTS" = true ] ; then
+ python3 ${ROBOT_DEVOPS_FOLDER}/conformance-tests/run_conformance_tests.py
+fi
+
+if [[ -z "${TEST}" ]]; then
printf "Test not provided. \nRunning default test: sanity\n"
TEST="sanity"
fi
-
-if [[ -n "$TEST" ]]; then
+if [[ -n "${TEST}" ]]; then
robot -d ${ROBOT_DEVOPS_FOLDER}/reports -i ${TEST} ${ROBOT_DEVOPS_FOLDER}/testsuite/
exit 0
else