Development
Testing
Before test can be run the project needs to be built via
The integration tests make sure all major use cases are supported, all data is kept and use the following flow:
- create required resource prerequisites in separate terraform module
terraform_wrapper "test/terraform/base" apply -auto-approve
- create RDS instance
terraform_wrapper "test/terraform/instance_s3" apply -auto-approve
- wait for cloud init to finish (
test_wait_for_cloud_init) - wait for docker to come up (
test_wait_for_docker) - wait for PostgreSQL to start (
test_wait_for_sql) - verify machine setup an configuratio using testinfra tests
test_${test_case}.py - create test data
create_table | psql_wrapperinsert_dog | psql_wrapper
- destroy and recreate instance
- verify data is still available
echo "SELECT * FROM dogs;" | psql_wrapper | grep "rudi"
The test cases can be executed using the provided do tasks
./do test-restore-local./do test-restore-s3./do test-private-network./do test-migration./do test-encryption./do test-arm./do test-ssl
or all together with
./do test
In case of test failures the currently provisioned test machine can be reached via ssh with