Fix coverage in sytest and use plugins for buildkite (#5922)

This commit is contained in:
Amber Brown 2019-08-29 22:19:57 +10:00 committed by GitHub
parent 92c1550f4a
commit e7011280c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 92 additions and 32 deletions

View File

@ -17,6 +17,6 @@ services:
SYNAPSE_POSTGRES_HOST: postgres SYNAPSE_POSTGRES_HOST: postgres
SYNAPSE_POSTGRES_USER: postgres SYNAPSE_POSTGRES_USER: postgres
SYNAPSE_POSTGRES_PASSWORD: postgres SYNAPSE_POSTGRES_PASSWORD: postgres
working_dir: /app working_dir: /src
volumes: volumes:
- ..:/app - ..:/src

View File

@ -17,6 +17,6 @@ services:
SYNAPSE_POSTGRES_HOST: postgres SYNAPSE_POSTGRES_HOST: postgres
SYNAPSE_POSTGRES_USER: postgres SYNAPSE_POSTGRES_USER: postgres
SYNAPSE_POSTGRES_PASSWORD: postgres SYNAPSE_POSTGRES_PASSWORD: postgres
working_dir: /app working_dir: /src
volumes: volumes:
- ..:/app - ..:/src

View File

@ -17,6 +17,6 @@ services:
SYNAPSE_POSTGRES_HOST: postgres SYNAPSE_POSTGRES_HOST: postgres
SYNAPSE_POSTGRES_USER: postgres SYNAPSE_POSTGRES_USER: postgres
SYNAPSE_POSTGRES_PASSWORD: postgres SYNAPSE_POSTGRES_PASSWORD: postgres
working_dir: /app working_dir: /src
volumes: volumes:
- ..:/app - ..:/src

View File

@ -27,7 +27,7 @@ git config --global user.name "A robot"
# Fetch and merge. If it doesn't work, it will raise due to set -e. # Fetch and merge. If it doesn't work, it will raise due to set -e.
git fetch -u origin $GITBASE git fetch -u origin $GITBASE
git merge --no-edit origin/$GITBASE git merge --no-edit --no-commit origin/$GITBASE
# Show what we are after. # Show what we are after.
git --no-pager show -s git --no-pager show -s

View File

@ -1,8 +1,7 @@
env: env:
CODECOV_TOKEN: "2dd7eb9b-0eda-45fe-a47c-9b5ac040045f" COVERALLS_REPO_TOKEN: wsJWOby6j0uCYFiCes3r0XauxO27mx8lD
steps: steps:
- command: - command:
- "python -m pip install tox" - "python -m pip install tox"
- "tox -e check_codestyle" - "tox -e check_codestyle"
@ -10,6 +9,7 @@ steps:
plugins: plugins:
- docker#v3.0.1: - docker#v3.0.1:
image: "python:3.6" image: "python:3.6"
mount-buildkite-agent: false
- command: - command:
- "python -m pip install tox" - "python -m pip install tox"
@ -18,6 +18,7 @@ steps:
plugins: plugins:
- docker#v3.0.1: - docker#v3.0.1:
image: "python:3.6" image: "python:3.6"
mount-buildkite-agent: false
- command: - command:
- "python -m pip install tox" - "python -m pip install tox"
@ -26,6 +27,7 @@ steps:
plugins: plugins:
- docker#v3.0.1: - docker#v3.0.1:
image: "python:3.6" image: "python:3.6"
mount-buildkite-agent: false
- command: - command:
- "python -m pip install tox" - "python -m pip install tox"
@ -36,6 +38,7 @@ steps:
- docker#v3.0.1: - docker#v3.0.1:
image: "python:3.6" image: "python:3.6"
propagate-environment: true propagate-environment: true
mount-buildkite-agent: false
- command: - command:
- "python -m pip install tox" - "python -m pip install tox"
@ -44,6 +47,7 @@ steps:
plugins: plugins:
- docker#v3.0.1: - docker#v3.0.1:
image: "python:3.6" image: "python:3.6"
mount-buildkite-agent: false
- command: - command:
- "python -m pip install tox" - "python -m pip install tox"
@ -52,21 +56,26 @@ steps:
plugins: plugins:
- docker#v3.0.1: - docker#v3.0.1:
image: "python:3.5" image: "python:3.5"
mount-buildkite-agent: false
- wait - wait
- command: - command:
- "apt-get update && apt-get install -y python3.5 python3.5-dev python3-pip libxml2-dev libxslt-dev zlib1g-dev" - "apt-get update && apt-get install -y python3.5 python3.5-dev python3-pip libxml2-dev libxslt-dev zlib1g-dev"
- "python3.5 -m pip install tox" - "python3.5 -m pip install tox"
- "tox -e py35-old,codecov" - "tox -e py35-old,combine"
label: ":python: 3.5 / SQLite / Old Deps" label: ":python: 3.5 / SQLite / Old Deps"
env: env:
TRIAL_FLAGS: "-j 2" TRIAL_FLAGS: "-j 2"
LANG: "C.UTF-8" LANG: "C.UTF-8"
plugins: plugins:
- docker#v3.0.1: - docker#v3.0.1:
image: "ubuntu:xenial" # We use xenail to get an old sqlite and python image: "ubuntu:xenial" # We use xenial to get an old sqlite and python
workdir: "/src"
mount-buildkite-agent: false
propagate-environment: true propagate-environment: true
- matrix-org/coveralls#v1.0:
parallel: "true"
retry: retry:
automatic: automatic:
- exit_status: -1 - exit_status: -1
@ -76,14 +85,18 @@ steps:
- command: - command:
- "python -m pip install tox" - "python -m pip install tox"
- "tox -e py35,codecov" - "tox -e py35,combine"
label: ":python: 3.5 / SQLite" label: ":python: 3.5 / SQLite"
env: env:
TRIAL_FLAGS: "-j 2" TRIAL_FLAGS: "-j 2"
plugins: plugins:
- docker#v3.0.1: - docker#v3.0.1:
image: "python:3.5" image: "python:3.5"
workdir: "/src"
mount-buildkite-agent: false
propagate-environment: true propagate-environment: true
- matrix-org/coveralls#v1.0:
parallel: "true"
retry: retry:
automatic: automatic:
- exit_status: -1 - exit_status: -1
@ -93,14 +106,18 @@ steps:
- command: - command:
- "python -m pip install tox" - "python -m pip install tox"
- "tox -e py36,codecov" - "tox -e py36,combine"
label: ":python: 3.6 / SQLite" label: ":python: 3.6 / SQLite"
env: env:
TRIAL_FLAGS: "-j 2" TRIAL_FLAGS: "-j 2"
plugins: plugins:
- docker#v3.0.1: - docker#v3.0.1:
image: "python:3.6" image: "python:3.6"
workdir: "/src"
mount-buildkite-agent: false
propagate-environment: true propagate-environment: true
- matrix-org/coveralls#v1.0:
parallel: "true"
retry: retry:
automatic: automatic:
- exit_status: -1 - exit_status: -1
@ -110,14 +127,18 @@ steps:
- command: - command:
- "python -m pip install tox" - "python -m pip install tox"
- "tox -e py37,codecov" - "tox -e py37,combine"
label: ":python: 3.7 / SQLite" label: ":python: 3.7 / SQLite"
env: env:
TRIAL_FLAGS: "-j 2" TRIAL_FLAGS: "-j 2"
plugins: plugins:
- docker#v3.0.1: - docker#v3.0.1:
image: "python:3.7" image: "python:3.7"
workdir: "/src"
mount-buildkite-agent: false
propagate-environment: true propagate-environment: true
- matrix-org/coveralls#v1.0:
parallel: "true"
retry: retry:
automatic: automatic:
- exit_status: -1 - exit_status: -1
@ -131,12 +152,14 @@ steps:
env: env:
TRIAL_FLAGS: "-j 8" TRIAL_FLAGS: "-j 8"
command: command:
- "bash -c 'python -m pip install tox && python -m tox -e py35-postgres,codecov'" - "bash -c 'python -m pip install tox && python -m tox -e py35-postgres,combine'"
plugins: plugins:
- docker-compose#v2.1.0: - docker-compose#v2.1.0:
run: testenv run: testenv
config: config:
- .buildkite/docker-compose.py35.pg95.yaml - .buildkite/docker-compose.py35.pg95.yaml
- matrix-org/coveralls#v1.0:
parallel: "true"
retry: retry:
automatic: automatic:
- exit_status: -1 - exit_status: -1
@ -150,12 +173,14 @@ steps:
env: env:
TRIAL_FLAGS: "-j 8" TRIAL_FLAGS: "-j 8"
command: command:
- "bash -c 'python -m pip install tox && python -m tox -e py37-postgres,codecov'" - "bash -c 'python -m pip install tox && python -m tox -e py37-postgres,combine'"
plugins: plugins:
- docker-compose#v2.1.0: - docker-compose#v2.1.0:
run: testenv run: testenv
config: config:
- .buildkite/docker-compose.py37.pg95.yaml - .buildkite/docker-compose.py37.pg95.yaml
- matrix-org/coveralls#v1.0:
parallel: "true"
retry: retry:
automatic: automatic:
- exit_status: -1 - exit_status: -1
@ -169,12 +194,14 @@ steps:
env: env:
TRIAL_FLAGS: "-j 8" TRIAL_FLAGS: "-j 8"
command: command:
- "bash -c 'python -m pip install tox && python -m tox -e py37-postgres,codecov'" - "bash -c 'python -m pip install tox && python -m tox -e py37-postgres,combine'"
plugins: plugins:
- docker-compose#v2.1.0: - docker-compose#v2.1.0:
run: testenv run: testenv
config: config:
- .buildkite/docker-compose.py37.pg11.yaml - .buildkite/docker-compose.py37.pg11.yaml
- matrix-org/coveralls#v1.0:
parallel: "true"
retry: retry:
automatic: automatic:
- exit_status: -1 - exit_status: -1
@ -182,7 +209,6 @@ steps:
- exit_status: 2 - exit_status: 2
limit: 2 limit: 2
- label: "SyTest - :python: 3.5 / SQLite / Monolith" - label: "SyTest - :python: 3.5 / SQLite / Monolith"
agents: agents:
queue: "medium" queue: "medium"
@ -195,6 +221,16 @@ steps:
propagate-environment: true propagate-environment: true
always-pull: true always-pull: true
workdir: "/src" workdir: "/src"
entrypoint: ["/bin/sh", "-e", "-c"]
mount-buildkite-agent: false
volumes: ["./logs:/logs"]
- artifacts#v1.2.0:
upload: [ "logs/**/*.log", "logs/**/*.log.*", "logs/coverage.xml" ]
- matrix-org/annotate:
path: "logs/annotate.md"
class: "error"
- matrix-org/coveralls#v1.0:
parallel: "true"
retry: retry:
automatic: automatic:
- exit_status: -1 - exit_status: -1
@ -216,6 +252,16 @@ steps:
propagate-environment: true propagate-environment: true
always-pull: true always-pull: true
workdir: "/src" workdir: "/src"
entrypoint: ["/bin/sh", "-e", "-c"]
mount-buildkite-agent: false
volumes: ["./logs:/logs"]
- artifacts#v1.2.0:
upload: [ "logs/**/*.log", "logs/**/*.log.*", "logs/coverage.xml" ]
- matrix-org/annotate:
path: "logs/annotate.md"
class: "error"
- matrix-org/coveralls#v1.0:
parallel: "true"
retry: retry:
automatic: automatic:
- exit_status: -1 - exit_status: -1
@ -240,9 +286,25 @@ steps:
propagate-environment: true propagate-environment: true
always-pull: true always-pull: true
workdir: "/src" workdir: "/src"
entrypoint: ["/bin/sh", "-e", "-c"]
mount-buildkite-agent: false
volumes: ["./logs:/logs"]
- artifacts#v1.2.0:
upload: [ "logs/**/*.log", "logs/**/*.log.*", "logs/coverage.xml" ]
- matrix-org/annotate:
path: "logs/annotate.md"
class: "error"
- matrix-org/coveralls#v1.0:
parallel: "true"
retry: retry:
automatic: automatic:
- exit_status: -1 - exit_status: -1
limit: 2 limit: 2
- exit_status: 2 - exit_status: 2
limit: 2 limit: 2
- wait: ~
continue_on_failure: true
- label: Trigger webhook
command: "curl -k https://coveralls.io/webhook?repo_token=$COVERALLS_REPO_TOKEN -d \"payload[build_num]=$BUILDKITE_BUILD_NUMBER&payload[status]=done\""

View File

@ -1,7 +1,8 @@
[run] [run]
branch = True branch = True
parallel = True parallel = True
include = synapse/* include=$TOP/synapse/*
data_file = $TOP/.coverage
[report] [report]
precision = 2 precision = 2

1
changelog.d/5922.misc Normal file
View File

@ -0,0 +1 @@
Update Buildkite pipeline to use plugins instead of buildkite-agent commands.

22
tox.ini
View File

@ -7,6 +7,7 @@ deps =
python-subunit python-subunit
junitxml junitxml
coverage coverage
coverage-enable-subprocess
parameterized parameterized
# cyptography 2.2 requires setuptools >= 18.5 # cyptography 2.2 requires setuptools >= 18.5
@ -43,13 +44,13 @@ whitelist_externals =
setenv = setenv =
{[base]setenv} {[base]setenv}
postgres: SYNAPSE_POSTGRES = 1 postgres: SYNAPSE_POSTGRES = 1
TOP={toxinidir}
passenv = * passenv = *
commands = commands =
/usr/bin/find "{toxinidir}" -name '*.pyc' -delete /usr/bin/find "{toxinidir}" -name '*.pyc' -delete
# Add this so that coverage will run on subprocesses # Add this so that coverage will run on subprocesses
sh -c 'echo "import coverage; coverage.process_startup()" > {envsitepackagesdir}/../sitecustomize.py'
{envbindir}/coverage run "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:} {envbindir}/coverage run "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
# As of twisted 16.4, trial tries to import the tests as a package (previously # As of twisted 16.4, trial tries to import the tests as a package (previously
@ -75,8 +76,6 @@ commands =
# ) # )
usedevelop=true usedevelop=true
# A test suite for the oldest supported versions of Python libraries, to catch # A test suite for the oldest supported versions of Python libraries, to catch
# any uses of APIs not available in them. # any uses of APIs not available in them.
[testenv:py35-old] [testenv:py35-old]
@ -88,6 +87,7 @@ deps =
mock mock
lxml lxml
coverage coverage
coverage-enable-subprocess
commands = commands =
/usr/bin/find "{toxinidir}" -name '*.pyc' -delete /usr/bin/find "{toxinidir}" -name '*.pyc' -delete
@ -96,15 +96,11 @@ commands =
# OpenSSL 1.1 compiled cryptography (as older ones don't compile on Travis). # OpenSSL 1.1 compiled cryptography (as older ones don't compile on Travis).
/bin/sh -c 'python -m synapse.python_dependencies | sed -e "s/>=/==/g" -e "s/psycopg2==2.6//" -e "s/pyopenssl==16.0.0/pyopenssl==17.0.0/" | xargs -d"\n" pip install' /bin/sh -c 'python -m synapse.python_dependencies | sed -e "s/>=/==/g" -e "s/psycopg2==2.6//" -e "s/pyopenssl==16.0.0/pyopenssl==17.0.0/" | xargs -d"\n" pip install'
# Add this so that coverage will run on subprocesses
/bin/sh -c 'echo "import coverage; coverage.process_startup()" > {envsitepackagesdir}/../sitecustomize.py'
# Install Synapse itself. This won't update any libraries. # Install Synapse itself. This won't update any libraries.
pip install -e . pip install -e .
{envbindir}/coverage run "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:} {envbindir}/coverage run "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
[testenv:packaging] [testenv:packaging]
skip_install=True skip_install=True
deps = deps =
@ -137,15 +133,15 @@ basepython = python3.6
[testenv:check-sampleconfig] [testenv:check-sampleconfig]
commands = {toxinidir}/scripts-dev/generate_sample_config --check commands = {toxinidir}/scripts-dev/generate_sample_config --check
[testenv:codecov] [testenv:combine]
skip_install = True skip_install = True
deps = deps =
coverage coverage
codecov whitelist_externals =
commands = bash
commands=
coverage combine coverage combine
coverage xml coverage report
codecov -X gcov
[testenv:mypy] [testenv:mypy]
basepython = python3.5 basepython = python3.5
@ -155,4 +151,4 @@ deps =
extras = all extras = all
commands = mypy --ignore-missing-imports \ commands = mypy --ignore-missing-imports \
synapse/logging/_structured.py \ synapse/logging/_structured.py \
synapse/logging/_terse_json.py synapse/logging/_terse_json.py