mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-04 12:02:55 +00:00
test_runner: add gRPC support (#12279)
## Problem `test_runner` integration tests should support gRPC. Touches #11926. ## Summary of changes * Enable gRPC for Pageservers, with dynamic port allocations. * Add a `grpc` parameter for endpoint creation, plumbed through to `neon_local endpoint create`. No tests actually use gRPC yet, since computes don't support it yet.
This commit is contained in:
@@ -497,6 +497,7 @@ class NeonLocalCli(AbstractNeonCli):
|
||||
tenant_id: TenantId,
|
||||
pg_version: PgVersion,
|
||||
endpoint_id: str | None = None,
|
||||
grpc: bool | None = None,
|
||||
hot_standby: bool = False,
|
||||
lsn: Lsn | None = None,
|
||||
pageserver_id: int | None = None,
|
||||
@@ -521,6 +522,8 @@ class NeonLocalCli(AbstractNeonCli):
|
||||
args.extend(["--external-http-port", str(external_http_port)])
|
||||
if internal_http_port is not None:
|
||||
args.extend(["--internal-http-port", str(internal_http_port)])
|
||||
if grpc:
|
||||
args.append("--grpc")
|
||||
if endpoint_id is not None:
|
||||
args.append(endpoint_id)
|
||||
if hot_standby:
|
||||
|
||||
@@ -1228,6 +1228,7 @@ class NeonEnv:
|
||||
):
|
||||
pageserver_port = PageserverPort(
|
||||
pg=self.port_distributor.get_port(),
|
||||
grpc=self.port_distributor.get_port(),
|
||||
http=self.port_distributor.get_port(),
|
||||
https=self.port_distributor.get_port() if config.use_https_pageserver_api else None,
|
||||
)
|
||||
@@ -1243,13 +1244,14 @@ class NeonEnv:
|
||||
ps_cfg: dict[str, Any] = {
|
||||
"id": ps_id,
|
||||
"listen_pg_addr": f"localhost:{pageserver_port.pg}",
|
||||
"listen_grpc_addr": f"localhost:{pageserver_port.grpc}",
|
||||
"listen_http_addr": f"localhost:{pageserver_port.http}",
|
||||
"listen_https_addr": f"localhost:{pageserver_port.https}"
|
||||
if config.use_https_pageserver_api
|
||||
else None,
|
||||
"pg_auth_type": pg_auth_type,
|
||||
"http_auth_type": http_auth_type,
|
||||
"grpc_auth_type": grpc_auth_type,
|
||||
"http_auth_type": http_auth_type,
|
||||
"availability_zone": availability_zone,
|
||||
# Disable pageserver disk syncs in tests: when running tests concurrently, this avoids
|
||||
# the pageserver taking a long time to start up due to syncfs flushing other tests' data
|
||||
@@ -1762,6 +1764,7 @@ def neon_env_builder(
|
||||
@dataclass
|
||||
class PageserverPort:
|
||||
pg: int
|
||||
grpc: int
|
||||
http: int
|
||||
https: int | None = None
|
||||
|
||||
@@ -4207,6 +4210,7 @@ class Endpoint(PgProtocol, LogUtils):
|
||||
self,
|
||||
branch_name: str,
|
||||
endpoint_id: str | None = None,
|
||||
grpc: bool | None = None,
|
||||
hot_standby: bool = False,
|
||||
lsn: Lsn | None = None,
|
||||
config_lines: list[str] | None = None,
|
||||
@@ -4231,6 +4235,7 @@ class Endpoint(PgProtocol, LogUtils):
|
||||
endpoint_id=self.endpoint_id,
|
||||
tenant_id=self.tenant_id,
|
||||
lsn=lsn,
|
||||
grpc=grpc,
|
||||
hot_standby=hot_standby,
|
||||
pg_port=self.pg_port,
|
||||
external_http_port=self.external_http_port,
|
||||
@@ -4530,6 +4535,7 @@ class Endpoint(PgProtocol, LogUtils):
|
||||
self,
|
||||
branch_name: str,
|
||||
endpoint_id: str | None = None,
|
||||
grpc: bool | None = None,
|
||||
hot_standby: bool = False,
|
||||
lsn: Lsn | None = None,
|
||||
config_lines: list[str] | None = None,
|
||||
@@ -4547,6 +4553,7 @@ class Endpoint(PgProtocol, LogUtils):
|
||||
branch_name=branch_name,
|
||||
endpoint_id=endpoint_id,
|
||||
config_lines=config_lines,
|
||||
grpc=grpc,
|
||||
hot_standby=hot_standby,
|
||||
lsn=lsn,
|
||||
pageserver_id=pageserver_id,
|
||||
@@ -4634,6 +4641,7 @@ class EndpointFactory:
|
||||
endpoint_id: str | None = None,
|
||||
tenant_id: TenantId | None = None,
|
||||
lsn: Lsn | None = None,
|
||||
grpc: bool | None = None,
|
||||
hot_standby: bool = False,
|
||||
config_lines: list[str] | None = None,
|
||||
remote_ext_base_url: str | None = None,
|
||||
@@ -4653,6 +4661,7 @@ class EndpointFactory:
|
||||
return ep.create_start(
|
||||
branch_name=branch_name,
|
||||
endpoint_id=endpoint_id,
|
||||
grpc=grpc,
|
||||
hot_standby=hot_standby,
|
||||
config_lines=config_lines,
|
||||
lsn=lsn,
|
||||
@@ -4667,6 +4676,7 @@ class EndpointFactory:
|
||||
endpoint_id: str | None = None,
|
||||
tenant_id: TenantId | None = None,
|
||||
lsn: Lsn | None = None,
|
||||
grpc: bool | None = None,
|
||||
hot_standby: bool = False,
|
||||
config_lines: list[str] | None = None,
|
||||
pageserver_id: int | None = None,
|
||||
@@ -4689,6 +4699,7 @@ class EndpointFactory:
|
||||
branch_name=branch_name,
|
||||
endpoint_id=endpoint_id,
|
||||
lsn=lsn,
|
||||
grpc=grpc,
|
||||
hot_standby=hot_standby,
|
||||
config_lines=config_lines,
|
||||
pageserver_id=pageserver_id,
|
||||
@@ -4713,6 +4724,7 @@ class EndpointFactory:
|
||||
self,
|
||||
origin: Endpoint,
|
||||
endpoint_id: str | None = None,
|
||||
grpc: bool | None = None,
|
||||
config_lines: list[str] | None = None,
|
||||
) -> Endpoint:
|
||||
branch_name = origin.branch_name
|
||||
@@ -4724,6 +4736,7 @@ class EndpointFactory:
|
||||
endpoint_id=endpoint_id,
|
||||
tenant_id=origin.tenant_id,
|
||||
lsn=None,
|
||||
grpc=grpc,
|
||||
hot_standby=True,
|
||||
config_lines=config_lines,
|
||||
)
|
||||
@@ -4732,6 +4745,7 @@ class EndpointFactory:
|
||||
self,
|
||||
origin: Endpoint,
|
||||
endpoint_id: str | None = None,
|
||||
grpc: bool | None = None,
|
||||
config_lines: list[str] | None = None,
|
||||
) -> Endpoint:
|
||||
branch_name = origin.branch_name
|
||||
@@ -4743,6 +4757,7 @@ class EndpointFactory:
|
||||
endpoint_id=endpoint_id,
|
||||
tenant_id=origin.tenant_id,
|
||||
lsn=None,
|
||||
grpc=grpc,
|
||||
hot_standby=True,
|
||||
config_lines=config_lines,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user