mirror of
https://github.com/apache/superset.git
synced 2026-04-18 15:44:57 +00:00
[tests] Helper script to run single tests (#9547)
This commit is contained in:
committed by
GitHub
parent
7cefc89c64
commit
9cf33e9f9d
51
scripts/tests/README.md
Normal file
51
scripts/tests/README.md
Normal file
@@ -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
|
||||
```
|
||||
125
scripts/tests/run.sh
Executable file
125
scripts/tests/run.sh
Executable file
@@ -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}"
|
||||
Reference in New Issue
Block a user