mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-15 09:22:55 +00:00
I made a mistake when I adding `env.initial_timeline: Optional[TimelineId]` in the #3839, should had just generated it and used it to create a specific timeline. This PR fixes those mistakes, and some extra calling into psql which must be slower than python field access.
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
from contextlib import closing
|
|
|
|
from fixtures.neon_fixtures import NeonEnvBuilder
|
|
from fixtures.pageserver.utils import wait_for_last_record_lsn
|
|
from fixtures.types import Lsn
|
|
from fixtures.utils import query_scalar
|
|
|
|
|
|
# This test demonstrates how to collect a read trace. It's useful until
|
|
# it gets replaced by a test that actually does stuff with the trace.
|
|
#
|
|
# Additionally, tests that pageserver is able to create tenants with custom configs.
|
|
def test_read_request_tracing(neon_env_builder: NeonEnvBuilder):
|
|
neon_env_builder.num_safekeepers = 1
|
|
env = neon_env_builder.init_start(
|
|
initial_tenant_conf={
|
|
"trace_read_requests": "true",
|
|
}
|
|
)
|
|
|
|
tenant_id = env.initial_tenant
|
|
timeline_id = env.initial_timeline
|
|
endpoint = env.endpoints.create_start("main")
|
|
|
|
with closing(endpoint.connect()) as conn:
|
|
with conn.cursor() as cur:
|
|
cur.execute("create table t (i integer);")
|
|
cur.execute(f"insert into t values (generate_series(1,{10000}));")
|
|
cur.execute("select count(*) from t;")
|
|
current_lsn = Lsn(query_scalar(cur, "SELECT pg_current_wal_flush_lsn()"))
|
|
# wait until pageserver receives that data
|
|
pageserver_http = env.pageserver.http_client()
|
|
wait_for_last_record_lsn(pageserver_http, tenant_id, timeline_id, current_lsn)
|
|
|
|
# Stop postgres so we drop the connection and flush the traces
|
|
endpoint.stop()
|
|
|
|
trace_path = env.repo_dir / "traces" / str(tenant_id) / str(timeline_id)
|
|
assert trace_path.exists()
|