mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-15 17:32:56 +00:00
## Problem neon_fixtures.py has grown to unmanageable size. It attracts conflicts. When adding specific utils under for example `fixtures/pageserver` things sometimes need to import stuff from `neon_fixtures.py` which creates circular import. This is usually only needed for type annotations, so `typing.TYPE_CHECKING` flag can mask the issue. Nevertheless I believe that splitting neon_fixtures.py into smaller parts is a better approach. Currently the PR contains small things, but I plan to continue and move NeonEnv to its own `fixtures.env` module. To keep the diff small I think this PR can already be merged to cause less conflicts. UPD: it looks like currently its not really possible to fully avoid usage of `typing.TYPE_CHECKING`, because some components directly depend on each other. I e Env -> Cli -> Env cycle. But its still worth it to avoid it in as many places as possible. And decreasing neon_fixture's size still makes sense.
30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
from fixtures.neon_fixtures import NeonEnvBuilder
|
|
from fixtures.port_distributor import PortDistributor
|
|
|
|
|
|
# Test that neon cli is able to start and stop all processes with the user defaults.
|
|
# Repeats the example from README.md as close as it can
|
|
def test_neon_cli_basics(neon_env_builder: NeonEnvBuilder, port_distributor: PortDistributor):
|
|
env = neon_env_builder.init_configs()
|
|
# Skipping the init step that creates a local tenant in Pytest tests
|
|
try:
|
|
env.neon_cli.start()
|
|
env.neon_cli.create_tenant(tenant_id=env.initial_tenant, set_default=True)
|
|
|
|
pg_port = port_distributor.get_port()
|
|
http_port = port_distributor.get_port()
|
|
env.neon_cli.endpoint_start(
|
|
endpoint_id="ep-basic-main", pg_port=pg_port, http_port=http_port
|
|
)
|
|
|
|
branch_name = "migration-check"
|
|
|
|
env.neon_cli.create_branch(new_branch_name=branch_name)
|
|
pg_port = port_distributor.get_port()
|
|
http_port = port_distributor.get_port()
|
|
env.neon_cli.endpoint_start(
|
|
f"ep-{branch_name}", pg_port, http_port, branch_name=branch_name
|
|
)
|
|
finally:
|
|
env.neon_cli.stop()
|