mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Gotestsum (#22826)
* disable coverage This reduces runtime of the server test suite from ~30m to ~10m, and as far as I can see: we discarded the coverage output anyway. * allow morph 60s to migrate when running tests * scripts/test.sh: drop COVERMODE Stop generating coverage data when running unit tests. It's likely we'll want this data back at some point, but for now it's unused and removing simplifies invoking tests for developers. * scripts/test.sh: remove cleanup steps * scripts/test.sh: drop TESTS parameter * scripts/test.sh: drop TESTFLAGS parameter * switch to gotestsum
This commit is contained in:
56
.github/workflows/mmctl-test-template.yml
vendored
56
.github/workflows/mmctl-test-template.yml
vendored
@@ -2,22 +2,29 @@ name: mmctl CI
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
name:
|
||||
required: true
|
||||
type: string
|
||||
datasource:
|
||||
required: true
|
||||
type: string
|
||||
drivername:
|
||||
required: true
|
||||
type: string
|
||||
logsartifact:
|
||||
required: true
|
||||
type: string
|
||||
env:
|
||||
go-version: "1.19.5"
|
||||
jobs:
|
||||
run-mmctl-tests:
|
||||
test:
|
||||
name: ${{ inputs.name }}
|
||||
runs-on: ubuntu-latest-8-cores
|
||||
env:
|
||||
COMPOSE_PROJECT_NAME: ghactions
|
||||
BUILD_IMAGE: mattermost/mattermost-build-server:20230118_golang-1.19.5
|
||||
steps:
|
||||
- name: Checkout mattermost-server
|
||||
- name: Checkout mattermost project
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
|
||||
@@ -26,25 +33,38 @@ jobs:
|
||||
- name: Run docker compose
|
||||
run: |
|
||||
cd server/build
|
||||
docker-compose --no-ansi run --rm start_dependencies
|
||||
cat ../tests/test-data.ldif | docker-compose --no-ansi exec -T openldap bash -c 'ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
||||
docker-compose --no-ansi exec -T minio sh -c 'mkdir -p /data/mattermost-test';
|
||||
docker-compose --no-ansi ps
|
||||
cd ..
|
||||
- name: Wait for docker compose
|
||||
run: |
|
||||
until docker network inspect ghactions_mm-test; do echo "Waiting for Docker Compose Network..."; sleep 1; done;
|
||||
docker run --net ghactions_mm-test appropriate/curl:latest sh -c "until curl --max-time 5 --output - http://mysql:3306; do echo waiting for mysql; sleep 5; done;"
|
||||
docker run --net ghactions_mm-test appropriate/curl:latest sh -c "until curl --max-time 5 --output - http://elasticsearch:9200; do echo waiting for elasticsearch; sleep 5; done;"
|
||||
docker-compose --ansi never run --rm start_dependencies
|
||||
cat ../tests/test-data.ldif | docker-compose --ansi never exec -T openldap bash -c 'ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
||||
docker-compose --ansi never exec -T minio sh -c 'mkdir -p /data/mattermost-test';
|
||||
docker-compose --ansi never ps
|
||||
- name: Run mmctl Tests
|
||||
run: |
|
||||
mkdir -p client/plugins
|
||||
cd server/build
|
||||
docker run --net ghactions_mm-test \
|
||||
--ulimit nofile=8096:8096 \
|
||||
--env-file=dotenv/test.env \
|
||||
--env-file=server/build/dotenv/test.env \
|
||||
--env MM_SQLSETTINGS_DATASOURCE="${{ inputs.datasource }}" \
|
||||
-v ~/work/mattermost:/mattermost \
|
||||
-w /mattermost/mattermost/server \
|
||||
-v $(go env GOCACHE):/go/cache \
|
||||
-e GOCACHE=/go/cache \
|
||||
-v $PWD:/mattermost \
|
||||
-w /mattermost/server \
|
||||
$BUILD_IMAGE \
|
||||
make test-mmctl-coverage BUILD_NUMBER=$GITHUB_HEAD_REF-$GITHUB_RUN_ID MM_SERVER_PATH=/mattermost/mattermost/server
|
||||
make test-mmctl-coverage BUILD_NUMBER=$GITHUB_HEAD_REF-$GITHUB_RUN_ID
|
||||
- name: Stop docker compose
|
||||
run: |
|
||||
cd server/build
|
||||
docker-compose --ansi never stop
|
||||
- name: Archive logs
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: ${{ inputs.logsartifact }}
|
||||
path: |
|
||||
server/gotestsum.json
|
||||
server/report.xml
|
||||
- name: Publish Test Report
|
||||
uses: mikepenz/action-junit-report@c0e4b81aaa0067314a2d0d06e19b512c9d8af4f5 # v3.7.7
|
||||
if: success() || failure() # always run even if the previous step fails
|
||||
with:
|
||||
report_paths: server/report.xml
|
||||
check_name: ${{ inputs.name }} (Results)
|
||||
job_name: ${{ inputs.name }}
|
||||
|
||||
8
.github/workflows/server-ci-template.yml
vendored
8
.github/workflows/server-ci-template.yml
vendored
@@ -230,29 +230,37 @@ jobs:
|
||||
needs: check-mattermost-vet
|
||||
uses: ./.github/workflows/server-test-template.yml
|
||||
with:
|
||||
name: Postgres with binary parameters
|
||||
datasource: postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10&binary_parameters=yes
|
||||
drivername: postgres
|
||||
logsartifact: postgres-binary-server-test-logs
|
||||
test-postgres-normal:
|
||||
name: Postgres
|
||||
needs: check-mattermost-vet
|
||||
uses: ./.github/workflows/server-test-template.yml
|
||||
with:
|
||||
name: Postgres
|
||||
datasource: postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10
|
||||
drivername: postgres
|
||||
logsartifact: postgres-server-test-logs
|
||||
test-mysql:
|
||||
name: MySQL
|
||||
needs: check-mattermost-vet
|
||||
uses: ./.github/workflows/server-test-template.yml
|
||||
with:
|
||||
name: MySQL
|
||||
datasource: mmuser:mostest@tcp(mysql:3306)/mattermost_test?charset=utf8mb4,utf8&multiStatements=true&maxAllowedPacket=4194304
|
||||
drivername: mysql
|
||||
logsartifact: mysql-server-test-logs
|
||||
test-mmctl:
|
||||
name: Run mmctl tests
|
||||
needs: check-mattermost-vet
|
||||
uses: ./.github/workflows/mmctl-test-template.yml
|
||||
with:
|
||||
name: mmctl
|
||||
datasource: postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10
|
||||
drivername: postgres
|
||||
logsartifact: mmctl-test-logs
|
||||
build-mattermost-server:
|
||||
name: Build mattermost server app
|
||||
runs-on: ubuntu-latest-8-cores
|
||||
|
||||
52
.github/workflows/server-test-template.yml
vendored
52
.github/workflows/server-test-template.yml
vendored
@@ -2,16 +2,23 @@ name: Server Test Template
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
name:
|
||||
required: true
|
||||
type: string
|
||||
datasource:
|
||||
required: true
|
||||
type: string
|
||||
drivername:
|
||||
required: true
|
||||
type: string
|
||||
logsartifact:
|
||||
required: true
|
||||
type: string
|
||||
env:
|
||||
go-version: "1.19.5"
|
||||
jobs:
|
||||
test:
|
||||
name: ${{ inputs.name }}
|
||||
runs-on: ubuntu-latest-8-cores
|
||||
env:
|
||||
COMPOSE_PROJECT_NAME: ghactions
|
||||
@@ -27,31 +34,44 @@ jobs:
|
||||
- name: Run docker compose
|
||||
run: |
|
||||
cd server/build
|
||||
docker-compose --no-ansi run --rm start_dependencies
|
||||
cat ../tests/test-data.ldif | docker-compose --no-ansi exec -T openldap bash -c 'ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
||||
docker-compose --no-ansi exec -T minio sh -c 'mkdir -p /data/mattermost-test';
|
||||
docker-compose --no-ansi ps
|
||||
cd ..
|
||||
- name: Wait for docker compose
|
||||
run: |
|
||||
until docker network inspect ghactions_mm-test; do echo "Waiting for Docker Compose Network..."; sleep 1; done;
|
||||
docker run --net ghactions_mm-test appropriate/curl:latest sh -c "until curl --max-time 5 --output - http://mysql:3306; do echo waiting for mysql; sleep 5; done;"
|
||||
docker run --net ghactions_mm-test appropriate/curl:latest sh -c "until curl --max-time 5 --output - http://elasticsearch:9200; do echo waiting for elasticsearch; sleep 5; done;"
|
||||
docker-compose --ansi never run --rm start_dependencies
|
||||
cat ../tests/test-data.ldif | docker-compose --ansi never exec -T openldap bash -c 'ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
||||
docker-compose --ansi never exec -T minio sh -c 'mkdir -p /data/mattermost-test';
|
||||
docker-compose --ansi never ps
|
||||
- name: Run Tests
|
||||
run: |
|
||||
if [[ ${{ github.ref_name }} == 'master' ]]; then
|
||||
export RACE_MODE="-race"
|
||||
fi
|
||||
mkdir -p client/plugins
|
||||
cd server/build
|
||||
docker run --net ghactions_mm-test \
|
||||
--ulimit nofile=8096:8096 \
|
||||
--env-file=dotenv/test.env \
|
||||
--env-file=server/build/dotenv/test.env \
|
||||
--env MM_SQLSETTINGS_DRIVERNAME="${{ inputs.drivername }}" \
|
||||
--env MM_SQLSETTINGS_DATASOURCE="${{ inputs.datasource }}" \
|
||||
--env TEST_DATABASE_MYSQL_DSN="${{ inputs.datasource }}" \
|
||||
--env TEST_DATABASE_POSTGRESQL_DSN="${{ inputs.datasource }}" \
|
||||
-v ~/work/mattermost:/mattermost \
|
||||
-w /mattermost/mattermost/server \
|
||||
-v $(go env GOCACHE):/go/cache \
|
||||
-e GOCACHE=/go/cache \
|
||||
-v $PWD:/mattermost \
|
||||
-w /mattermost/server \
|
||||
$BUILD_IMAGE \
|
||||
make test-server$RACE_MODE BUILD_NUMBER=$GITHUB_HEAD_REF-$GITHUB_RUN_ID TESTFLAGS= TESTFLAGSEE=
|
||||
make test-server$RACE_MODE BUILD_NUMBER=$GITHUB_HEAD_REF-$GITHUB_RUN_ID
|
||||
- name: Stop docker compose
|
||||
run: |
|
||||
cd server/build
|
||||
docker-compose --ansi never stop
|
||||
- name: Archive logs
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
||||
with:
|
||||
name: ${{ inputs.logsartifact }}
|
||||
path: |
|
||||
server/gotestsum.json
|
||||
server/report.xml
|
||||
- name: Publish Test Report
|
||||
uses: mikepenz/action-junit-report@c0e4b81aaa0067314a2d0d06e19b512c9d8af4f5 # v3.7.7
|
||||
if: success() || failure() # always run even if the previous step fails
|
||||
with:
|
||||
report_paths: server/report.xml
|
||||
check_name: ${{ inputs.name }} (Results)
|
||||
job_name: ${{ inputs.name }}
|
||||
|
||||
Reference in New Issue
Block a user