Charm testing

This reference describes the different software test types that are applicable to Charmed MySQL. It is intended for charm developers and contributors.

Smoke test

Complexity

trivial

Speed

fast

Goal

ensure basic functionality works over short amount of time

Create a Juju model for testing, deploy a database with a test application and start the “continuous write” test:

juju add-model smoke-test

juju deploy mysql --channel 8.0/edge --config profile=testing
juju add-unit mysql -n 2 # (optional)

juju deploy mysql-test-app --channel latest/edge
juju relate mysql-test-app mysql:database

# Make sure random data inserted into DB by test application:
juju run mysql-test-app/leader get-inserted-data

# Start "continuous write" test:
juju run mysql-test-app/leader start-continuous-writes
export password=$(juju run mysql/leader get-password username=root | yq '.. | select(. | has("password")).password')
watch -n1 -x juju ssh mysql/leader "mysql -h 127.0.0.1 -uroot -p${password} -e \"select count(*) from continuous_writes_database.data\""

# Watch the counter is growing!

Expected results:

  • mysql-test-app continuously inserts records in database continuous_writes_database table data.

  • the counters (amount of records in table) are growing on all cluster members

Hints:

# Stop "continuous write" test
juju run mysql-test-app/leader stop-continuous-writes

# Truncate "continuous write" table (delete all records from DB)
juju run mysql-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 mysql-bundle (Git). It deploy and test all the necessary parts at once.

Performance test

Refer to the sysbench documentation.