---
title: Charmhub | Deploy PgBouncer using Charmhub - The Open Operator Collection
description: Deploy the latest version of PgBouncer on any cloud.
url: https://charmhub.io/pgbouncer/docs/r-testing
---

# PgBouncer

[Canonical](https://charmhub.io/publisher/data-platform "View all packages from Canonical")

* [Canonical](https://charmhub.io/publisher/data-platform "View all packages from Canonical")
* [Databases](https://charmhub.io/?filter=databases)

Platform:

24.04

22.04

20.04

18.04

16.04

1/stable 1092

```
juju deploy pgbouncer --channel 1/stable
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

---

#### Relevant links

* [Homepage](https://ubuntu.com/data/postgresql)

---

#### Contacts

##### Maintainers

+ [Canonical Data Platform](mailto:data-platform@lists.launchpad.net)

* [Submit a bug](https://github.com/canonical/pgbouncer-operator/issues)

---

Share your thoughts on this charm with the community on discourse.

[Join the discussion](https://discourse.charmhub.io/)

# Charm Testing reference

There are [a lot of test types](https://en.wikipedia.org/wiki/Software_testing) available and most of them are well applicable for PgBouncer. 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](https://discourse.charmhub.io/t/12263) 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](https://discourse.charmhub.io/t/12252), deploy DB with test application and start “continuous write” test:

```
juju add-model smoke-test

juju deploy postgresql --channel 14/stable --config profile=testing
juju deploy pgbouncer --channel 1/stable
juju relate postgresql pgbouncer

juju add-unit postgresql -n 2 # (optional)

juju deploy postgresql-test-app -n 3 --channel latest/stable
juju relate pgbouncer 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/leader get-password username=operator | yq '.. | select(. | has("password")).password')
watch -n1 -x juju ssh postgresql-test-app/leader "charmed-postgresql.psql -h 127.0.0.1 -p 6432 -U operator -W -d postgresql_test_app_first_database \"select count(*) from continuous_writes\""

# Watch the counter is growing!
```

Expected results:

* postgresql-test-app continuously inserts records in database `postgresql_test_app_first_database` table `continuous_writes`.
* 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](https://github.com/canonical/pgbouncer-operator/blob/main/CONTRIBUTING.md#testing)” guide and follow `tox run -e unit` examples there.

## Integration tests

Please check the “[Contributing](https://github.com/canonical/pgbouncer-operator/blob/main/CONTRIBUTING.md#testing)” guide and follow `tox run -e integration` examples there.

## System test

Please check/deploy the charm [postgresql-bundle](https://charmhub.io/pgbouncer-bundle) ([Git](https://github.com/canonical/pgbouncer-bundle)). It deploy and test all the necessary parts at once.

## Performance test

Please use the separate [Charmed PostgreSQL performance testing document](https://charmhub.io/postgresql/docs/r-testing) but deploy Charmed PostgreSQL behind PgBouncer.

---
