This repository has been archived by the owner on Apr 26, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
222 additions
and
61 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import sys | ||
from tap.parser import Parser | ||
from tap.line import Result, Unknown, Diagnostic | ||
|
||
out = ["### TAP Output for " + sys.argv[2]] | ||
|
||
p = Parser() | ||
|
||
in_error = False | ||
|
||
for line in p.parse_file(sys.argv[1]): | ||
if isinstance(line, Result): | ||
if in_error: | ||
out.append("") | ||
out.append("</pre></code></details>") | ||
out.append("") | ||
out.append("----") | ||
out.append("") | ||
in_error = False | ||
|
||
if not line.ok and not line.todo: | ||
in_error = True | ||
|
||
out.append("FAILURE Test #%d: ``%s``" % (line.number, line.description)) | ||
out.append("") | ||
out.append("<details><summary>Show log</summary><code><pre>") | ||
|
||
elif isinstance(line, Diagnostic) and in_error: | ||
out.append(line.text) | ||
|
||
if out: | ||
for line in out[:-3]: | ||
print(line) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,145 @@ | ||
#!/bin/bash | ||
# | ||
# Fetch sytest, and then run the tests for synapse. The entrypoint for the | ||
# sytest-synapse docker images. | ||
|
||
set -ex | ||
|
||
if [ -n "$BUILDKITE" ] | ||
then | ||
SYNAPSE_DIR=`pwd` | ||
else | ||
SYNAPSE_DIR="/src" | ||
fi | ||
|
||
# Attempt to find a sytest to use. | ||
# If /sytest exists, it means that a SyTest checkout has been mounted into the Docker image. | ||
if [ -d "/sytest" ]; then | ||
# If the user has mounted in a SyTest checkout, use that. | ||
echo "Using local sytests..." | ||
|
||
# create ourselves a working directory and dos2unix some scripts therein | ||
mkdir -p /work/jenkins | ||
for i in install-deps.pl run-tests.pl tap-to-junit-xml.pl jenkins/prep_sytest_for_postgres.sh; do | ||
dos2unix -n "/sytest/$i" "/work/$i" | ||
done | ||
ln -sf /sytest/tests /work | ||
ln -sf /sytest/keys /work | ||
SYTEST_LIB="/sytest/lib" | ||
else | ||
if [ -n "BUILDKITE_BRANCH" ] | ||
then | ||
branch_name=$BUILDKITE_BRANCH | ||
else | ||
# Otherwise, try and find out what the branch that the Synapse checkout is using. Fall back to develop if it's not a branch. | ||
branch_name="$(git --git-dir=/src/.git symbolic-ref HEAD 2>/dev/null)" || branch_name="develop" | ||
fi | ||
|
||
# Try and fetch the branch | ||
echo "Trying to get same-named sytest branch..." | ||
wget -q https://github.com/matrix-org/sytest/archive/$branch_name.tar.gz -O sytest.tar.gz || { | ||
# Probably a 404, fall back to develop | ||
echo "Using develop instead..." | ||
wget -q https://github.com/matrix-org/sytest/archive/develop.tar.gz -O sytest.tar.gz | ||
} | ||
|
||
mkdir -p /work | ||
tar -C /work --strip-components=1 -xf sytest.tar.gz | ||
SYTEST_LIB="/work/lib" | ||
fi | ||
|
||
cd /work | ||
|
||
# PostgreSQL setup | ||
if [ -n "$POSTGRES" ] | ||
then | ||
export PGUSER=postgres | ||
export POSTGRES_DB_1=pg1 | ||
export POSTGRES_DB_2=pg2 | ||
|
||
# Start the database | ||
su -c 'eatmydata /usr/lib/postgresql/9.6/bin/pg_ctl -w -D /var/lib/postgresql/data start' postgres | ||
|
||
# Use the Jenkins script to write out the configuration for a PostgreSQL using Synapse | ||
jenkins/prep_sytest_for_postgres.sh | ||
|
||
# Make the test databases for the two Synapse servers that will be spun up | ||
su -c 'psql -c "CREATE DATABASE pg1;"' postgres | ||
su -c 'psql -c "CREATE DATABASE pg2;"' postgres | ||
|
||
fi | ||
|
||
if [ -n "$OFFLINE" ]; then | ||
# if we're in offline mode, just put synapse into the virtualenv, and | ||
# hope that the deps are up-to-date. | ||
# | ||
# (`pip install -e` likes to reinstall setuptools even if it's already installed, | ||
# so we just run setup.py explicitly.) | ||
# | ||
(cd $SYNAPSE_DIR && /venv/bin/python setup.py -q develop) | ||
else | ||
# We've already created the virtualenv, but lets double check we have all | ||
# deps. | ||
/venv/bin/pip install -q --upgrade --no-cache-dir -e $SYNAPSE_DIR | ||
/venv/bin/pip install -q --upgrade --no-cache-dir \ | ||
lxml psycopg2 coverage codecov tap.py | ||
|
||
# Make sure all Perl deps are installed -- this is done in the docker build | ||
# so will only install packages added since the last Docker build | ||
./install-deps.pl | ||
fi | ||
|
||
|
||
# Run the tests | ||
>&2 echo "+++ Running tests" | ||
|
||
RUN_TESTS=( | ||
perl -I "$SYTEST_LIB" ./run-tests.pl --python=/venv/bin/python --synapse-directory=$SYNAPSE_DIR --coverage -O tap --all | ||
) | ||
|
||
TEST_STATUS=0 | ||
|
||
if [ -n "$WORKERS" ]; then | ||
RUN_TESTS+=(-I Synapse::ViaHaproxy --dendron-binary=/pydron.py) | ||
else | ||
RUN_TESTS+=(-I Synapse) | ||
fi | ||
|
||
"${RUN_TESTS[@]}" "$@" > results.tap || TEST_STATUS=$? | ||
|
||
if [ $TEST_STATUS -ne 0 ]; then | ||
>&2 echo -e "run-tests \e[31mFAILED\e[0m: exit code $TEST_STATUS" | ||
else | ||
>&2 echo -e "run-tests \e[32mPASSED\e[0m" | ||
fi | ||
|
||
>&2 echo "--- Copying assets" | ||
|
||
# Copy out the logs | ||
mkdir -p /logs | ||
cp results.tap /logs/results.tap | ||
rsync --ignore-missing-args --min-size=1B -av server-0 server-1 /logs --include "*/" --include="*.log.*" --include="*.log" --exclude="*" | ||
|
||
# Upload coverage to codecov and upload files, if running on Buildkite | ||
if [ -n "$BUILDKITE" ] | ||
then | ||
/venv/bin/coverage combine || true | ||
/venv/bin/coverage xml || true | ||
/venv/bin/codecov -X gcov -f coverage.xml | ||
|
||
wget -O buildkite.tar.gz https://github.com/buildkite/agent/releases/download/v3.13.0/buildkite-agent-linux-amd64-3.13.0.tar.gz | ||
tar xvf buildkite.tar.gz | ||
chmod +x ./buildkite-agent | ||
|
||
# Upload the files | ||
./buildkite-agent artifact upload "/logs/**/*.log*" | ||
./buildkite-agent artifact upload "/logs/results.tap" | ||
|
||
if [ $TEST_STATUS -ne 0 ]; then | ||
# Annotate, if failure | ||
/venv/bin/python $SYNAPSE_DIR/.buildkite/format_tap.py /logs/results.tap "$BUILDKITE_LABEL" | ./buildkite-agent annotate --style="error" --context="$BUILDKITE_LABEL" | ||
fi | ||
fi | ||
|
||
|
||
exit $TEST_STATUS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
version: 2 | ||
jobs: | ||
dockerhubuploadrelease: | ||
machine: true | ||
steps: | ||
- checkout | ||
- run: docker build -f docker/Dockerfile --label gitsha1=${CIRCLE_SHA1} -t matrixdotorg/synapse:${CIRCLE_TAG} -t matrixdotorg/synapse:${CIRCLE_TAG}-py3 --build-arg PYTHON_VERSION=3.6 . | ||
- run: docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD | ||
- run: docker push matrixdotorg/synapse:${CIRCLE_TAG} | ||
- run: docker push matrixdotorg/synapse:${CIRCLE_TAG}-py3 | ||
dockerhubuploadlatest: | ||
machine: true | ||
steps: | ||
- checkout | ||
- run: docker build -f docker/Dockerfile --label gitsha1=${CIRCLE_SHA1} -t matrixdotorg/synapse:latest -t matrixdotorg/synapse:latest-py3 --build-arg PYTHON_VERSION=3.6 . | ||
- run: docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD | ||
- run: docker push matrixdotorg/synapse:latest | ||
- run: docker push matrixdotorg/synapse:latest-py3 | ||
|
||
workflows: | ||
version: 2 | ||
build: | ||
jobs: | ||
- dockerhubuploadrelease: | ||
filters: | ||
tags: | ||
only: /v[0-9].[0-9]+.[0-9]+.*/ | ||
branches: | ||
ignore: /.*/ | ||
- dockerhubuploadlatest: | ||
filters: | ||
branches: | ||
only: master |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
SyTest has been moved to Buildkite. |