mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 09:22:43 +03:00
204ec89c61
This rewrites the last couple of Python tests that were failing when run with a separate HGE binary per test class. The changes are as follows: 1. The event triggers tests, naming conventions tests, and subscriptions tests all generate a new source DB per test, so can run in parallel. 2. The scheduled triggers tests use the correct URL for the trigger service when the port is generated randomly. 3. Whitespace and trailing commas are added to the scheduled triggers tests. 4. Support for SQL Server is added to _hge.py_ so the naming conventions test that runs on SQL Server passes. (The other SQL Server tests do not pass and we're not going to bother with them for now.) 5. Container names are fixed in _run.sh_. 6. _run.sh_ and _run-new.sh_ don't pull images explicitly as it's annoying when running tests a lot. If you want to pull the latest versions, just run `docker compose pull` from the _server/tests-py_ directory, or the root directory. (If you don't have the images at all, they'll still be pulled automatically.) PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7350 GitOrigin-RevId: db58f310f017b2a0884fcf61ccc56d15583f99bd
82 lines
2.5 KiB
Bash
Executable File
82 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This allows a developer, through Docker, to run the Python integration tests in pretty
|
|
# much exactly the same way as CI does (in contrast to `dev.sh test --integration`),
|
|
# allowing us to more readily diagnose issues locally.
|
|
#
|
|
# This takes an optional test configuration argument, corresponding to a name in
|
|
# `oss-.circleci/server-test-names.txt` (else defaulting to `no-auth`).
|
|
#
|
|
# See `case "$SERVER_TEST_TO_RUN"` in `oss-.circleci/test-server.sh` for what
|
|
# these actually do.
|
|
|
|
set -e
|
|
set -u
|
|
set -o pipefail
|
|
|
|
cd -- "$(dirname -- "${BASH_SOURCE[0]}")"
|
|
|
|
# This `PLATFORM` value is used to pick the correct server builder image and HGE binary path.
|
|
PLATFORM="$(uname -m)"
|
|
if [[ "$PLATFORM" == 'x86_64' || "$PLATFORM" == 'amd64' ]]; then
|
|
CABAL_PLATFORM='x86_64'
|
|
DOCKER_PLATFORM='amd64'
|
|
fi
|
|
if [[ "$PLATFORM" == 'aarch64' || "$PLATFORM" == 'arm64' ]]; then
|
|
CABAL_PLATFORM='aarch64'
|
|
DOCKER_PLATFORM='arm64'
|
|
fi
|
|
export CABAL_PLATFORM DOCKER_PLATFORM
|
|
|
|
# copied from images.go
|
|
HASURA_GRAPHQL_ENGINE_SERVER_BUILDER_SHA="$(
|
|
sha256sum ../../.buildkite/dockerfiles/ci-builders/server-builder.dockerfile \
|
|
| awk '{ print $1 }'
|
|
)"
|
|
export HASURA_GRAPHQL_ENGINE_SERVER_BUILDER_SHA
|
|
|
|
# copied from images.go
|
|
HASURA_GRAPHQL_ENGINE_SERVER_PYTEST_RUNNER_SHA="$(
|
|
cat \
|
|
../../.buildkite/dockerfiles/server-pytest-runner/Dockerfile \
|
|
./requirements.txt \
|
|
./package-lock.json \
|
|
./package.json \
|
|
./remote_schemas/nodejs/package.json \
|
|
| sha256sum \
|
|
| awk '{ print $1 }'
|
|
)"
|
|
export HASURA_GRAPHQL_ENGINE_SERVER_PYTEST_RUNNER_SHA
|
|
|
|
# Use the Azure SQL Edge image instead of the SQL Server image on arm64.
|
|
# The latter doesn't work yet.
|
|
if [[ "$(uname -m)" == 'arm64' ]]; then
|
|
export MSSQL_IMAGE='mcr.microsoft.com/azure-sql-edge'
|
|
fi
|
|
|
|
if [[ $# -gt 0 ]]; then
|
|
SERVER_TESTS_TO_RUN=("$@")
|
|
else
|
|
SERVER_TESTS_TO_RUN=('no-auth')
|
|
fi
|
|
|
|
echo '*** Building images ***'
|
|
# We rebuild the images because on arm64, we end up with an amd64 Python test
|
|
# runner. This won't actually be able to run HGE. Until we build an arm64 image
|
|
# on CI, we need to instead build it locally.
|
|
if [[ "$DOCKER_PLATFORM" == 'arm64' ]]; then
|
|
docker compose build
|
|
fi
|
|
|
|
echo
|
|
echo '*** Building HGE ***'
|
|
docker compose run --rm hge-build
|
|
|
|
for SERVER_TEST_TO_RUN in "${SERVER_TESTS_TO_RUN[@]}"; do
|
|
export SERVER_TEST_TO_RUN
|
|
echo
|
|
echo "*** Running test suite: ${SERVER_TEST_TO_RUN} ***"
|
|
docker compose rm -svf postgres citus sqlserver sqlserver-healthcheck # tear down databases beforehand
|
|
docker compose run --rm tests-py
|
|
done
|