diff options
author | Olivier Wilkinson (reivilibre) <oliverw@matrix.org> | 2022-07-20 16:40:55 +0100 |
---|---|---|
committer | Olivier Wilkinson (reivilibre) <oliverw@matrix.org> | 2022-07-20 16:40:55 +0100 |
commit | 94b6faf84f7f7744577e8c5f4c8b3dd71b7e0888 (patch) | |
tree | afaed7f7704d5a3551ec870163b38f23cac3796d /.github/workflows/tests.yml | |
parent | Merge remote-tracking branch 'origin/master' into develop (diff) | |
download | synapse-94b6faf84f7f7744577e8c5f4c8b3dd71b7e0888.tar.xz |
TESTING HELP
Diffstat (limited to '')
-rw-r--r-- | .github/workflows/tests.yml | 348 |
1 files changed, 8 insertions, 340 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c8b033e8a4..1e1d04a6e8 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -10,322 +10,16 @@ concurrency: cancel-in-progress: true jobs: - check-sampleconfig: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - - run: pip install . - - run: scripts-dev/generate_sample_config.sh --check - - run: scripts-dev/config-lint.sh - - check-schema-delta: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - - run: "pip install 'click==8.1.1' 'GitPython>=3.1.20'" - - run: scripts-dev/check_schema_delta.py --force-colors - - lint: - uses: "matrix-org/backend-meta/.github/workflows/python-poetry-ci.yml@v1" - with: - typechecking-extras: "all" - - lint-crlf: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Check line endings - run: scripts-dev/check_line_terminators.sh - - lint-newsfile: - if: ${{ github.base_ref == 'develop' || contains(github.base_ref, 'release-') }} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.sha }} - fetch-depth: 0 - - uses: actions/setup-python@v2 - - run: "pip install 'towncrier>=18.6.0rc1'" - - run: scripts-dev/check-newsfragment.sh - env: - PULL_REQUEST_NUMBER: ${{ github.event.number }} - - # Dummy step to gate other tests on without repeating the whole list - linting-done: - if: ${{ !cancelled() }} # Run this even if prior jobs were skipped - needs: [lint, lint-crlf, lint-newsfile, check-sampleconfig, check-schema-delta] - runs-on: ubuntu-latest - steps: - - run: "true" - - trial: - if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail - needs: linting-done - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.7", "3.8", "3.9", "3.10"] - database: ["sqlite"] - extras: ["all"] - include: - # Newest Python without optional deps - - python-version: "3.10" - extras: "" - - # Oldest Python with PostgreSQL - - python-version: "3.7" - database: "postgres" - postgres-version: "10" - extras: "all" - - # Newest Python with newest PostgreSQL - - python-version: "3.10" - database: "postgres" - postgres-version: "14" - extras: "all" - - steps: - - uses: actions/checkout@v2 - - run: sudo apt-get -qq install xmlsec1 - - name: Set up PostgreSQL ${{ matrix.postgres-version }} - if: ${{ matrix.postgres-version }} - run: | - docker run -d -p 5432:5432 \ - -e POSTGRES_PASSWORD=postgres \ - -e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \ - postgres:${{ matrix.postgres-version }} - - uses: matrix-org/setup-python-poetry@v1 - with: - python-version: ${{ matrix.python-version }} - extras: ${{ matrix.extras }} - - name: Await PostgreSQL - if: ${{ matrix.postgres-version }} - timeout-minutes: 2 - run: until pg_isready -h localhost; do sleep 1; done - - run: poetry run trial --jobs=2 tests - env: - SYNAPSE_POSTGRES: ${{ matrix.database == 'postgres' || '' }} - SYNAPSE_POSTGRES_HOST: localhost - SYNAPSE_POSTGRES_USER: postgres - SYNAPSE_POSTGRES_PASSWORD: postgres - - name: Dump logs - # Logs are most useful when the command fails, always include them. - if: ${{ always() }} - # Note: Dumps to workflow logs instead of using actions/upload-artifact - # This keeps logs colocated with failing jobs - # It also ignores find's exit code; this is a best effort affair - run: >- - find _trial_temp -name '*.log' - -exec echo "::group::{}" \; - -exec cat {} \; - -exec echo "::endgroup::" \; - || true - - trial-olddeps: - # Note: sqlite only; no postgres - if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail - needs: linting-done - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Test with old deps - uses: docker://ubuntu:focal # For old python and sqlite - # Note: focal seems to be using 3.8, but the oldest is 3.7? - # See https://github.com/matrix-org/synapse/issues/12343 - with: - workdir: /github/workspace - entrypoint: .ci/scripts/test_old_deps.sh - - name: Dump logs - # Logs are most useful when the command fails, always include them. - if: ${{ always() }} - # Note: Dumps to workflow logs instead of using actions/upload-artifact - # This keeps logs colocated with failing jobs - # It also ignores find's exit code; this is a best effort affair - run: >- - find _trial_temp -name '*.log' - -exec echo "::group::{}" \; - -exec cat {} \; - -exec echo "::endgroup::" \; - || true - - trial-pypy: - # Very slow; only run if the branch name includes 'pypy' - # Note: sqlite only; no postgres. Completely untested since poetry move. - if: ${{ contains(github.ref, 'pypy') && !failure() && !cancelled() }} - needs: linting-done - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["pypy-3.7"] - extras: ["all"] - - steps: - - uses: actions/checkout@v2 - # Install libs necessary for PyPy to build binary wheels for dependencies - - run: sudo apt-get -qq install xmlsec1 libxml2-dev libxslt-dev - - uses: matrix-org/setup-python-poetry@v1 - with: - python-version: ${{ matrix.python-version }} - extras: ${{ matrix.extras }} - - run: poetry run trial --jobs=2 tests - - name: Dump logs - # Logs are most useful when the command fails, always include them. - if: ${{ always() }} - # Note: Dumps to workflow logs instead of using actions/upload-artifact - # This keeps logs colocated with failing jobs - # It also ignores find's exit code; this is a best effort affair - run: >- - find _trial_temp -name '*.log' - -exec echo "::group::{}" \; - -exec cat {} \; - -exec echo "::endgroup::" \; - || true - - sytest: - if: ${{ !failure() && !cancelled() }} - needs: linting-done - runs-on: ubuntu-latest - container: - image: matrixdotorg/sytest-synapse:${{ matrix.sytest-tag }} - volumes: - - ${{ github.workspace }}:/src - env: - SYTEST_BRANCH: ${{ github.head_ref }} - POSTGRES: ${{ matrix.postgres && 1}} - MULTI_POSTGRES: ${{ (matrix.postgres == 'multi-postgres') && 1}} - WORKERS: ${{ matrix.workers && 1 }} - REDIS: ${{ matrix.redis && 1 }} - BLACKLIST: ${{ matrix.workers && 'synapse-blacklist-with-workers' }} - TOP: ${{ github.workspace }} - - strategy: - fail-fast: false - matrix: - include: - - sytest-tag: focal - - - sytest-tag: focal - postgres: postgres - - - sytest-tag: testing - postgres: postgres - - - sytest-tag: focal - postgres: multi-postgres - workers: workers - - - sytest-tag: buster - postgres: multi-postgres - workers: workers - - - sytest-tag: buster - postgres: postgres - workers: workers - redis: redis - - steps: - - uses: actions/checkout@v2 - - name: Prepare test blacklist - run: cat sytest-blacklist .ci/worker-blacklist > synapse-blacklist-with-workers - - name: Run SyTest - run: /bootstrap.sh synapse - working-directory: /src - - name: Summarise results.tap - if: ${{ always() }} - run: /sytest/scripts/tap_to_gha.pl /logs/results.tap - - name: Upload SyTest logs - uses: actions/upload-artifact@v2 - if: ${{ always() }} - with: - name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.*, ', ') }}) - path: | - /logs/results.tap - /logs/**/*.log* - - export-data: - if: ${{ !failure() && !cancelled() }} # Allow previous steps to be skipped, but not fail - needs: [linting-done, portdb] - runs-on: ubuntu-latest - env: - TOP: ${{ github.workspace }} - - services: - postgres: - image: postgres - ports: - - 5432:5432 - env: - POSTGRES_PASSWORD: "postgres" - POSTGRES_INITDB_ARGS: "--lc-collate C --lc-ctype C --encoding UTF8" - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - - steps: - - uses: actions/checkout@v2 - - run: sudo apt-get -qq install xmlsec1 - - uses: matrix-org/setup-python-poetry@v1 - with: - python-version: ${{ matrix.python-version }} - extras: "postgres" - - run: .ci/scripts/test_export_data_command.sh - - portdb: - if: ${{ !failure() && !cancelled() }} # Allow previous steps to be skipped, but not fail - needs: linting-done - runs-on: ubuntu-latest - env: - TOP: ${{ github.workspace }} - strategy: - matrix: - include: - - python-version: "3.7" - postgres-version: "10" - - - python-version: "3.10" - postgres-version: "14" - - services: - postgres: - image: postgres:${{ matrix.postgres-version }} - ports: - - 5432:5432 - env: - POSTGRES_PASSWORD: "postgres" - POSTGRES_INITDB_ARGS: "--lc-collate C --lc-ctype C --encoding UTF8" - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - - steps: - - uses: actions/checkout@v2 - - run: sudo apt-get -qq install xmlsec1 - - uses: matrix-org/setup-python-poetry@v1 - with: - python-version: ${{ matrix.python-version }} - extras: "postgres" - - run: .ci/scripts/test_synapse_port_db.sh complement: if: "${{ !failure() && !cancelled() }}" - needs: linting-done runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - - arrangement: monolith - database: SQLite - - - arrangement: monolith + - arrangement: workers database: Postgres steps: @@ -339,31 +33,14 @@ jobs: - run: | set -o pipefail - POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | gotestfmt - shell: bash - name: Run Complement Tests + synapse/scripts-dev/complement.sh --build-only + while :; do + POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} SYNAPSE_TEST_LOG_LEVEL=DEBUG COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -f -run TestRestrictedRoomsRemoteJoinFailOverInMSC3787Room -json 2>&1 | gotestfmt | tee /tmp/xxx + if grep ❌ /tmp/xxx; then + break + fi + done - # XXX When complement with workers is stable, move this back into the standard - # "complement" matrix above. - # - # See https://github.com/matrix-org/synapse/issues/13161 - complement-workers: - if: "${{ !failure() && !cancelled() }}" - needs: linting-done - runs-on: ubuntu-latest - - steps: - - name: Run actions/checkout@v2 for synapse - uses: actions/checkout@v2 - with: - path: synapse - - - name: Prepare Complement's Prerequisites - run: synapse/.ci/scripts/setup_complement_prerequisites.sh - - - run: | - set -o pipefail - POSTGRES=1 WORKERS=1 COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | gotestfmt shell: bash name: Run Complement Tests @@ -371,15 +48,6 @@ jobs: tests-done: if: ${{ always() }} needs: - - check-sampleconfig - - lint - - lint-crlf - - lint-newsfile - - trial - - trial-olddeps - - sytest - - export-data - - portdb - complement runs-on: ubuntu-latest steps: |