def process(self, metric, datapoint): increment('datapointsReceived') for rule in RewriteRuleManager.rules(PRE): metric = rule.apply(metric) aggregate_metrics = set() for rule in RuleManager.rules: aggregate_metric = rule.get_aggregate_metric(metric) if aggregate_metric is None: continue else: aggregate_metrics.add(aggregate_metric) values_buffer = BufferManager.get_buffer(aggregate_metric) if not values_buffer.configured: values_buffer.configure_aggregation(rule.frequency, rule.aggregation_func) values_buffer.input(datapoint) for rule in RewriteRuleManager.rules(POST): metric = rule.apply(metric) if metric not in aggregate_metrics: yield (metric, datapoint)
def process(self, metric, datapoint): increment('datapointsReceived') for rule in RewriteRuleManager.rules(PRE): metric = rule.apply(metric) aggregate_metrics = set() for rule in RuleManager.rules: aggregate_metric = rule.get_aggregate_metric(metric) if aggregate_metric is None: continue else: aggregate_metrics.add(aggregate_metric) values_buffer = BufferManager.get_buffer(aggregate_metric) if not values_buffer.configured: values_buffer.configure_aggregation(rule.frequency, rule.aggregation_func) values_buffer.input(datapoint) for rule in RewriteRuleManager.rules(POST): metric = rule.apply(metric) if metric not in aggregate_metrics: if settings.LOG_AGGREGATOR_MISSES and len(aggregate_metrics) == 0: log.msg( "Couldn't match metric %s with any aggregation rule. Passing on un-aggregated." % metric) yield (metric, datapoint)
def process(self, metric, datapoint): increment('datapointsReceived') for rule in RewriteRuleManager.rules(PRE): metric = rule.apply(metric) aggregate_metrics = set() for rule in RuleManager.rules: aggregate_metric = rule.get_aggregate_metric(metric) if aggregate_metric is None: continue else: aggregate_metrics.add(aggregate_metric) values_buffer = BufferManager.get_buffer(aggregate_metric) if not values_buffer.configured: values_buffer.configure_aggregation(rule.frequency, rule.aggregation_func) values_buffer.input(datapoint) for rule in RewriteRuleManager.rules(POST): metric = rule.apply(metric) if settings.FORWARD_ALL and metric not in aggregate_metrics: if settings.LOG_AGGREGATOR_MISSES and len(aggregate_metrics) == 0: log.msg( "Couldn't match metric %s with any aggregation rule. Passing on un-aggregated." % metric) yield (metric, datapoint)
def test_comments_ignored(self): import carbon.rewrite open_mock = Mock(return_value=iter(self.commented_config.splitlines())) RewriteRuleManager.rules_file = 'foo.conf' with patch.object(carbon.rewrite, 'open', open_mock, create=True): with patch.object(carbon.rewrite, 'exists', Mock(return_value=True)): with patch.object(carbon.rewrite, 'getmtime', Mock(return_value=1234)): RewriteRuleManager.read_rules() self.assertEqual(1, len(RewriteRuleManager.rules('pre')))
def test_request_for_nonexistent_rules_returns_iterable(self): try: iter(RewriteRuleManager.rules('foo')) except TypeError: self.fail("RewriteRuleManager.rules() returned a non-iterable type")