from __future__ import annotations import time from typing import TYPE_CHECKING if TYPE_CHECKING: from fixtures.neon_fixtures import NeonEnv def test_migrations(neon_simple_env: NeonEnv): env = neon_simple_env endpoint = env.endpoints.create("main") endpoint.respec(skip_pg_catalog_updates=False) endpoint.start() num_migrations = 11 endpoint.wait_for_migrations(num_migrations=num_migrations) with endpoint.cursor() as cur: cur.execute("SELECT id FROM neon_migration.migration_id") migration_id = cur.fetchall() assert migration_id[0][0] == num_migrations endpoint.stop() endpoint.start() # We don't have a good way of knowing that the migrations code path finished executing # in compute_ctl in the case that no migrations are being run time.sleep(1) with endpoint.cursor() as cur: cur.execute("SELECT id FROM neon_migration.migration_id") migration_id = cur.fetchall() assert migration_id[0][0] == num_migrations