[tests] Helper script to run single tests (#9547)
This commit is contained in:
parent
7cefc89c64
commit
9cf33e9f9d
|
|
@ -36,6 +36,7 @@ version: "3.7"
|
||||||
services:
|
services:
|
||||||
redis:
|
redis:
|
||||||
image: redis:3.2
|
image: redis:3.2
|
||||||
|
container_name: superset_cache
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:6379:6379"
|
- "127.0.0.1:6379:6379"
|
||||||
|
|
@ -45,6 +46,7 @@ services:
|
||||||
db:
|
db:
|
||||||
env_file: docker/.env
|
env_file: docker/.env
|
||||||
image: postgres:10
|
image: postgres:10
|
||||||
|
container_name: superset_db
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:5432:5432"
|
- "127.0.0.1:5432:5432"
|
||||||
|
|
@ -52,9 +54,10 @@ services:
|
||||||
- db_home:/var/lib/postgresql/data
|
- db_home:/var/lib/postgresql/data
|
||||||
|
|
||||||
superset:
|
superset:
|
||||||
build: *superset-build
|
|
||||||
command: ["flask", "run", "-p", "8088", "--with-threads", "--reload", "--debugger", "--host=0.0.0.0"]
|
|
||||||
env_file: docker/.env
|
env_file: docker/.env
|
||||||
|
build: *superset-build
|
||||||
|
container_name: superset_app
|
||||||
|
command: ["flask", "run", "-p", "8088", "--with-threads", "--reload", "--debugger", "--host=0.0.0.0"]
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- 8088:8088
|
- 8088:8088
|
||||||
|
|
@ -63,6 +66,7 @@ services:
|
||||||
|
|
||||||
superset-init:
|
superset-init:
|
||||||
build: *superset-build
|
build: *superset-build
|
||||||
|
container_name: superset_init
|
||||||
command: ["/app/docker-init.sh"]
|
command: ["/app/docker-init.sh"]
|
||||||
env_file: docker/.env
|
env_file: docker/.env
|
||||||
depends_on: *superset-depends-on
|
depends_on: *superset-depends-on
|
||||||
|
|
@ -70,6 +74,7 @@ services:
|
||||||
|
|
||||||
superset-node:
|
superset-node:
|
||||||
image: node:10-jessie
|
image: node:10-jessie
|
||||||
|
container_name: superset_node
|
||||||
command: ["bash", "-c", "cd /app/superset-frontend && npm install --global webpack webpack-cli && npm install && npm run dev"]
|
command: ["bash", "-c", "cd /app/superset-frontend && npm install --global webpack webpack-cli && npm install && npm run dev"]
|
||||||
env_file: docker/.env
|
env_file: docker/.env
|
||||||
depends_on: *superset-depends-on
|
depends_on: *superset-depends-on
|
||||||
|
|
@ -77,6 +82,7 @@ services:
|
||||||
|
|
||||||
superset-worker:
|
superset-worker:
|
||||||
build: *superset-build
|
build: *superset-build
|
||||||
|
container_name: superset_worker
|
||||||
command: ["celery", "worker", "--app=superset.tasks.celery_app:app", "-Ofair"]
|
command: ["celery", "worker", "--app=superset.tasks.celery_app:app", "-Ofair"]
|
||||||
env_file: docker/.env
|
env_file: docker/.env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Utility script to run tests faster
|
||||||
|
|
||||||
|
By default tests will be run using the Postgres container defined at the `docker-compose` file on the root of the repo,
|
||||||
|
so prior to using this script make sure to launch the dev containers.
|
||||||
|
|
||||||
|
You can use a different DB backend by defining `SUPERSET__SQLALCHEMY_DATABASE_URI` env var.
|
||||||
|
|
||||||
|
## Use:
|
||||||
|
|
||||||
|
From the superset repo root directory:
|
||||||
|
|
||||||
|
- Example run a single test module:
|
||||||
|
```$bash
|
||||||
|
scripts/tests/run.sh tests.charts.api_tests
|
||||||
|
```
|
||||||
|
|
||||||
|
- Example run a single test:
|
||||||
|
```$bash
|
||||||
|
scripts/tests/run.sh tests.charts.api_tests:ChartApiTests.test_get_charts
|
||||||
|
```
|
||||||
|
|
||||||
|
- Example run a single test, without any init procedures. Init procedures include:
|
||||||
|
resetting test database, db upgrade, superset init, loading example data. If your tests
|
||||||
|
are idempotent, after the first run, subsequent runs are really fast
|
||||||
|
```$bash
|
||||||
|
scripts/tests/run.sh tests.charts.api_tests:ChartApiTests.test_get_charts --no-init
|
||||||
|
```
|
||||||
|
|
||||||
|
- Example for not recreating the test DB (will still run all the tests init procedures)
|
||||||
|
```$bash
|
||||||
|
scripts/tests/run.sh tests.charts.api_tests:ChartApiTests.test_get_charts --no-reset-db
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,125 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing,
|
||||||
|
# software distributed under the License is distributed on an
|
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
# KIND, either express or implied. See the License for the
|
||||||
|
# specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#
|
||||||
|
# Reset test DATABASE
|
||||||
|
#
|
||||||
|
function reset_db() {
|
||||||
|
echo --------------------
|
||||||
|
echo Reseting test DB
|
||||||
|
echo --------------------
|
||||||
|
docker exec -i superset_db bash -c "/usr/bin/psql -h 127.0.0.1 -U ${DB_USER} -w -c 'DROP DATABASE ${DB_NAME};'"
|
||||||
|
docker exec -i superset_db bash -c "/usr/bin/psql -h 127.0.0.1 -U ${DB_USER} -w -c 'CREATE DATABASE ${DB_NAME};'"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Run init test procedures
|
||||||
|
#
|
||||||
|
function test_init() {
|
||||||
|
echo --------------------
|
||||||
|
echo Upgrading
|
||||||
|
echo --------------------
|
||||||
|
superset db upgrade
|
||||||
|
echo --------------------
|
||||||
|
echo Superset init
|
||||||
|
echo --------------------
|
||||||
|
superset init
|
||||||
|
echo --------------------
|
||||||
|
echo Load examples
|
||||||
|
echo --------------------
|
||||||
|
nosetests tests/load_examples_test.py
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if [[ "$#" -eq "0" ]]
|
||||||
|
then
|
||||||
|
echo "No argument suplied"
|
||||||
|
echo ------------------------
|
||||||
|
echo use:
|
||||||
|
echo "run.sh <test module name> [options]"
|
||||||
|
echo "[options]:"
|
||||||
|
echo "--no-init: Dont restart docker and no db migrations, superset init and test data"
|
||||||
|
echo "--no-reset-db: Recreates test database (DROP, CREATE)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Init global vars
|
||||||
|
#
|
||||||
|
DB_NAME="test"
|
||||||
|
DB_USER="superset"
|
||||||
|
DB_PASSWORD="superset"
|
||||||
|
export SUPERSET__SQLALCHEMY_DATABASE_URI=${SUPERSET__SQLALCHEMY_DATABASE_URI:-postgresql+psycopg2://"${DB_USER}":"${DB_PASSWORD}"@localhost/"${DB_NAME}"}
|
||||||
|
export SUPERSET_CONFIG=${SUPERSET_CONFIG:-tests.superset_test_config}
|
||||||
|
RUN_INIT=1
|
||||||
|
RUN_RESET_DB=1
|
||||||
|
TEST_MODULE="${1}"
|
||||||
|
|
||||||
|
# Shift to pass the first cmd parameter for the test module
|
||||||
|
shift 1
|
||||||
|
|
||||||
|
PARAMS=""
|
||||||
|
while (( "$#" )); do
|
||||||
|
case "$1" in
|
||||||
|
--no-init)
|
||||||
|
RUN_INIT=0
|
||||||
|
RUN_RESET_DB=0
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--no-reset-db)
|
||||||
|
RUN_RESET_DB=0
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--) # end argument parsing
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
--*) # unsupported flags
|
||||||
|
echo "Error: Unsupported flag $1" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*) # preserve positional arguments
|
||||||
|
PARAMS="$PARAMS $1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ------------------------------------
|
||||||
|
echo DB_URI="${SUPERSET__SQLALCHEMY_DATABASE_URI}"
|
||||||
|
echo Superset config module="${SUPERSET_CONFIG}"
|
||||||
|
echo Run init procedures=$RUN_INIT
|
||||||
|
echo Run reset DB=$RUN_RESET_DB
|
||||||
|
echo Test to run:"${TEST_MODULE}"
|
||||||
|
echo ------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
if [ $RUN_RESET_DB -eq 1 ]
|
||||||
|
then
|
||||||
|
reset_db
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $RUN_INIT -eq 1 ]
|
||||||
|
then
|
||||||
|
test_init
|
||||||
|
fi
|
||||||
|
|
||||||
|
nosetests --exclude=load_examples_test "${TEST_MODULE}"
|
||||||
Loading…
Reference in New Issue