Update testing tools for SEBA validation 48/3348/5
authorCiprian Barbu <ciprian.barbu@enea.com>
Thu, 2 Apr 2020 03:24:33 +0000 (06:24 +0300)
committerCiprian Barbu <ciprian.barbu@enea.com>
Thu, 9 Apr 2020 09:12:53 +0000 (12:12 +0300)
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 <ciprian.barbu@enea.com>
Change-Id: I2a3c2175357ebce802111231c87f1f9374978f8c

src/use_cases/seba_on_arm/docker/build/cord-tester/Dockerfile.cord-tester
src/use_cases/seba_on_arm/docker/build/cord-tester/build-cord-tester.arm
src/use_cases/seba_on_arm/docker/build/cord-tester/build-cord-tester.x86 [new file with mode: 0755]
src/use_cases/seba_on_arm/test/ponsim/docker_run.sh
src/use_cases/seba_on_arm/test/ponsim/test.sh

index f66ef16..1ccbc24 100644 (file)
 # 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
index d7137f1..f46afb1 100755 (executable)
@@ -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 (executable)
index 0000000..506e1c5
--- /dev/null
@@ -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 .
index 1127cfd..371bdfa 100755 (executable)
@@ -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
index 7e984f3..0d3c64d 100755 (executable)
@@ -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