X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=bootstrap.sh;h=2d26bccfad59ca4625b9b9512bb2d10b09ce9dde;hp=ebbe752a4eedeecf54d17aafffab722177b954b3;hb=5dc134628f7eef7fd609625c2ed291199ee6420f;hpb=0650d657240d7f1123a287d505fac7de8e91528b diff --git a/bootstrap.sh b/bootstrap.sh index ebbe752a4e..2d26bccfad 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) 2016 Cisco and/or its affiliates. +# Copyright (c) 2018 Cisco and/or its affiliates. # 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: @@ -20,40 +20,49 @@ cat /etc/hosts SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" export PYTHONPATH=${SCRIPT_DIR} -if [ -f "/etc/redhat-release" ]; then +OS_ID=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g') +OS_VERSION_ID=$(grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g') + +if [ "$OS_ID" == "centos" ]; then DISTRO="CENTOS" - sudo yum install -y python-devel python-virtualenv - VPP_ARTIFACTS="vpp vpp-devel vpp-lib vpp-plugins" - DPDK_ARTIFACTS="" PACKAGE="rpm" - VPP_CLASSIFIER="" - DPDK_STABLE_VER=$(cat ${SCRIPT_DIR}/DPDK_STABLE_VER).x86_64 - VPP_REPO_URL=$(cat ${SCRIPT_DIR}/VPP_REPO_URL_CENTOS) - VPP_STABLE_VER=$(cat ${SCRIPT_DIR}/VPP_STABLE_VER_CENTOS) - VIRL_TOPOLOGY=$(cat ${SCRIPT_DIR}/VIRL_TOPOLOGY_CENTOS) - VIRL_RELEASE=$(cat ${SCRIPT_DIR}/VIRL_RELEASE_CENTOS) - SHARED_MEMORY_PATH="/dev/shm" -else + sudo yum install -y python-devel python-virtualenv +elif [ "$OS_ID" == "ubuntu" ]; then DISTRO="UBUNTU" + PACKAGE="deb" export DEBIAN_FRONTEND=noninteractive sudo apt-get -y update sudo apt-get -y install libpython2.7-dev python-virtualenv - VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-lib vpp-plugins" - DPDK_ARTIFACTS="vpp-dpdk-dkms" - PACKAGE="deb" - VPP_CLASSIFIER="-deb" - DPDK_STABLE_VER=$(cat ${SCRIPT_DIR}/DPDK_STABLE_VER)_amd64 - VPP_REPO_URL=$(cat ${SCRIPT_DIR}/VPP_REPO_URL_UBUNTU) - VPP_STABLE_VER=$(cat ${SCRIPT_DIR}/VPP_STABLE_VER_UBUNTU) - VIRL_TOPOLOGY=$(cat ${SCRIPT_DIR}/VIRL_TOPOLOGY_UBUNTU) - VIRL_RELEASE=$(cat ${SCRIPT_DIR}/VIRL_RELEASE_UBUNTU) - SHARED_MEMORY_PATH="/run/shm" +else + echo "$OS_ID is not yet supported." + exit 1 fi +# Temporarily download VPP and DPDK packages from nexus.fd.io +if [ "${#}" -ne "0" ]; then + arr=(${@}) + echo ${arr[0]} + SKIP_PATCH="skip_patchORskip_vpp_patch" +else + VPP_VERSION=$(< ${SCRIPT_DIR}/VPP_STABLE_VER_${DISTRO}) + CSIT_DIR=${SCRIPT_DIR} + source "${SCRIPT_DIR}/resources/libraries/bash/function/artifacts.sh" + download_artifacts + # Need to revert -euo as the rest of script is not optimized for this. + set +euo pipefail +fi + +VIRL_DIR_LOC="/tmp/" +VPP_PKGS=(vpp*.$PACKAGE) +VPP_PKGS_FULL=("${VPP_PKGS[@]/#/${VIRL_DIR_LOC}}") +echo ${VPP_PKGS[@]} + +VIRL_TOPOLOGY=$(cat ${SCRIPT_DIR}/VIRL_TOPOLOGY_${DISTRO}) +VIRL_RELEASE=$(cat ${SCRIPT_DIR}/VIRL_RELEASE_${DISTRO}) VIRL_SERVERS=("10.30.51.28" "10.30.51.29" "10.30.51.30") IPS_PER_VIRL=( "10.30.51.28:252" - "10.30.51.29:74" - "10.30.51.30:74" ) + "10.30.51.29:252" + "10.30.51.30:252" ) SIMS_PER_VIRL=( "10.30.51.28:13" "10.30.51.29:13" "10.30.51.30:13" ) @@ -92,7 +101,7 @@ VIRL_SERVER_EXPECTED_STATUS="PRODUCTION" SSH_OPTIONS="-i ${VIRL_PKEY} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes -o LogLevel=error" -TEST_GROUPS=("crypto,ip4_tunnels.softwire,ip4_tunnels.vxlan,telemetry" "ip4,ip4_tunnels.gre,ip4_tunnels.lisp,ip6_tunnels.vxlan,vm_vhost.ip4,vm_vhost.ip6" "interfaces,ip6,ip6_tunnels.lisp,l2bd,l2xc,vm_vhost.l2bd,vm_vhost.l2xc") +TEST_GROUPS=("crypto,ip4_tunnels.softwire,ip4_tunnels.vxlan" "ip4,ip4_tunnels.gre,ip4_tunnels.lisp,ip6_tunnels.vxlan,ip6_tunnels.lisp,vm_vhost.ip4,vm_vhost.ip6" "interfaces,ip6,l2bd,l2xc,vm_vhost.l2bd,vm_vhost.l2xc,telemetry") SUITE_PATH="tests.vpp.func" SKIP_PATCH="SKIP_PATCH" @@ -190,33 +199,6 @@ done echo "Selected VIRL servers: ${VIRL_SERVER[@]}" -# Temporarily download VPP and DPDK packages from nexus.fd.io -if [ "${#}" -ne "0" ]; then - arr=(${@}) - echo ${arr[0]} - SKIP_PATCH="skip_patchORskip_vpp_patch" -else - rm -f *.${PACKAGE} - for ARTIFACT in ${DPDK_ARTIFACTS}; do - wget -q "${VPP_REPO_URL}/${ARTIFACT}/${DPDK_STABLE_VER}/${ARTIFACT}-${DPDK_STABLE_VER}${VPP_CLASSIFIER}.${PACKAGE}" || exit - done - for ARTIFACT in ${VPP_ARTIFACTS}; do - wget -q "${VPP_REPO_URL}/${ARTIFACT}/${VPP_STABLE_VER}/${ARTIFACT}-${VPP_STABLE_VER}${VPP_CLASSIFIER}.${PACKAGE}" || exit - done -fi - -VPP_PKGS=(*.$PACKAGE) -echo ${VPP_PKGS[@]} -VIRL_DIR_LOC="/tmp" -VPP_PKGS_FULL=(${VPP_PKGS[@]}) - -# Prepend directory location at remote host to package file list -for index in "${!VPP_PKGS_FULL[@]}"; do - VPP_PKGS_FULL[${index}]=${VIRL_DIR_LOC}/${VPP_PKGS_FULL[${index}]} -done - -echo "Updated file names: " ${VPP_PKGS_FULL[@]} - cat ${VIRL_PKEY} # Copy the files to VIRL hosts @@ -228,8 +210,8 @@ for index in "${!VIRL_SERVER[@]}"; do if [ "${copy}" -eq "0" ]; then echo "VPP packages have already been copied to the VIRL host ${VIRL_SERVER[${index}]}" else - scp ${SSH_OPTIONS} *.${PACKAGE} \ - ${VIRL_USERNAME}@${VIRL_SERVER[${index}]}:${VIRL_DIR_LOC}/ + scp ${SSH_OPTIONS} ${VPP_PKGS[@]} \ + ${VIRL_USERNAME}@${VIRL_SERVER[${index}]}:${VIRL_DIR_LOC} result=$? if [ "${result}" -ne "0" ]; then @@ -263,10 +245,14 @@ for index in "${!VIRL_SERVER[@]}"; do # Set quota to lower value IP_QUOTA=$([ $max_ips -le $max_ips_from_sims ] && echo "$max_ips" || echo "$max_ips_from_sims") # Start the simulation - VIRL_SID[${index}]=$(ssh ${SSH_OPTIONS} \ - ${VIRL_USERNAME}@${VIRL_SERVER[${index}]} \ - "start-testcase -vv --quota ${IP_QUOTA} --copy ${VIRL_TOPOLOGY} \ - --release ${VIRL_RELEASE} ${VPP_PKGS_FULL[@]}") + VIRL_SID[${index}]=$(ssh ${SSH_OPTIONS} ${VIRL_USERNAME}@${VIRL_SERVER[${index}]} \ + "start-testcase -vv \ + --quota ${IP_QUOTA} \ + --copy ${VIRL_TOPOLOGY} \ + --release ${VIRL_RELEASE} \ + ${VPP_PKGS_FULL[@]}") + # TODO: remove param ${VPP_PKGS_FULL[@]} when start-testcase script is + # updated on all virl servers retval=$? if [ ${retval} -ne "0" ]; then echo "VIRL simulation start failed on ${VIRL_SERVER[${index}]}" @@ -332,6 +318,7 @@ function run_test_set() { --include vm_envAND3_node_single_link_topo \ --include vm_envAND3_node_double_link_topo \ --exclude PERFTEST \ + --exclude SOFTWIRE \ --exclude ${SKIP_PATCH} \ --noncritical EXPECTED_FAILING \ --output ${LOG_PATH}/log_test_set_run${nr} \ @@ -343,14 +330,15 @@ function run_test_set() { --include vm_envAND3_node_single_link_topo \ --include vm_envAND3_node_double_link_topo \ --exclude PERFTEST \ + --exclude SOFTWIRE \ --exclude ${SKIP_PATCH} \ --noncritical EXPECTED_FAILING \ --output ${LOG_PATH}/log_test_set_run${nr} \ tests/ - local_run_rc=$? - echo ${local_run_rc} > ${SHARED_MEMORY_PATH}/rc_test_run${nr} + local local_run_rc=$? set -x + echo ${local_run_rc} > ${LOG_PATH}/rc_test_run${nr} } set +x @@ -396,9 +384,13 @@ RC=0 for index in "${!VIRL_SERVER[@]}"; do echo "Test_set${index} log:" cat ${LOG_PATH}/test_run${index}.log - RC_PARTIAL_RUN=$(cat ${SHARED_MEMORY_PATH}/rc_test_run${index}) + RC_PARTIAL_RUN=$(cat ${LOG_PATH}/rc_test_run${index}) + if [ -z "$RC_PARTIAL_RUN" ]; then + echo "Failed to retrieve return code from test run ${index}" + exit 1 + fi RC=$((RC+RC_PARTIAL_RUN)) - rm -f ${SHARED_MEMORY_PATH}/rc_test_run${index} + rm -f ${LOG_PATH}/rc_test_run${index} rm -f ${LOG_PATH}/test_run${index}.log echo done