travis-test.sh 2.1 KB
Newer Older
1 2
#! /bin/bash

3
# The entry point for travis tests
4 5 6 7
#
# TEST_SUITE env var can be set to "lint", "unit-test" or "integ-test", in
# which case only the linting, unit tests or integration tests will be run
# respectively. If not specified or null all tests are run.
8

9 10
set -eu

11 12 13 14
# Tune the GC to use more memory to reduce the number of garbage collections
export GOGC=400
export DENDRITE_LINT_DISABLE_GC=1

15
export GOPATH="$(pwd):$(pwd)/vendor"
16
export PATH="$PATH:$(pwd)/bin"
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

if [ "${TEST_SUITE:-lint}" == "lint" ]; then
    ./scripts/find-lint.sh
fi

if [ "${TEST_SUITE:-unit-test}" == "unit-test" ]; then
    gb test
fi

if [ "${TEST_SUITE:-integ-test}" == "integ-test" ]; then
    gb build

    # Check that all the packages can build.
    # When `go build` is given multiple packages it won't output anything, and just
    # checks that everything builds. This seems to do a better job of handling
    # missing imports than `gb build` does.
    go build github.com/matrix-org/dendrite/cmd/...

    # Check that the servers build (this is done explicitly because `gb build` can silently fail (exit 0) and then we'd test a stale binary)
    gb build github.com/matrix-org/dendrite/cmd/dendrite-room-server
    gb build github.com/matrix-org/dendrite/cmd/roomserver-integration-tests
    gb build github.com/matrix-org/dendrite/cmd/dendrite-sync-api-server
    gb build github.com/matrix-org/dendrite/cmd/syncserver-integration-tests
    gb build github.com/matrix-org/dendrite/cmd/create-account
    gb build github.com/matrix-org/dendrite/cmd/dendrite-media-api-server
    gb build github.com/matrix-org/dendrite/cmd/mediaapi-integration-tests
    gb build github.com/matrix-org/dendrite/cmd/client-api-proxy

    # Create necessary certificates and keys to run dendrite
    echo "Generating certs..."
    time openssl req -x509 -newkey rsa:512 -keyout server.key -out server.crt -days 365 -nodes -subj /CN=localhost
    echo "Installing kafka..."
    time ./scripts/install-local-kafka.sh

    # Run the integration tests
    bin/roomserver-integration-tests
    bin/syncserver-integration-tests
    bin/mediaapi-integration-tests
fi