mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-15 17:32:56 +00:00
## Problem We want to be able to test how our infrastructure reacts on segfaults in Postgres (for example, we collect cores, and get some required logs/metrics, etc) ## Summary of changes - Add `trigger_segfauls` function to `neon_test_utils` to trigger a segfault in Postgres - Add `trigger_panic` function to `neon_test_utils` to trigger SIGABRT (by using `elog(PANIC, ...)) - Fix cleanup logic in regression tests in endpoint crashed
24 lines
763 B
Python
24 lines
763 B
Python
import pytest
|
|
from fixtures.neon_fixtures import NeonEnvBuilder
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"sql_func",
|
|
[
|
|
"trigger_panic",
|
|
"trigger_segfault",
|
|
"💣", # calls `trigger_segfault` internally
|
|
],
|
|
)
|
|
def test_endpoint_crash(neon_env_builder: NeonEnvBuilder, sql_func: str):
|
|
"""
|
|
Test that triggering crash from neon_test_utils crashes the endpoint
|
|
"""
|
|
env = neon_env_builder.init_start()
|
|
env.neon_cli.create_branch("test_endpoint_crash")
|
|
endpoint = env.endpoints.create_start("test_endpoint_crash")
|
|
|
|
endpoint.safe_psql("CREATE EXTENSION neon_test_utils;")
|
|
with pytest.raises(Exception, match="This probably means the server terminated abnormally"):
|
|
endpoint.safe_psql(f"SELECT {sql_func}();")
|