mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-03 19:42:55 +00:00
## Problem As part of the reldirv2 rollout: LKB-197. We will use number of db/rels as a criteria whether to rollout reldirv2 directly on the write path (simplest and easiest way of rollout). If the number of rel/db is small then it shouldn't take too long time on the write path. ## Summary of changes * Compute db/rel count during basebackup. * Also compute it during logical size computation. * Collect maximum number of db/rel across all timelines in the feature flag propeties. --------- Signed-off-by: Alex Chi Z <chi@neon.tech>
65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
from fixtures.utils import run_only_on_default_postgres
|
|
|
|
if TYPE_CHECKING:
|
|
from fixtures.neon_fixtures import NeonEnvBuilder
|
|
|
|
|
|
@run_only_on_default_postgres("Pageserver-only test only needs to run on one version")
|
|
def test_feature_flag(neon_env_builder: NeonEnvBuilder):
|
|
env = neon_env_builder.init_start()
|
|
env.pageserver.http_client().force_override_feature_flag("test-feature-flag", "true")
|
|
assert env.pageserver.http_client().evaluate_feature_flag_boolean(
|
|
env.initial_tenant, "test-feature-flag"
|
|
)["result"]["Ok"]
|
|
assert (
|
|
env.pageserver.http_client().evaluate_feature_flag_multivariate(
|
|
env.initial_tenant, "test-feature-flag"
|
|
)["result"]["Ok"]
|
|
== "true"
|
|
)
|
|
|
|
env.pageserver.http_client().force_override_feature_flag("test-feature-flag", "false")
|
|
assert (
|
|
env.pageserver.http_client().evaluate_feature_flag_boolean(
|
|
env.initial_tenant, "test-feature-flag"
|
|
)["result"]["Err"]
|
|
== "No condition group is matched"
|
|
)
|
|
assert (
|
|
env.pageserver.http_client().evaluate_feature_flag_multivariate(
|
|
env.initial_tenant, "test-feature-flag"
|
|
)["result"]["Ok"]
|
|
== "false"
|
|
)
|
|
|
|
env.pageserver.http_client().force_override_feature_flag("test-feature-flag", None)
|
|
assert (
|
|
"Err"
|
|
in env.pageserver.http_client().evaluate_feature_flag_boolean(
|
|
env.initial_tenant, "test-feature-flag"
|
|
)["result"]
|
|
)
|
|
assert (
|
|
"Err"
|
|
in env.pageserver.http_client().evaluate_feature_flag_multivariate(
|
|
env.initial_tenant, "test-feature-flag"
|
|
)["result"]
|
|
)
|
|
|
|
env.endpoints.create_start("main") # trigger basebackup
|
|
env.pageserver.http_client().force_refresh_feature_flag(env.initial_tenant)
|
|
|
|
# Check if the properties exist
|
|
result = env.pageserver.http_client().evaluate_feature_flag_multivariate(
|
|
env.initial_tenant, "test-feature-flag"
|
|
)
|
|
|
|
assert "tenant_remote_size_mb" in result["properties"]
|
|
assert "tenant_db_count_max" in result["properties"]
|
|
assert "tenant_rel_count_max" in result["properties"]
|
|
assert "tenant_id" in result["properties"]
|