mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-07 05:22:56 +00:00
45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
import pytest
|
|
from fixtures.neon_fixtures import NeonEnvBuilder
|
|
from fixtures.pg_version import PgVersion
|
|
from fixtures.utils import WITH_SANITIZERS, run_only_on_postgres
|
|
|
|
|
|
@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.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}();")
|
|
|
|
|
|
@run_only_on_postgres([PgVersion.V17], "Currently, build vith sanitizers is possible with v17 only")
|
|
def test_sanitizers(neon_env_builder: NeonEnvBuilder):
|
|
"""
|
|
Test that undefined behavior leads to endpoint abort with sanitizers enabled
|
|
"""
|
|
env = neon_env_builder.init_start()
|
|
env.create_branch("test_ubsan")
|
|
endpoint = env.endpoints.create_start("test_ubsan")
|
|
|
|
# Test case based on https://www.postgresql.org/message-id/17167-028026e4ca333817@postgresql.org
|
|
if not WITH_SANITIZERS:
|
|
endpoint.safe_psql("SELECT 1::int4 << 128")
|
|
else:
|
|
with pytest.raises(Exception, match="This probably means the server terminated abnormally"):
|
|
endpoint.safe_psql("SELECT 1::int4 << 128")
|