From 094a3f3cfd0c36a169b1eae9ba69ce4fda28df68 Mon Sep 17 00:00:00 2001 From: Agate Date: Tue, 5 Jul 2022 18:37:15 +0200 Subject: [PATCH 1/2] ci: speed up CI by using pytest-xdist --- Jenkinsfile | 9 +++++---- tox.ini | 7 +++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 759881af..d06d3755 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,20 +13,21 @@ pipeline { sh """ python3 -m venv ${env.TMPDIR}/venv/ ${env.TMPDIR}/venv/bin/pip install tox +NUMPROCESSES=6 \ PGPORT=`python3 -c 'import struct; import socket; s=socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack("ii", 1, 0)); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'` pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox -rv""" script { if (currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause')) { sh """ - PYTESTOPTIONS=--slow \ + NUMPROCESSES=6 PYTESTOPTIONS=--slow \ PGPORT=`python3 -c 'import struct; import socket; s=socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack("ii", 1, 0)); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'` pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox -rv""" sh """ - PYTESTOPTIONS=--slow \ + NUMPROCESSES=6 PYTESTOPTIONS=--slow \ PGPORT=`python3 -c 'import struct; import socket; s=socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack("ii", 1, 0)); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'` pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox -rv -e py3-buster-rbac""" if (env.JOB_NAME == 'authentic' && env.GIT_BRANCH == 'origin/main') { sh """ - PGPORT=`python3 -c 'import struct; import socket; s=socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack("ii", 1, 0)); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'` pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox -v -e py3-bullseye -- tests/api""" + NUMPROCESSES=6 PGPORT=`python3 -c 'import struct; import socket; s=socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack("ii", 1, 0)); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'` pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox -v -e py3-bullseye -- tests/api""" sh """ - PGPORT=`python3 -c 'import struct; import socket; s=socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack("ii", 1, 0)); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'` pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox -v -e py3-stable-backports""" + NUMPROCESSES=6 PGPORT=`python3 -c 'import struct; import socket; s=socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack("ii", 1, 0)); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'` pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox -v -e py3-stable-backports""" } } } diff --git a/tox.ini b/tox.ini index 9b8bbf97..9afb8904 100644 --- a/tox.ini +++ b/tox.ini @@ -23,6 +23,8 @@ envlist = [testenv] setenv = + NUMPROCESSES={env:NUMPROCESSES:1} + !rbac: AUTHENTIC2_SETTINGS_FILE=tests/settings.py !rbac: DJANGO_SETTINGS_MODULE=authentic2.settings rbac: DJANGO_SETTINGS_MODULE=django_rbac.test_settings @@ -69,6 +71,7 @@ deps = pytest-cov pytest-django pytest-random + pytest-xdist mock<4 pytest!=5.3.3 lxml @@ -97,8 +100,8 @@ deps = usedevelop = True commands = ./getlasso3.sh - rbac: py.test {env:PYTESTOPTIONS:} {env:FAST:} {env:REUSEDB:} {env:COVERAGE:} {env:JUNIT:} {env:SW:} {posargs:{env:TESTS} --random-group} - !rbac: py.test {env:PYTESTOPTIONS:} {env:FAST:} {env:REUSEDB:} {env:COVERAGE:} {env:JUNIT:} {env:SW:} {posargs:{env:TESTS} --random-group} + rbac: py.test {env:PYTESTOPTIONS:} {env:FAST:} {env:REUSEDB:} {env:COVERAGE:} {env:JUNIT:} {env:SW:} {posargs:{env:TESTS} --numprocesses {env:NUMPROCESSES:1} --random-group} + !rbac: py.test {env:PYTESTOPTIONS:} {env:FAST:} {env:REUSEDB:} {env:COVERAGE:} {env:JUNIT:} {env:SW:} {posargs:{env:TESTS} --numprocesses {env:NUMPROCESSES:1} --random-group} [testenv:check-migrations] basepython = python3 -- 2.36.1