Don't drop batch on one bad metric
Change-Id: I313cfc26fa6ab6abf0415a4e43889c2a7a2b7cfe
This commit is contained in:
parent
cd53cafa7b
commit
8e6e3936c1
|
@ -79,6 +79,7 @@ class AgentCheck(util.Dimensions):
|
||||||
for dim_kv in dim_key_values.items():
|
for dim_kv in dim_key_values.items():
|
||||||
if dim_kv[0] not in dimensions_white_list.keys():
|
if dim_kv[0] not in dimensions_white_list.keys():
|
||||||
dimensions_white_list[dim_kv[0]] = dim_kv[1]
|
dimensions_white_list[dim_kv[0]] = dim_kv[1]
|
||||||
|
try:
|
||||||
self.aggregator.submit_metric(metric,
|
self.aggregator.submit_metric(metric,
|
||||||
value,
|
value,
|
||||||
metric_type,
|
metric_type,
|
||||||
|
@ -88,6 +89,8 @@ class AgentCheck(util.Dimensions):
|
||||||
device_name,
|
device_name,
|
||||||
value_meta,
|
value_meta,
|
||||||
timestamp)
|
timestamp)
|
||||||
|
except Exception as e:
|
||||||
|
self.log.exception("invalid metric: {}".format(e))
|
||||||
|
|
||||||
def gauge(self, metric, value, dimensions=None, delegated_tenant=None, hostname=None,
|
def gauge(self, metric, value, dimensions=None, delegated_tenant=None, hostname=None,
|
||||||
device_name=None, timestamp=None, value_meta=None):
|
device_name=None, timestamp=None, value_meta=None):
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
# (C) Copyright 2017 Hewlett Packard Enterprise Development Company LP
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
import monasca_agent.common.config as configuration
|
||||||
|
import monasca_agent.common.metrics as metrics_pkg
|
||||||
|
|
||||||
|
from monasca_agent.collector.checks import AgentCheck
|
||||||
|
|
||||||
|
base_config = configuration.Config(os.path.join(os.path.dirname(__file__),
|
||||||
|
'test-agent.yaml'))
|
||||||
|
|
||||||
|
|
||||||
|
class TestAgentCheck(unittest.TestCase):
|
||||||
|
def testBadMetricKeepBatch(self):
|
||||||
|
agent_config = base_config.get_config(sections='Main')
|
||||||
|
|
||||||
|
check = AgentCheck("foo", {}, agent_config)
|
||||||
|
|
||||||
|
dimensions = {'A': 'B', 'B': 'C', 'D': 'E'}
|
||||||
|
check.submit_metric("Foo",
|
||||||
|
5,
|
||||||
|
metrics_pkg.Gauge,
|
||||||
|
dimensions=dimensions,
|
||||||
|
delegated_tenant=None,
|
||||||
|
hostname=None,
|
||||||
|
device_name=None,
|
||||||
|
value_meta=None)
|
||||||
|
self.assertEqual(len(check.aggregator.metrics), 1)
|
||||||
|
|
||||||
|
dimensions = {'A': '()', 'B': 'C', 'D': 'E'}
|
||||||
|
check.submit_metric("Bar",
|
||||||
|
5,
|
||||||
|
metrics_pkg.Gauge,
|
||||||
|
dimensions=dimensions,
|
||||||
|
delegated_tenant=None,
|
||||||
|
hostname=None,
|
||||||
|
device_name=None,
|
||||||
|
value_meta=None)
|
||||||
|
self.assertEqual(len(check.aggregator.metrics), 1)
|
||||||
|
|
||||||
|
dimensions = {'A': 'B', 'B': 'C', 'D': 'E'}
|
||||||
|
check.submit_metric("Baz",
|
||||||
|
5,
|
||||||
|
metrics_pkg.Gauge,
|
||||||
|
dimensions=dimensions,
|
||||||
|
delegated_tenant=None,
|
||||||
|
hostname=None,
|
||||||
|
device_name=None,
|
||||||
|
value_meta=None)
|
||||||
|
self.assertEqual(len(check.aggregator.metrics), 2)
|
Loading…
Reference in New Issue