Пример #1
0
 def get_query_processors(self) -> Sequence[QueryProcessor]:
     return [
         BasicFunctionsProcessor(),
         TimeSeriesProcessor({"time": "timestamp"}, ("timestamp", )),
         ReferrerRateLimiterProcessor(),
         OrganizationRateLimiterProcessor(org_column="org_id"),
     ]
Пример #2
0
 def get_query_processors(self) -> Sequence[QueryProcessor]:
     return [
         OrganizationRateLimiterProcessor(org_column="organization_id"),
         ReferrerRateLimiterProcessor(),
         ProjectReferrerRateLimiter("project_id"),
         ProjectRateLimiterProcessor(project_column="project_id"),
         ResourceQuotaProcessor("project_id"),
     ]
Пример #3
0
def test_project_rate_limit_processor() -> None:

    settings = HTTPQuerySettings(referrer="foo")

    num_before = len(settings.get_rate_limit_params())
    for query in queries:
        ReferrerRateLimiterProcessor().process_query(query, settings)
    # if the limiter is not configured, do not apply it
    assert len(settings.get_rate_limit_params()) == num_before
Пример #4
0
 def get_query_processors(self) -> Sequence[QueryProcessor]:
     return [
         TimeSeriesProcessor({"time": "timestamp"}, ("timestamp", )),
         TagsExpanderProcessor(),
         BasicFunctionsProcessor(),
         ReferrerRateLimiterProcessor(),
         ProjectReferrerRateLimiter("project_id"),
         ProjectRateLimiterProcessor(project_column="project_id"),
         ResourceQuotaProcessor("project_id"),
     ]
Пример #5
0
 def get_query_processors(self) -> Sequence[QueryProcessor]:
     return [
         BasicFunctionsProcessor(),
         TimeSeriesProcessor({"bucketed_started": "started"},
                             ("started", "received")),
         ReferrerRateLimiterProcessor(),
         OrganizationRateLimiterProcessor(org_column="org_id"),
         ProjectReferrerRateLimiter("project_id"),
         ProjectRateLimiterProcessor(project_column="project_id"),
         ResourceQuotaProcessor("project_id"),
     ]
Пример #6
0
 def get_query_processors(self) -> Sequence[QueryProcessor]:
     return [
         GranularityProcessor(),
         TimeSeriesProcessor({"bucketed_time": "timestamp"},
                             ("timestamp", )),
         ReferrerRateLimiterProcessor(),
         OrganizationRateLimiterProcessor(org_column="org_id"),
         ProjectReferrerRateLimiter("project_id"),
         ProjectRateLimiterProcessor(project_column="project_id"),
         ResourceQuotaProcessor("project_id"),
         TagsTypeTransformer(),
     ]
Пример #7
0
 def get_query_processors(self) -> Sequence[QueryProcessor]:
     return [
         TimeSeriesProcessor({"time": "finish_ts"},
                             ("start_ts", "finish_ts", "timestamp")),
         TagsExpanderProcessor(),
         BasicFunctionsProcessor(),
         apdex_processor(),
         failure_rate_processor(),
         ReferrerRateLimiterProcessor(),
         ProjectReferrerRateLimiter("project_id"),
         ProjectRateLimiterProcessor(project_column="project_id"),
         ResourceQuotaProcessor("project_id"),
     ]
Пример #8
0
def test_project_rate_limit_processor_overridden_only_one() -> None:
    referrer_name = "foo"
    settings = HTTPQuerySettings(referrer="foo")
    state.set_config(f"referrer_concurrent_limit_{referrer_name}", 10)

    num_before = len(settings.get_rate_limit_params())
    for query in queries:
        ReferrerRateLimiterProcessor().process_query(query, settings)
    assert len(settings.get_rate_limit_params()) == num_before + 1
    rate_limiter = settings.get_rate_limit_params()[-1]
    assert rate_limiter.rate_limit_name == REFERRER_RATE_LIMIT_NAME
    assert rate_limiter.bucket == referrer_name
    assert rate_limiter.per_second_limit is None
    assert rate_limiter.concurrent_limit == 10