Fix duplication in sinks names

When we have sinks with duplicated names, problem occurs: names
conflict and we get only one measurment. This patchset will fix
it, if sinks have duplicated names, PipelineException raises.

Change-Id: I68cb3fd635b0d4cd63be9da3385cb64e0326e558
Closes-bug: 1417278
This commit is contained in:
Lena Novokshonova 2015-02-06 16:24:01 +04:00
parent 0bcbaf6d93
commit e16dbad8ef
2 changed files with 17 additions and 2 deletions

View File

@ -623,8 +623,13 @@ class PipelineManager(object):
cfg) cfg)
LOG.info(_('detected decoupled pipeline config format')) LOG.info(_('detected decoupled pipeline config format'))
sources = [p_type['source'](s) for s in cfg.get('sources', [])] sources = [p_type['source'](s) for s in cfg.get('sources', [])]
sinks = dict((s['name'], p_type['sink'](s, transformer_manager)) sinks = {}
for s in cfg.get('sinks', [])) for s in cfg.get('sinks', []):
if s['name'] in sinks:
raise PipelineException("Duplicated sink names: %s" %
s['name'], self)
else:
sinks[s['name']] = p_type['sink'](s, transformer_manager)
for source in sources: for source in sources:
source.check_sinks(sinks) source.check_sinks(sinks)
for target in source.sinks: for target in source.sinks:

View File

@ -267,3 +267,13 @@ class TestDecoupledPipeline(pipeline_base.BasePipelineTestCase):
self._do_test_rate_of_change_in_boilerplate_pipeline_cfg(3, self._do_test_rate_of_change_in_boilerplate_pipeline_cfg(3,
meters, meters,
units) units)
def test_duplicated_sinks_names(self):
self.pipeline_cfg['sinks'].append({
'name': 'test_sink',
'publishers': ['except'],
})
self.assertRaises(pipeline.PipelineException,
pipeline.PipelineManager,
self.pipeline_cfg,
self.transformer_manager)