X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=bootstrap.sh;h=fac874546db7236d539cb2f37a3a4c5fdeb6229b;hp=e8da341a0ff7859c85660110423cccdaba4dd1e5;hb=bf05994fbf8308bb2482c494a2b28949837fcc6f;hpb=726734466b81e83983b81b75d92c27612d47e68d diff --git a/bootstrap.sh b/bootstrap.sh index e8da341a0f..fac874546d 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,51 @@ 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-debuginfo 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 + # TODO: Remove when corresponding part of CSIT-1546 is addressed. + sudo yum install -y python-devel python-virtualenv openssh-clients sshpass +elif [ "$OS_ID" == "ubuntu" ]; then DISTRO="UBUNTU" + PACKAGE="deb" + # TODO: Remove when corresponding part of CSIT-1546 is addressed. 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" + sudo apt-get -y install libpython2.7-dev python-virtualenv sshpass +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,8 +103,8 @@ 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=("gre,ipv6,lisp,policer,rpf,softwire" "dhcp,ipsec,l2bd,l2xc,telemetry,vrf,vxlan" "cop,fds,honeycomb,iacl,ipv4,tap,vhost,vlan") -SUITE_PATH="tests.func" +TEST_GROUPS=("ip4_tunnels,l2bd" "ip4,ip6_tunnels,l2xc") +SUITE_PATH="tests.vpp.func" SKIP_PATCH="SKIP_PATCH" # Create tmp dir @@ -190,37 +201,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" - # Download DPDK parts not included in dpdk plugin of vpp build - for ARTIFACT in ${DPDK_ARTIFACTS}; do - wget -q "${VPP_REPO_URL}/${ARTIFACT}/${DPDK_STABLE_VER}/${ARTIFACT}-${DPDK_STABLE_VER}${VPP_CLASSIFIER}.${PACKAGE}" || exit - done -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 @@ -232,8 +212,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 @@ -267,10 +247,15 @@ 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} \ + --expiry 180 \ + --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}]}" @@ -336,7 +321,9 @@ 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} \ + --exclude SKIP_TEST \ --noncritical EXPECTED_FAILING \ --output ${LOG_PATH}/log_test_set_run${nr} \ tests/" @@ -347,14 +334,16 @@ 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} \ + --exclude SKIP_TEST \ --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 @@ -400,9 +389,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