diff options
-rw-r--r-- | scripts/build-packages.sh | 22 | ||||
-rw-r--r-- | scripts/functions.sh | 2 | ||||
-rw-r--r-- | scripts/install-vpp.sh | 3 | ||||
-rw-r--r-- | tests/1-node.yml | 2 | ||||
-rw-r--r-- | tests/2-nodes-hicn-light.yml | 6 | ||||
-rw-r--r-- | tests/2-nodes-vpp-bridge.yml | 4 | ||||
-rw-r--r-- | tests/2-nodes-vpp-memif-replication.yml | 8 | ||||
-rw-r--r-- | tests/2-nodes-vpp-memif.yml | 4 | ||||
-rw-r--r-- | tests/2-nodes.yml | 5 | ||||
-rw-r--r-- | tests/Dockerfile.ci | 41 | ||||
-rw-r--r-- | tests/Makefile | 4 | ||||
-rwxr-xr-x | tests/channel.sh | 2 | ||||
-rwxr-xr-x | tests/config.sh | 5 |
13 files changed, 76 insertions, 32 deletions
diff --git a/scripts/build-packages.sh b/scripts/build-packages.sh index d7684e400..a17e180f7 100644 --- a/scripts/build-packages.sh +++ b/scripts/build-packages.sh @@ -1,4 +1,4 @@ -# Copyright (c) 2017-2019 Cisco and/or its affiliates. +# Copyright (c) 2017-2022 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: @@ -28,9 +28,9 @@ function build_package() { echo "*******************************************************************" # Make the package - make -C ${SCRIPT_PATH}/.. INSTALL_PREFIX=/usr test package-release + make -C "${SCRIPT_PATH}/.." BUILD_PATH="${SCRIPT_PATH}/../packages" INSTALL_PREFIX=/usr test package-release - pushd ${SCRIPT_PATH}/../build-release-${ID} + pushd ${SCRIPT_PATH}/../packages find . -not -name '*.deb' -not -name '*.rpm' -print0 | xargs -0 rm -rf -- || true rm *Unspecified* *Development* *development* || true popd @@ -40,6 +40,21 @@ function build_package() { echo "*******************************************************************" } +function functional_test() { + echo "*******************************************************************" + echo "********************* STARTING FUNCTIONAL TESTS *******************" + echo "*******************************************************************" + + # Run functional tests + pushd ${SCRIPT_PATH}/.. + BUILD_SOFTWARE=0 DOCKERFILE="tests/Dockerfile.ci" bash ./tests/run-functional.sh + popd + + echo "*******************************************************************" + echo "********** FUNCTIONAL TESTS COMPLETED SUCCESSFULLY ***************" + echo "*******************************************************************" +} + build_sphinx() { setup @@ -69,6 +84,7 @@ case "${1}" in ;; packages) build_package + functional_test ;; *) usage diff --git a/scripts/functions.sh b/scripts/functions.sh index e416ee274..147f6669c 100644 --- a/scripts/functions.sh +++ b/scripts/functions.sh @@ -56,6 +56,8 @@ function call_once() { # Install dependencies function install_deps() { + curl -fsSL https://get.docker.com -o get-docker.sh + sudo sh get-docker.sh make -C ${SCRIPT_PATH}/.. deps } diff --git a/scripts/install-vpp.sh b/scripts/install-vpp.sh index 855587a2e..3c2d2104b 100644 --- a/scripts/install-vpp.sh +++ b/scripts/install-vpp.sh @@ -31,6 +31,9 @@ fi # Prevent vpp to set sysctl export VPP_INSTALL_SKIP_SYSCTL=1 +apt-get update +apt-get install -y curl + curl -s https://packagecloud.io/install/repositories/fdio/${VPP_VERSION}/script.deb.sh | bash curl -L https://packagecloud.io/fdio/${VPP_VERSION}/gpgkey | apt-key add - sed -E -i 's/(deb.*)(\[.*\])(.*)/\1\3/g' /etc/apt/sources.list.d/fdio_"${VPP_VERSION}".list diff --git a/tests/1-node.yml b/tests/1-node.yml index a543e70f1..be693c792 100644 --- a/tests/1-node.yml +++ b/tests/1-node.yml @@ -4,8 +4,6 @@ services: build: context: .. dockerfile: ${DOCKERFILE} - args: - BASE_IMAGE: ${BASE_IMAGE} image: hicn-base privileged: true container_name: forwarder diff --git a/tests/2-nodes-hicn-light.yml b/tests/2-nodes-hicn-light.yml index 0aee8cf5e..674df3ea4 100644 --- a/tests/2-nodes-hicn-light.yml +++ b/tests/2-nodes-hicn-light.yml @@ -58,8 +58,8 @@ services: sleep 4 - hiperf -q -z hicnlightng_module -S -R -B 4000kbps ${RTC_PRODUCER} -P 2 & - hiperf -q -z hicnlightng_module -S ${RAAQM_PRODUCER}/128 & - hicn-ping-server -q -z hicnlightng_module -s 0 -n ${PING_PRODUCER}/128 & + hiperf -q -z hicnlight_module -S -R -B 4000kbps ${RTC_PRODUCER} -P 2 & + hiperf -q -z hicnlight_module -S ${RAAQM_PRODUCER}/128 & + hicn-ping-server -q -z hicnlight_module -s 0 -n ${PING_PRODUCER}/128 & tail -f /dev/null diff --git a/tests/2-nodes-vpp-bridge.yml b/tests/2-nodes-vpp-bridge.yml index db1fa6fdc..5a61874ac 100644 --- a/tests/2-nodes-vpp-bridge.yml +++ b/tests/2-nodes-vpp-bridge.yml @@ -18,7 +18,7 @@ services: sudo tee /etc/vpp/startup.conf <<EOF cpu { main-core 1 } plugins { - path /usr/lib/x86_64-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins + path /usr/lib/$$(arch)-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins plugin default { disable } plugin acl_plugin.so { enable } plugin nat_plugin.so { enable } @@ -70,7 +70,7 @@ services: sudo tee /etc/vpp/startup.conf <<EOF cpu { main-core 2 } plugins { - path /usr/lib/x86_64-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins + path /usr/lib/$$(arch)-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins plugin default { disable } plugin acl_plugin.so { enable } plugin nat_plugin.so { enable } diff --git a/tests/2-nodes-vpp-memif-replication.yml b/tests/2-nodes-vpp-memif-replication.yml index 45de82400..c5b0d3865 100644 --- a/tests/2-nodes-vpp-memif-replication.yml +++ b/tests/2-nodes-vpp-memif-replication.yml @@ -4,8 +4,6 @@ services: build: context: .. dockerfile: ${DOCKERFILE} - args: - BASE_IMAGE: ${BASE_IMAGE} stdin_open: true tty: true working_dir: /workspace @@ -26,7 +24,7 @@ services: cpu { main-core 1 } buffers { buffers-per-numa 600000 } plugins { - path /hicn-root/lib/vpp_plugins:/usr/lib/x86_64-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins + path /hicn-root/lib/vpp_plugins:/usr/lib/$$(arch)-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins plugin default { disable } plugin acl_plugin.so { enable } plugin nat_plugin.so { enable } @@ -75,8 +73,6 @@ services: build: context: .. dockerfile: ${DOCKERFILE} - args: - BASE_IMAGE: ${BASE_IMAGE} stdin_open: true tty: true working_dir: /workspace @@ -98,7 +94,7 @@ services: buffers { buffers-per-numa 600000 } plugins { - path /hicn-root/lib/vpp_plugins:/usr/lib/x86_64-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins + path /hicn-root/lib/vpp_plugins:/usr/lib/$$(arch)-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins plugin default { disable } plugin acl_plugin.so { enable } plugin nat_plugin.so { enable } diff --git a/tests/2-nodes-vpp-memif.yml b/tests/2-nodes-vpp-memif.yml index 48b4a1c1d..e02c947a6 100644 --- a/tests/2-nodes-vpp-memif.yml +++ b/tests/2-nodes-vpp-memif.yml @@ -17,7 +17,7 @@ services: cpu { main-core 1 } buffers { buffers-per-numa 600000 } plugins { - path /usr/lib/x86_64-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins + path /usr/lib/$$(arch)-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins plugin default { disable } plugin acl_plugin.so { enable } plugin nat_plugin.so { enable } @@ -75,7 +75,7 @@ services: buffers { buffers-per-numa 600000 } plugins { - path /usr/lib/x86_64-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins + path /usr/lib/$$(arch)-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins plugin default { disable } plugin acl_plugin.so { enable } plugin nat_plugin.so { enable } diff --git a/tests/2-nodes.yml b/tests/2-nodes.yml index 72dcc2298..e1740dbf7 100644 --- a/tests/2-nodes.yml +++ b/tests/2-nodes.yml @@ -4,9 +4,6 @@ services: build: context: .. dockerfile: ${DOCKERFILE} - args: - BASE_IMAGE: ${BASE_IMAGE} - image: hicn-base privileged: true stdin_open: true hostname: client @@ -24,8 +21,6 @@ services: build: context: .. dockerfile: ${DOCKERFILE} - args: - BASE_IMAGE: ${BASE_IMAGE} privileged: true stdin_open: true hostname: server diff --git a/tests/Dockerfile.ci b/tests/Dockerfile.ci index 29f2e9dac..b4c03f7e3 100644 --- a/tests/Dockerfile.ci +++ b/tests/Dockerfile.ci @@ -1,5 +1,40 @@ -ARG BASE_IMAGE +FROM ubuntu:focal -FROM ${BASE_IMAGE} +ARG DEBIAN_FRONTEND=noninteractive +ARG DEB_FOLDER="./packages" -RUN sudo sed -i 's,secure_path="\(.*\)",secure_path="/hicn-root/bin:\1",' /etc/sudoers +WORKDIR /hicn-release + +################################################################ +# Copy DEB files +################################################################ +COPY ${DEB_FOLDER} deb + +################################################################ +# Install VPP and hicn debs +################################################################ +ARG VERSION_PATH=/tmp/versions.cmake +COPY versions.cmake ${VERSION_PATH} +ARG INSTALL_VPP_SCRIPT=/tmp/install-vpp.sh +COPY scripts/install-vpp.sh ${INSTALL_VPP_SCRIPT} + +RUN bash -x ${INSTALL_VPP_SCRIPT} \ + && cd deb \ + && apt-get install -y \ + iproute2 sudo \ + ./libhicn_*.deb \ + ./hicn-light_*.deb \ + ./hicn-plugin_*.deb \ + ./libhicnctrl_*.deb \ + ./libhicnctrl-modules_*.deb \ + ./libhicntransport-io-modules_*.deb \ + ./libhicntransport_*.deb \ + ./facemgr_*.deb \ + ./hicn-apps_*.deb \ + && rm ${VERSION_PATH} \ + && rm -rf deb \ + && rm -rf /var/lib/apt/lists/* \ + && apt-get autoremove -y \ + && apt-get clean + +WORKDIR / diff --git a/tests/Makefile b/tests/Makefile index 0f30d6a42..f9c166b8d 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,12 +1,12 @@ # Use when building for the fist time, # then `make test` forces a rebuild if local changes build: - BASE_IMAGE=hicn DOCKERFILE=Dockerfile.dev BUILD_SOFTWARE=1 \ + DOCKERFILE=Dockerfile.dev BUILD_SOFTWARE=1 \ docker-compose -f build.yml up --force-recreate --remove-orphans # Rebuild from scratch (to avoid cmake cache) rebuild: - BASE_IMAGE=hicn DOCKERFILE=Dockerfile.dev BUILD_SOFTWARE=1 \ + DOCKERFILE=Dockerfile.dev BUILD_SOFTWARE=1 \ REBUILD=1 \ docker-compose -f build.yml up --force-recreate --remove-orphans diff --git a/tests/channel.sh b/tests/channel.sh index 28a187e72..59335da65 100755 --- a/tests/channel.sh +++ b/tests/channel.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e diff --git a/tests/config.sh b/tests/config.sh index 654bad518..9d8e80d62 100755 --- a/tests/config.sh +++ b/tests/config.sh @@ -12,11 +12,10 @@ source ${SCRIPT_PATH}/.env set -a DOCKERFILE=${DOCKERFILE:-Dockerfile.dev} -BASE_IMAGE=${BASE_IMAGE:-hicn} BUILD_SOFTWARE=${BUILD_SOFTWARE:-1} set +a -HIPERF_CMD_RTC="hiperf -q -n 50 -C -H -R ${RTC_PRODUCER} -P 2" +HIPERF_CMD_RTC="/usr/bin/hiperf -q -n 50 -C -H -R ${RTC_PRODUCER} -P 2" HIPERF_CMD_MEMIF_RTC="${HIPERF_CMD_RTC} -z memif_module" POSTPROCESS_COMMAND_RAAQM_RTC='tail -n +3 | \ tr -s " " | \ @@ -34,7 +33,7 @@ POSTPROCESS_COMMAND_RAAQM_RTC='tail -n +3 | \ print int(a[0]), int(a[n-1]), int(s/n) \ }"' -HIPERF_CMD_RAAQM="hiperf -q -n 50 -i 200 -C -H ${RAAQM_PRODUCER}" +HIPERF_CMD_RAAQM="/usr/bin/hiperf -q -n 50 -i 200 -C -H ${RAAQM_PRODUCER}" HIPERF_CMD_CBR="${HIPERF_CMD_RAAQM} -W 350 -M 0" HIPERF_CMD_MEMIF_RAAQM="${HIPERF_CMD_RAAQM} -z memif_module" HIPERF_CMD_MEMIF_CBR="${HIPERF_CMD_CBR} -z memif_module" |