diff options
Diffstat (limited to 'docker/core')
-rw-r--r-- | docker/core/Dockerfile | 60 | ||||
-rw-r--r-- | docker/core/Switch-to-threading.Thread-for-Rally-tasks.patch | 49 |
2 files changed, 93 insertions, 16 deletions
diff --git a/docker/core/Dockerfile b/docker/core/Dockerfile index bc47e39b0..2715cce39 100644 --- a/docker/core/Dockerfile +++ b/docker/core/Dockerfile @@ -1,21 +1,49 @@ -FROM alpine:3.7 +FROM alpine:3.16 ARG BRANCH=master -ARG OPENSTACK_TAG=stable/pike +ARG OPENSTACK_TAG=master -RUN apk --no-cache add --update \ - python libffi libssl1.0 libjpeg-turbo py-pip bash \ - grep sed wget ca-certificates git openssh-client && \ +COPY Switch-to-threading.Thread-for-Rally-tasks.patch /tmp/Switch-to-threading.Thread-for-Rally-tasks.patch +RUN apk -U upgrade && \ + apk --no-cache add --update \ + python3 py3-wheel libffi openssl libjpeg-turbo py3-pip bash \ + grep sed wget ca-certificates git openssh-client qemu-img iputils coreutils mailcap libstdc++ \ + libxml2 libxslt && \ apk --no-cache add --virtual .build-deps --update \ - python-dev build-base linux-headers libffi-dev \ - openssl-dev libjpeg-turbo-dev && \ - wget -q -O- https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=$OPENSTACK_TAG \ - > upper-constraints.txt && \ - git clone https://gerrit.opnfv.org/gerrit/functest /src/functest && \ - (cd /src/functest && git fetch origin $BRANCH && git checkout FETCH_HEAD) && \ - pip install --no-cache-dir --src /src -cupper-constraints.txt \ - -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \ - /src/functest && \ - rm -r upper-constraints.txt /src/functest && \ - bash -c "mkdir -p /home/opnfv/functest{/conf,/data,/images,/results} /home/opnfv/repos/vnfs" && \ + python3-dev build-base linux-headers libffi-dev \ + openssl-dev libjpeg-turbo-dev rust cargo \ + libxml2-dev libxslt-dev && \ + git init /src/requirements && \ + (cd /src/requirements && \ + git fetch --tags https://review.opendev.org/openstack/requirements $OPENSTACK_TAG && \ + git checkout FETCH_HEAD) && \ + git init /src/functest && \ + (cd /src/functest && \ + git fetch --tags https://gerrit.opnfv.org/gerrit/functest $BRANCH && \ + git checkout FETCH_HEAD) && \ + sed -i -E /^tempest==+.*$/d /src/requirements/upper-constraints.txt && \ + sed -i -E /^packaging==+.*$/d /src/requirements/upper-constraints.txt && \ + case $(uname -m) in aarch*|arm*) sed -i -E /^PyNaCl=/d /src/requirements/upper-constraints.txt && apk add --no-cache py3-pynacl ;; esac && \ + sed -i -E /#egg=functest/d /src/functest/upper-constraints.txt && \ + pip3 install --use-deprecated=legacy-resolver --no-cache-dir --src /src -c/src/functest/upper-constraints.txt -c/src/requirements/upper-constraints.txt \ + -e /src/requirements && \ + update-requirements -s --source /src/requirements /src/functest && \ + pip3 install --use-deprecated=legacy-resolver --no-cache-dir --src /src -c/src/functest/upper-constraints.txt -c/src/requirements/upper-constraints.txt \ + -e /src/functest && \ + (cd /src/rally && patch -p1 < /tmp/Switch-to-threading.Thread-for-Rally-tasks.patch) && \ + sed -i -E /#egg=rally/d /src/functest/upper-constraints.txt && \ + sed -i -E /#egg=tempest/d /src/functest/upper-constraints.txt && \ + rm -r /src/requirements/.git /src/functest/.git \ + /tmp/Switch-to-threading.Thread-for-Rally-tasks.patch && \ + mkdir -p /etc/xtesting && \ + cp /src/functest/functest/ci/logging.ini /etc/xtesting/ && \ + cp /src/functest/functest/ci/logging.debug.ini /etc/xtesting/ && \ + sh -c "mkdir -p /var/lib/xtesting /home/opnfv" && \ + ln -s /var/lib/xtesting /home/opnfv/functest && \ + sh -c "mkdir -p /home/opnfv/functest/conf /home/opnfv/functest/conf/data /home/opnfv/functest/conf/images /home/opnfv/functest/conf/results && \ + mkdir -p /home/opnfv/repos/vnfs" && \ + mkdir -p /etc/rally && \ + printf "[database]\nconnection = 'sqlite:////var/lib/rally/database/rally.sqlite'\n" > /etc/rally/rally.conf && \ + printf "\n[openstack]\nneutron_bind_l2_agent_types = Open vSwitch agent,Linux bridge agent,OVN Controller Gateway agent\n" >> /etc/rally/rally.conf && \ + mkdir -p /var/lib/rally/database && rally db create && \ apk del .build-deps diff --git a/docker/core/Switch-to-threading.Thread-for-Rally-tasks.patch b/docker/core/Switch-to-threading.Thread-for-Rally-tasks.patch new file mode 100644 index 000000000..a6d012730 --- /dev/null +++ b/docker/core/Switch-to-threading.Thread-for-Rally-tasks.patch @@ -0,0 +1,49 @@ +From 0d0ca00e56024a9919c150dbed62050d4c70b0c8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?C=C3=A9dric=20Ollivier?= <cedric.ollivier@orange.com> +Date: Wed, 3 Jun 2020 15:23:59 +0200 +Subject: [PATCH] Switch to threading.Thread() for Rally tasks +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +multiprocessing.Process() often fails due to thread crashes [1]. +It looks similar to gsutil release notes [2]. + +[1] https://build.opnfv.org/ci/job/functest-opnfv-functest-benchmarking-cntt-latest-rally_full_cntt-run/35/console +[2] https://github.com/GoogleCloudPlatform/gsutil/issues/548 +[3] https://github.com/GoogleCloudPlatform/gsutil/blob/master/CHANGES.md + +Change-Id: I582933832e23d188c7fa5999e713dd5d7e82d2da +Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> +--- + rally/task/runner.py | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/rally/task/runner.py b/rally/task/runner.py +index 3397e1193..5edebb406 100644 +--- a/rally/task/runner.py ++++ b/rally/task/runner.py +@@ -17,6 +17,7 @@ import abc + import collections + import copy + import multiprocessing ++import threading + import time + + from rally.common import logging +@@ -186,9 +187,9 @@ class ScenarioRunner(plugin.Plugin, validation.ValidatablePluginMixin, + for i in range(processes_to_start): + kwrgs = {"processes_to_start": processes_to_start, + "processes_counter": i} +- process = multiprocessing.Process(target=worker_process, +- args=next(worker_args_gen), +- kwargs={"info": kwrgs}) ++ process = threading.Thread(target=worker_process, ++ args=next(worker_args_gen), ++ kwargs={"info": kwrgs}) + process.start() + process_pool.append(process) + +-- +2.26.2 + |