docker-postgis/scenario_tests
jyrkka 1468f485e0
Fix issue with multiple schema creation and modify existing tests (#454)
2023-10-02 13:20:27 +02:00
..
collations fix #439 (#445) 2023-09-04 21:56:45 +02:00
datadir_init fix #439 (#445) 2023-09-04 21:56:45 +02:00
extensions fix #439 (#445) 2023-09-04 21:56:45 +02:00
init_scripts fix #439 (#445) 2023-09-04 21:56:45 +02:00
logical_replication fix #439 (#445) 2023-09-04 21:56:45 +02:00
multiple_databases Fix issue with multiple schema creation and modify existing tests (#454) 2023-10-02 13:20:27 +02:00
streaming_replication fix #439 (#445) 2023-09-04 21:56:45 +02:00
utils fix #439 (#445) 2023-09-04 21:56:45 +02:00
.gitignore Fix data directory deleted on migrations (#228) 2020-04-08 15:15:45 +07:00
README.md Update testing README.md 2020-04-21 16:41:01 +07:00
test-env.sh Fix data directory deleted on migrations (#228) 2020-04-08 15:15:45 +07:00

README.md

TESTING GUIDE

TL;DR; How to run the test

Go into root repo and run

./build-test.sh

It will create a tagged image kartoza/postgis:manual-build

Each scenario tests in this directory use this image.

To run each scenario test, go into the scenario directory and run test script:

# Testing collations scenario
cd collations
./test.sh

Testing architecture

We make two stage of testing in travis. First build stage, we build the image, push it into docker hub. Then the testing stage will use this image to run each scenario tests (run in parallel).

The above architecture is possible for the branch but will require PR commiters to provide their own docker login. So we scrap that ideas. We have now parallel builds and each of them build their own image and test it in one pipeline.

Any testing framework can be used, but we use python unittest module for simplicity and readability.

Due to the shared testing image used for other scenarios, for simplicity, put relevant python dependencies on utils/requirement.txt.

For OS level dependencies, include your setup in the root folder's Dockerfile.test

Making new tests

Create new directory in this folder (scenario_tests). Directory should contains:

  • Host level test script called test.sh
  • docker-compose.yml file for the service setup
  • .env file if needed for docker-compose.yml settings
  • tests directory which contains your test scripts. The testing architecture will execute test.sh script in this directory (service level), if you use generic host level test.sh script.

Explanations:

Host level test script is used to setup the docker service, then run the unit test when the service is ready. You can copy paste from existing collations for generic script.

docker-compose.yml file should mount your tests directory and provides settings needed by the service that are going to be tested.

tests directory contains the actual test script that will be run from inside the service. For example, in collations scenario test.sh (service level scripts) will start python unittest script with necessary variables.

Add your scenario to travis config:

In env[] list there will be a SCENARIO variable to set. Add your environment variable needed to run your test in env[] list. For example, if you have new scenario folder my_test, then the env key will look like this:

env:
  - SCENARIO=replications
  - SCENARIO=collations
  - SCENARIO=my_test EXTRA_SETTING_1=value1 EXTRA_SETTING_2=value2 EXTRA_SETTING_3=value3