Charm Testing reference
There are a lot of test types available and most of them are well applicable for PgBouncer K8s. Here is a list prepared by Canonical:
- Smoke test
- Unit tests
- Integration tests
- System test
- Performance test
Note: below examples are written for Juju 3.x, but Juju 2.9 is supported as well.
Please adopt the juju run ...
commands as juju run-action ... --wait
for Juju 2.9.
Smoke test
Complexity: trivial
Speed: fast
Goal: ensure basic functionality works over short amount of time.
Setup an Juju 3.x environment, deploy DB with test application and start “continuous write” test:
juju add-model smoke-test
juju deploy postgresql-k8s --trust --channel 14/stable --config profile=testing
juju deploy pgbouncer-k8s --trust --channel 1/stable
juju relate postgresql-k8s pgbouncer-k8s
juju scale-application postgresql-k8s 3 # (optional)
juju scale-application pgbouncer-k8s 3 # (optional)
juju deploy postgresql-test-app --channel latest/stable
juju relate pgbouncer-k8s postgresql-test-app:first-database
# Make sure random data inserted into DB by test application:
juju run postgresql-test-app/leader get-inserted-data
# Start "continuous write" test:
juju run postgresql-test-app/leader start-continuous-writes
export password=$(juju run postgresql-k8s/leader get-password username=operator | yq '.. | select(. | has("password")).password')
watch -n1 -x juju ssh --container postgresql postgresql-k8s/leader "psql -h 127.0.0.1 -p 6432 -U operator -W -e \"select count(*) from TODO.TODO\""
# Watch the counter is growing!
Expected results:
- postgresql-test-app continuously inserts records in database
TODO
tableTODO
. - the counters (amount of records in table) are growing on all cluster members
Hints:
# Stop "continuous write" test
juju run postgresql-test-app/leader stop-continuous-writes
# Truncate "continuous write" table (delete all records from DB)
juju run postgresql-test-app/leader clear-continuous-writes
Unit tests
Please check the “Contributing” guide and follow tox run -e unit
examples there.
Integration tests
Please check the “Contributing” guide and follow tox run -e integration
examples there.
System test
Please check/deploy the charm postgresql-k8s-bundle (Git). It deploy and test all the necessary parts at once.
Performance test
Please use the separate Charmed PostgreSQL K8s performance testing document but deploy Charmed PostgreSQL K8s behind PgBouncer K8s.