From 3cb10708834eafd211dcfca9c6cdfaf39c8c9bc1 Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Sat, 24 Aug 2013 08:56:03 -0700 Subject: [PATCH] Report pipeline queue length on startup to statsd So that graphs that use a pipeline gauge have some data to work with, even if it's 0. Change-Id: Ida46153d8ee27ab212949dc3d417bb4331512de6 --- tests/test_scheduler.py | 8 ++++++++ zuul/scheduler.py | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py index 48baaeff97..7cb93ee1ec 100644 --- a/tests/test_scheduler.py +++ b/tests/test_scheduler.py @@ -1070,6 +1070,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 45e55fb18c..0e89b3cd80 100644 --- a/zuul/scheduler.py +++ b/zuul/scheduler.py @@ -470,6 +470,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: