From 36b0272798b09b5367b3e55c18480057416e8ed2 Mon Sep 17 00:00:00 2001 From: Ciprian Barbu Date: Thu, 2 Apr 2020 06:24:33 +0300 Subject: [PATCH] Update testing tools for SEBA validation This updates the Dockerfile that represents the running environment of cord-tester. The major difference is moving from xenial to bionic base image. It also updates the testing scripts according to the changes in cord-tester and fixes a few issues with running cord-tester from a Docker container. JIRA: IEC-35 Signed-off-by: Ciprian Barbu Change-Id: I2a3c2175357ebce802111231c87f1f9374978f8c --- .../build/cord-tester/Dockerfile.cord-tester | 40 +++++++--------------- .../docker/build/cord-tester/build-cord-tester.arm | 10 +++++- .../docker/build/cord-tester/build-cord-tester.x86 | 19 ++++++++++ .../seba_on_arm/test/ponsim/docker_run.sh | 34 +++++++++++++----- src/use_cases/seba_on_arm/test/ponsim/test.sh | 16 +++++++-- 5 files changed, 78 insertions(+), 41 deletions(-) create mode 100755 src/use_cases/seba_on_arm/docker/build/cord-tester/build-cord-tester.x86 diff --git a/src/use_cases/seba_on_arm/docker/build/cord-tester/Dockerfile.cord-tester b/src/use_cases/seba_on_arm/docker/build/cord-tester/Dockerfile.cord-tester index f66ef16..1ccbc24 100644 --- a/src/use_cases/seba_on_arm/docker/build/cord-tester/Dockerfile.cord-tester +++ b/src/use_cases/seba_on_arm/docker/build/cord-tester/Dockerfile.cord-tester @@ -14,21 +14,7 @@ # limitations under the License. # ############################################################################## -# ref: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds - -FROM ubuntu:xenial as build -ENV DIRPATH /workspace -WORKDIR $DIRPATH -# Dependency for kafka pip package; needed for aarch64 image -RUN apt update && apt install -y curl make build-essential -RUN curl -L https://github.com/edenhill/librdkafka/archive/v0.11.6.tar.gz | \ - tar xzf - \ - && cd librdkafka-0.11.6/ \ - && ./configure --prefix=/usr \ - && make -j -RUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg > key.gpg - -FROM ubuntu:xenial +FROM ubuntu:bionic ENV DIRPATH /workspace WORKDIR $DIRPATH @@ -36,24 +22,22 @@ WORKDIR $DIRPATH ARG KUBE_VERSION=1.13.0-00 ARG TEST_USER=ubuntu -COPY --from=build $DIRPATH/librdkafka-0.11.6 librdkafka-0.11.6 -COPY --from=build $DIRPATH/key.gpg key.gpg -RUN apt-key add key.gpg - # Install packages required by cord-tester +RUN apt update && apt install -y lsb-release openssh-server sudo curl \ + python-pip virtualenv python3-dev \ + git libffi-dev libssl-dev libpq-dev + +# For now still using old Kubernetes from Xenial to map with IEC version RUN echo "deb http://packages.cloud.google.com/apt kubernetes-xenial main" >\ /etc/apt/sources.list.d/kubernetes.list -RUN apt update && apt install -y lsb-release openssh-server sudo \ - python python-pip python-dev \ - git make libffi-dev libssl-dev libpq-dev \ - kubectl=$KUBE_VERSION - -RUN make -C librdkafka-0.11.6 install && rm -rf librdkafka-0.11.6 +RUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg > key.gpg +RUN apt-key add key.gpg +RUN apt update && apt install kubectl=$KUBE_VERSION RUN pip install virtualenv RUN apt-mark hold kubectl && apt autoremove -y \ && rm -rf /var/lib/apt/lists/* -RUN useradd -m -s /bin/bash --system -G sudo \ - -p $(openssl passwd -1 $TEST_USER) $TEST_USER -RUN echo "ubuntu\tALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/90-docker-users +RUN groupadd -r $TEST_USER && useradd -m -s /bin/bash -g $TEST_USER \ + --system -G sudo -p $(openssl passwd -1 $TEST_USER) $TEST_USER +RUN echo "$TEST_USER\tALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/90-docker-users USER $TEST_USER diff --git a/src/use_cases/seba_on_arm/docker/build/cord-tester/build-cord-tester.arm b/src/use_cases/seba_on_arm/docker/build/cord-tester/build-cord-tester.arm index d7137f1..f46afb1 100755 --- a/src/use_cases/seba_on_arm/docker/build/cord-tester/build-cord-tester.arm +++ b/src/use_cases/seba_on_arm/docker/build/cord-tester/build-cord-tester.arm @@ -1,4 +1,12 @@ #!/usr/bin/env bash +############################################################################## +# Copyright (c) 2020 ENEA and others. +# valentin.radulescu@enea.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## # This script builds the cord-tester multi-arch docker image. # The main purpose of this image is to run the cord-tester tests, i.e. SIAB. @@ -7,4 +15,4 @@ set -o errexit set -o xtrace -docker build -f Dockerfile.cord-tester -t iecedge/cord-tester:arm64 . +docker build -f Dockerfile.cord-tester -t iecedge/cord-tester:cord-7.0-arm64 . diff --git a/src/use_cases/seba_on_arm/docker/build/cord-tester/build-cord-tester.x86 b/src/use_cases/seba_on_arm/docker/build/cord-tester/build-cord-tester.x86 new file mode 100755 index 0000000..506e1c5 --- /dev/null +++ b/src/use_cases/seba_on_arm/docker/build/cord-tester/build-cord-tester.x86 @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +############################################################################## +# Copyright (c) 2020 ENEA and others. +# valentin.radulescu@enea.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + + +# This script builds the cord-tester multi-arch docker image. +# The main purpose of this image is to run the cord-tester tests, i.e. SIAB. +# The existing image in iecedge/cord-tester:arm64 also contains the amd64 +# version and specifies a manifest for proper multi-arch. +set -o errexit +set -o xtrace + +docker build -f Dockerfile.cord-tester -t iecedge/cord-tester:cord-7.0-amd64 . diff --git a/src/use_cases/seba_on_arm/test/ponsim/docker_run.sh b/src/use_cases/seba_on_arm/test/ponsim/docker_run.sh index 1127cfd..371bdfa 100755 --- a/src/use_cases/seba_on_arm/test/ponsim/docker_run.sh +++ b/src/use_cases/seba_on_arm/test/ponsim/docker_run.sh @@ -1,18 +1,31 @@ #!/bin/bash +############################################################################## +# Copyright (c) 2020 Akraino IEC Team. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## set -ex -CORD_REPO="${CORD_REPO:-https://github.com/opencord/cord-tester.git}" -CORD_REV="cord-6.1" +CORD_REPO="${CORD_REPO:-https://github.com/iecedge/cord-tester.git}" +CORD_REV="cord-7.0-arm64" VOLTHA_REPO="${VOLTHA_REPO:-https://github.com/opencord/voltha.git}" VOLTHA_REV="master" K8S_MASTER_IP="${K8S_MASTER_IP:-127.0.0.1}" KUBE_DIR="${KUBE_DIR:-/workspace/.kube}" USER="${USER:-ubuntu}" -# The ssh server must be running since cord-tester tries to connect -# to localhost +# The ssh server must be running since cord-tester does ssh to localhost +sudo apt-get update +sudo apt-get install httpie -y +sudo apt-get install jq -y sudo /etc/init.d/ssh restart +ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa 2>/dev/null <<< y >/dev/null +cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys +# Make sure ssh localhost works with no interruption +ssh-keyscan -H localhost >> ~/.ssh/known_hosts cd "${HOME}" sudo cp -r "${KUBE_DIR}" .kube sudo chown -R "$(id -u)":"$(id -g)" .kube @@ -20,10 +33,12 @@ sudo chown -R "$(id -u)":"$(id -g)" .kube git clone "${CORD_REPO}" cord-tester -b "${CORD_REV}" git clone "${VOLTHA_REPO}" voltha -b "${VOLTHA_REV}" -cd cord-tester/src/test/cord-api -./setup_venv.sh +cd cord-tester/ +make venv_cord +pwd # shellcheck disable=SC1091 -source venv-cord-tester/bin/activate +source venv_cord/bin/activate +cd src/test/cord-api # As per documentation, we set the SERVER_IP before anything sed -i "s/SERVER_IP.*=.*'/SERVER_IP = '${K8S_MASTER_IP}'/g" \ Properties/RestApiProperties.py @@ -31,5 +46,6 @@ cd Tests/WorkflowValidations/ export SERVER_IP="${K8S_MASTER_IP}" -robot -v ONU_STATE_VAR:onu_state --removekeywords wuks -e notready \ - -i stable -v "VOLTHA_DIR:${HOME}/voltha" SIAB.robot +TESTTAGS="stable" +PYBOT_ARGS="-v SUBSCRIBER_FILENAME:SIABSubscriberLatest -v WHITELIST_FILENAME:SIABWhitelistLatest -v OLT_DEVICE_FILENAME:SIABOLT0Device" +robot ${PYBOT_ARGS} --removekeywords wuks -e notready -i ${TESTTAGS} -v VOLTHA_DIR:${HOME}/voltha SIAB.robot diff --git a/src/use_cases/seba_on_arm/test/ponsim/test.sh b/src/use_cases/seba_on_arm/test/ponsim/test.sh index 7e984f3..0d3c64d 100755 --- a/src/use_cases/seba_on_arm/test/ponsim/test.sh +++ b/src/use_cases/seba_on_arm/test/ponsim/test.sh @@ -1,11 +1,17 @@ #!/bin/bash -# shellcheck disable=SC2016 +############################################################################## +# Copyright (c) 2020 Akraino IEC Team. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## set -ex basepath=$(cd "$(dirname "$0")"; pwd) -CORD_IMG="${CORD_IMG:-iecedge/cord-tester:latest}" +CORD_IMG="${CORD_IMG:-iecedge/cord-tester:cord-7.0}" KUBE_DIR="${KUBE_DIR:-${PWD}/.kube}" K8S_MASTER_IP="${K8S_MASTER_IP:-127.0.0.1}" TEST_USER="${TEST_USER:-ubuntu}" @@ -34,7 +40,11 @@ DOCKER_CMD="docker run -id -e K8S_MASTER_IP=${K8S_MASTER_IP} \ if cont_id=$(eval "${DOCKER_CMD}") then echo "Starting SIAB.robot in ${cont_id}" - docker exec "${cont_id}" /workspace/docker_run.sh + docker exec "${cont_id}" sudo cp /workspace/docker_run.sh \ + "/home/${TEST_USER}/docker_run.sh" + docker exec "${cont_id}" sudo chown "${TEST_USER}:${TEST_USER}" \ + "/home/${TEST_USER}/docker_run.sh" + docker exec "${cont_id}" "/home/${TEST_USER}/docker_run.sh" else echo "Failed to execute docker command ${cont_id}" exit 1 -- 2.16.6