basic integration test

Signed-off-by: Paul van der Linden <mail@paultjuh.org>
This commit is contained in:
Paul van der Linden 2021-04-19 15:19:51 +02:00
parent ffa6782e41
commit bc97291103
2 changed files with 26 additions and 2 deletions

View File

@ -192,8 +192,8 @@ flag. This removes all built-in metrics, and uses only metrics defined by querie
(so you must supply one, otherwise the exporter will return nothing but internal statuses and not your database). (so you must supply one, otherwise the exporter will return nothing but internal statuses and not your database).
### Automatically discover databases ### Automatically discover databases
To scrape metrics from all databases on a database server, the database DSN's can be dynamically discovered via the To scrape metrics from all databases on a database server, the database DSN's can be dynamically discovered via the
`--auto-discover-databases` flag. When true, `SELECT datname FROM pg_database WHERE datallowconn = true AND datistemplate = false and datname != current_database()` is run for all configured DSN's. From the `--auto-discover-databases` flag. When true, `SELECT datname FROM pg_database WHERE datallowconn = true AND datistemplate = false and datname != current_database()` is run for all configured DSN's. From the
result a new set of DSN's is created for which the metrics are scraped. result a new set of DSN's is created for which the metrics are scraped.
In addition, the option `--exclude-databases` adds the possibily to filter the result from the auto discovery to discard databases you do not need. In addition, the option `--exclude-databases` adds the possibily to filter the result from the auto discovery to discard databases you do not need.
@ -285,3 +285,14 @@ GRANT SELECT ON postgres_exporter.pg_stat_statements TO postgres_exporter;
> ``` > ```
> DATA_SOURCE_NAME=postgresql://postgres_exporter:password@localhost:5432/postgres?sslmode=disable > DATA_SOURCE_NAME=postgresql://postgres_exporter:password@localhost:5432/postgres?sslmode=disable
> ``` > ```
## Running the tests
```
# Run the unit tests
make test
# Start the test database with docker
docker run -p 5432:5432 -e POSTGRES_DB=circle_test -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=test -d postgres
# Run the integration tests
DATA_SOURCE_NAME='postgresql://postgres:test@localhost:5432/circle_test?sslmode=disable' GOOPTS='-v -tags integration' make test
```

View File

@ -162,3 +162,16 @@ func (s *IntegrationSuite) TestExtendQueriesDoesntCrash(c *C) {
// scrape the exporter and make sure it works // scrape the exporter and make sure it works
exporter.scrape(ch) exporter.scrape(ch)
} }
func (s *IntegrationSuite) TestAutoDiscoverDatabases(c *C) {
dsn := os.Getenv("DATA_SOURCE_NAME")
exporter := NewExporter(
strings.Split(dsn, ","),
)
c.Assert(exporter, NotNil)
dsns := exporter.discoverDatabaseDSNs()
c.Assert(len(dsns), Equals, 2)
}