Merge "Fix aggregator _get_unique_key method"
This commit is contained in:
commit
30a2c65968
@ -1442,3 +1442,55 @@ class BasePipelineTestCase(test.BaseTestCase):
|
|||||||
pipe.flush(None)
|
pipe.flush(None)
|
||||||
publisher = pipeline_manager.pipelines[0].publishers[0]
|
publisher = pipeline_manager.pipelines[0].publishers[0]
|
||||||
self.assertEqual(1, len(publisher.samples))
|
self.assertEqual(1, len(publisher.samples))
|
||||||
|
|
||||||
|
def test_aggregator_without_authentication(self):
|
||||||
|
transformer_cfg = [
|
||||||
|
{
|
||||||
|
'name': 'aggregator',
|
||||||
|
'parameters': {'size': 2},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
self._set_pipeline_cfg('transformers', transformer_cfg)
|
||||||
|
self._set_pipeline_cfg('counters', ['storage.objects.outgoing.bytes'])
|
||||||
|
counters = [
|
||||||
|
sample.Sample(
|
||||||
|
name='storage.objects.outgoing.bytes',
|
||||||
|
type=sample.TYPE_DELTA,
|
||||||
|
volume=26,
|
||||||
|
unit='B',
|
||||||
|
user_id=None,
|
||||||
|
project_id=None,
|
||||||
|
resource_id='test_resource',
|
||||||
|
timestamp=timeutils.utcnow().isoformat(),
|
||||||
|
resource_metadata={'version': '1.0'}
|
||||||
|
),
|
||||||
|
sample.Sample(
|
||||||
|
name='storage.objects.outgoing.bytes',
|
||||||
|
type=sample.TYPE_DELTA,
|
||||||
|
volume=16,
|
||||||
|
unit='B',
|
||||||
|
user_id=None,
|
||||||
|
project_id=None,
|
||||||
|
resource_id='test_resource',
|
||||||
|
timestamp=timeutils.utcnow().isoformat(),
|
||||||
|
resource_metadata={'version': '2.0'}
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
pipeline_manager = pipeline.PipelineManager(self.pipeline_cfg,
|
||||||
|
self.transformer_manager)
|
||||||
|
pipe = pipeline_manager.pipelines[0]
|
||||||
|
|
||||||
|
pipe.publish_samples(None, [counters[0]])
|
||||||
|
pipe.flush(None)
|
||||||
|
publisher = pipe.publishers[0]
|
||||||
|
self.assertEqual(0, len(publisher.samples))
|
||||||
|
|
||||||
|
pipe.publish_samples(None, [counters[1]])
|
||||||
|
pipe.flush(None)
|
||||||
|
publisher = pipe.publishers[0]
|
||||||
|
|
||||||
|
self.assertEqual(1, len(publisher.samples))
|
||||||
|
self.assertEqual(42, getattr(publisher.samples[0], 'volume'))
|
||||||
|
self.assertEqual("test_resource", getattr(publisher.samples[0],
|
||||||
|
'resource_id'))
|
||||||
|
@ -213,8 +213,13 @@ class AggregatorTransformer(ScalingTransformer):
|
|||||||
self.key_attributes.append(name)
|
self.key_attributes.append(name)
|
||||||
|
|
||||||
def _get_unique_key(self, s):
|
def _get_unique_key(self, s):
|
||||||
non_aggregated_keys = "-".join([getattr(s, field)
|
# NOTE(arezmerita): in samples generated by ceilometer middleware,
|
||||||
for field in self.key_attributes])
|
# when accessing without authentication publicly readable/writable
|
||||||
|
# swift containers, the project_id and the user_id are missing.
|
||||||
|
# They will be replaced by <undefined> for unique key construction.
|
||||||
|
keys = ['<undefined>' if getattr(s, f) is None else getattr(s, f)
|
||||||
|
for f in self.key_attributes]
|
||||||
|
non_aggregated_keys = "-".join(keys)
|
||||||
# NOTE(sileht): it assumes, a meter always have the same unit/type
|
# NOTE(sileht): it assumes, a meter always have the same unit/type
|
||||||
return "%s-%s-%s" % (s.name, s.resource_id, non_aggregated_keys)
|
return "%s-%s-%s" % (s.name, s.resource_id, non_aggregated_keys)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user