diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py index 30c465f181..c7f730d033 100644 --- a/tests/test_scheduler.py +++ b/tests/test_scheduler.py @@ -1081,6 +1081,14 @@ class TestScheduler(testtools.TestCase): self.assertReportedStat( 'zuul.pipeline.gate.org.project.total_changes', value='1|c') + def test_initial_pipeline_gauges(self): + "Test that each pipeline reported its length on start" + pipeline_names = self.sched.layout.pipelines.keys() + self.assertNotEqual(len(pipeline_names), 0) + for name in pipeline_names: + self.assertReportedStat('zuul.pipeline.%s.current_changes' % name, + value='0|g') + def test_duplicate_pipelines(self): "Test that a change matching multiple pipelines works" diff --git a/zuul/scheduler.py b/zuul/scheduler.py index aa9809f0eb..29c856e961 100644 --- a/zuul/scheduler.py +++ b/zuul/scheduler.py @@ -469,6 +469,16 @@ class Scheduler(threading.Thread): self._setupMerger() for trigger in self.triggers.values(): trigger.postConfig() + if statsd: + try: + for pipeline in self.layout.pipelines.values(): + items = len(pipeline.getAllItems()) + # stats.gauges.zuul.pipeline.NAME.current_changes + key = 'zuul.pipeline.%s' % pipeline.name + statsd.gauge(key + '.current_changes', items) + except Exception: + self.log.exception("Exception reporting initial " + "pipeline stats:") self._reconfigure = False self.reconfigure_complete_event.set() finally: