Files
postgrest/test/io/test_big_schema.py
T

73 lines
2.4 KiB
Python

"IO tests for PostgREST started on the big schema."
import pytest
from config import *
from util import *
from postgrest import *
def test_first_request_succeeds(defaultenv):
"the first request suceeds fast since the admin server readiness was checked before"
env = {
**defaultenv,
"PGRST_DB_SCHEMAS": "apflora",
"PGRST_DB_POOL": "2",
"PGRST_DB_ANON_ROLE": "postgrest_test_anonymous",
"PGRST_SERVER_TIMING_ENABLED": "true",
}
with run(env=env, wait_max_seconds=30) as postgrest:
response = postgrest.session.get("/tpopmassn?select=*,tpop(*)")
assert response.status_code == 200
server_timings = parse_server_timings_header(response.headers["Server-Timing"])
plan_dur = server_timings["plan"]
assert plan_dur < 2.0
def test_requests_do_not_wait_for_schema_cache_reload(defaultenv):
"requests that use the schema cache (e.g. resource embedding) do not wait for the schema cache to reload"
env = {
**defaultenv,
"PGRST_DB_SCHEMAS": "apflora",
"PGRST_DB_POOL": "2",
"PGRST_DB_ANON_ROLE": "postgrest_test_anonymous",
"PGRST_SERVER_TIMING_ENABLED": "true",
}
with run(env=env, wait_max_seconds=30) as postgrest:
# reload the schema cache
response = postgrest.session.get("/rpc/notify_pgrst")
assert response.status_code == 204
time.sleep(1.5) # wait for schema cache to start reloading
response = postgrest.session.get("/tpopmassn?select=*,tpop(*)")
assert response.status_code == 200
# response should be fast
server_timings = parse_server_timings_header(response.headers["Server-Timing"])
plan_dur = server_timings["plan"]
assert plan_dur < 2.0
# TODO: This test fails now because of https://github.com/PostgREST/postgrest/pull/2122
# The stack size of 1K(-with-rtsopts=-K1K) is not enough and this fails with "stack overflow"
# A stack size of 200K seems to be enough for succeess
@pytest.mark.skip
def test_openapi_in_big_schema(defaultenv):
"Should get a successful response from openapi on a big schema"
env = {
**defaultenv,
"PGRST_DB_SCHEMAS": "apflora",
"PGRST_OPENAPI_MODE": "ignore-privileges",
}
with run(env=env) as postgrest:
response = postgrest.session.get("/")
assert response.status_code == 200