diff --git a/ceilometer/transformer/conversions.py b/ceilometer/transformer/conversions.py index faa0c8ed4..fd265dbfc 100644 --- a/ceilometer/transformer/conversions.py +++ b/ceilometer/transformer/conversions.py @@ -66,7 +66,7 @@ class ScalingTransformer(transformer.TransformerBase): self.source = source self.target = target self.replace = replace - self.preserved = None + self.preserved = [] LOG.debug(_('scaling conversion transformer with source:' ' %(source)s target: %(target)s replace:' ' %(replace)s') % locals()) @@ -106,7 +106,7 @@ class ScalingTransformer(transformer.TransformerBase): if self.replace: counter = transformed else: - self.preserved = transformed + self.preserved.append(transformed) return counter def handle_sample(self, context, counter, source): @@ -124,8 +124,8 @@ class ScalingTransformer(transformer.TransformerBase): """ counters = [] if self.preserved: - counters.append(self.preserved) - self.preserved = None + counters.extend(self.preserved) + self.preserved = [] return counters diff --git a/tests/test_pipeline.py b/tests/test_pipeline.py index 950c3c12b..188ce4401 100644 --- a/tests/test_pipeline.py +++ b/tests/test_pipeline.py @@ -782,6 +782,18 @@ class TestPipeline(base.TestCase): resource_metadata={'cpu_number': 4, 'user_metadata': um}, ), + counter.Counter( + name='cpu', + type=type, + volume=prev, + unit='ns', + user_id='test_user', + project_id='test_proj', + resource_id='test_resource2', + timestamp=now.isoformat(), + resource_metadata={'cpu_number': 2, + 'user_metadata': um}, + ), counter.Counter( name='cpu', type=type, @@ -794,6 +806,18 @@ class TestPipeline(base.TestCase): resource_metadata={'cpu_number': 4, 'user_metadata': um}, ), + counter.Counter( + name='cpu', + type=type, + volume=curr, + unit='ns', + user_id='test_user', + project_id='test_proj', + resource_id='test_resource2', + timestamp=later.isoformat(), + resource_metadata={'cpu_number': 2, + 'user_metadata': um}, + ), ] pipeline_manager = pipeline.PipelineManager(self.pipeline_cfg, @@ -802,17 +826,24 @@ class TestPipeline(base.TestCase): pipe.publish_counters(None, counters, None) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.counters), 2) + self.assertEqual(len(publisher.counters), 4) # original counters are passed thru' unmolested - self.assertEquals(publisher.counters[0], counters[0]) - self.assertEquals(publisher.counters[1], counters[1]) + for i in xrange(4): + self.assertEquals(publisher.counters[i], counters[i]) pipe.flush(None, None) - self.assertEqual(len(publisher.counters), 3) - cpu_util = publisher.counters[-1] + self.assertEqual(len(publisher.counters), 6) + cpu_util = publisher.counters[4] self.assertEquals(getattr(cpu_util, 'name'), 'cpu_util') + self.assertEquals(getattr(cpu_util, 'resource_id'), 'test_resource') self.assertEquals(getattr(cpu_util, 'unit'), '%') self.assertEquals(getattr(cpu_util, 'type'), counter.TYPE_GAUGE) self.assertEquals(getattr(cpu_util, 'volume'), expected) + cpu_util = publisher.counters[5] + self.assertEquals(getattr(cpu_util, 'name'), 'cpu_util') + self.assertEquals(getattr(cpu_util, 'resource_id'), 'test_resource2') + self.assertEquals(getattr(cpu_util, 'unit'), '%') + self.assertEquals(getattr(cpu_util, 'type'), counter.TYPE_GAUGE) + self.assertEquals(getattr(cpu_util, 'volume'), expected * 2) def test_rate_of_change_conversion(self): self._do_test_rate_of_change_conversion(120000000000,