Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ class Outcome:

ITEM_TYPE_FULL_RETENTION = {
TraceItemType.TRACE_ITEM_TYPE_UPTIME_RESULT,
TraceItemType.TRACE_ITEM_TYPE_PREPROD,
}
35 changes: 35 additions & 0 deletions tests/web/rpc/v1/routing_strategies/test_outcomes_based.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,41 @@ def test_item_type_full_retention() -> None:
assert routing_decision.can_run


@pytest.mark.eap
@pytest.mark.redis_db
def test_item_type_full_retention_preprod() -> None:
"""
PREPROD item type should not use long term retention downsampling,
it should always fetch tier1 for its 90 day retention period.
"""
state.set_config(
"enable_long_term_retention_downsampling",
1,
)
strategy = OutcomesBasedRoutingStrategy()

# request that queries last 50 days of data
end_time = datetime.now(UTC).replace(hour=0, minute=0, second=0, microsecond=0)
start_time = end_time - timedelta(hours=1200) # 50 days
request = TraceItemTableRequest(
meta=_get_request_meta(
start=start_time,
end=end_time,
trace_item_type=TraceItemType.TRACE_ITEM_TYPE_PREPROD,
)
)
request.meta.downsampled_storage_config.mode = DownsampledStorageConfig.MODE_NORMAL
context = RoutingContext(
in_msg=request,
timer=Timer("test"),
query_id=uuid.uuid4().hex,
)
routing_decision = strategy.get_routing_decision(context)
assert routing_decision.tier == Tier.TIER_1
assert routing_decision.clickhouse_settings == {"max_threads": 10}
assert routing_decision.can_run


@pytest.mark.eap
@pytest.mark.redis_db
def test_outcomes_based_routing_sampled_data_past_thirty_days() -> None:
Expand Down
Loading