def _update_rate_limiting_or_probabilistic_sampler(self, response): s_type = response.get(STRATEGY_TYPE_STR) if s_type == PROBABILISTIC_SAMPLING_STRATEGY: sampling_rate = get_sampling_probability(response) new_sampler = ProbabilisticSampler(rate=sampling_rate) elif s_type == RATE_LIMITING_SAMPLING_STRATEGY: mtps = get_rate_limit(response) if 0 <= mtps < 500: new_sampler = RateLimitingSampler(max_traces_per_second=mtps) else: raise ValueError( 'Rate limiting parameter not in [0, 500] range: %s' % mtps) else: raise ValueError('Unsupported sampling strategy type: %s' % s_type) self._replace_sampler(new_sampler)
def test_get_rate_limit(strategy, expected): assert math.fabs(expected - get_rate_limit(strategy)) < 0.0001