test: negative pgrst_db_pool_available in metrics
Proves the failure on https://github.com/PostgREST/postgrest/issues/4622. This doesn't require additional test infra, only nginx. Taking advantage of the `stream {}` context which is also compatible with unix socket besides TCP.
This commit is contained in:
committed by
Steve Chavez
parent
ae1e3d6c4d
commit
0be41a4941
@@ -19,6 +19,7 @@ from postgrest import (
|
||||
is_ipv6,
|
||||
reset_statement_timeout,
|
||||
run,
|
||||
run_pgproxy,
|
||||
set_statement_timeout,
|
||||
sleep_until_postgrest_config_reload,
|
||||
sleep_until_postgrest_full_reload,
|
||||
@@ -1808,3 +1809,27 @@ def test_server_timing_transaction_duration(defaultenv, metapostgrest):
|
||||
]
|
||||
|
||||
assert 2000 <= response_dur < 3000
|
||||
|
||||
|
||||
@pytest.mark.xfail(
|
||||
reason="pgrst_db_pool_available should not go negative on pg network failures",
|
||||
strict=True,
|
||||
)
|
||||
def test_positive_pool_metric(defaultenv):
|
||||
"When a network failure is caused on the pg connection, pgrst_db_pool_available stays positive"
|
||||
|
||||
with run_pgproxy(defaultenv, proxy_timeout="10ms") as pgproxyhost:
|
||||
env = {**defaultenv, "PGHOST": pgproxyhost}
|
||||
|
||||
with run(env=env, wait_for_readiness=False) as postgrest:
|
||||
time.sleep(2)
|
||||
|
||||
response = postgrest.admin.get("/metrics", timeout=1)
|
||||
assert response.status_code == 200
|
||||
|
||||
metrics = float(
|
||||
re.search(
|
||||
r"pgrst_db_pool_available (-?\d+(?:\.\d+)?)", response.text
|
||||
).group(1)
|
||||
)
|
||||
assert metrics >= 0
|
||||
|
||||
Reference in New Issue
Block a user