From c26a24e4ea40354e75473099868252a7ca7e3585 Mon Sep 17 00:00:00 2001 From: Allan Yu Date: Thu, 23 Jul 2026 15:29:55 -0400 Subject: [PATCH] Update ctl.erb to include clock_drift_enabled and add unit tests Because of the BPM changes that removed ctl.erb, when the ctl.erb file was remade, it didn't include the clock_drift_enabled parameter (see: https://github.com/cloudfoundry/system-metrics-release/pull/321/changes#r3581015436). This fix allows system metrics to correctly read clock_drift_enabled via ctl.erb and adds true/false unit tests. Co-authored-by: Cursor --- .../templates/ctl.erb | 1 + spec/jobs/loggr_system_metrics_agent_spec.rb | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/jobs/loggr-system-metrics-agent/templates/ctl.erb b/jobs/loggr-system-metrics-agent/templates/ctl.erb index 6b231709..039ecf72 100644 --- a/jobs/loggr-system-metrics-agent/templates/ctl.erb +++ b/jobs/loggr-system-metrics-agent/templates/ctl.erb @@ -36,6 +36,7 @@ case $1 in INDEX=<%= index %> \ IP=<%= ip %> \ LIMITED_METRICS=<%= p('bosh_metrics_forwarder_metrics_only') %> \ + CLOCK_DRIFT_ENABLED=<%= p('clock_drift_enabled') %> \ CA_CERT_PATH="/var/vcap/jobs/loggr-system-metrics-agent/config/certs/system_metrics_agent_ca.crt" \ CERT_PATH="/var/vcap/jobs/loggr-system-metrics-agent/config/certs/system_metrics_agent.crt" \ KEY_PATH="/var/vcap/jobs/loggr-system-metrics-agent/config/certs/system_metrics_agent.key" \ diff --git a/spec/jobs/loggr_system_metrics_agent_spec.rb b/spec/jobs/loggr_system_metrics_agent_spec.rb index 1d29c31f..3c91d073 100644 --- a/spec/jobs/loggr_system_metrics_agent_spec.rb +++ b/spec/jobs/loggr_system_metrics_agent_spec.rb @@ -39,6 +39,51 @@ def render_system_metrics_monit(properties = {}) it 'passes the sample interval from properties' do expect(process['env']['SAMPLE_INTERVAL']).to eq('15s') end + + it 'defaults CLOCK_DRIFT_ENABLED to false' do + expect(process['env']['CLOCK_DRIFT_ENABLED']).to eq('false') + end + + context 'when clock_drift_enabled is true' do + let(:rendered) { template.render({'clock_drift_enabled' => true}) } + + it 'passes CLOCK_DRIFT_ENABLED as true' do + expect(process['env']['CLOCK_DRIFT_ENABLED']).to eq('true') + end + end + + context 'when clock_drift_enabled is false' do + let(:rendered) { template.render({'clock_drift_enabled' => false}) } + + it 'passes CLOCK_DRIFT_ENABLED as false' do + expect(process['env']['CLOCK_DRIFT_ENABLED']).to eq('false') + end + end + end + + describe 'bin/ctl' do + let(:template) { job.template('bin/ctl') } + + it 'defaults CLOCK_DRIFT_ENABLED to false' do + rendered = template.render({}) + expect(rendered).to include('CLOCK_DRIFT_ENABLED=false') + end + + context 'when clock_drift_enabled is true' do + let(:rendered) { template.render({'clock_drift_enabled' => true}) } + + it 'passes CLOCK_DRIFT_ENABLED=true as an environment variable' do + expect(rendered).to include('CLOCK_DRIFT_ENABLED=true') + end + end + + context 'when clock_drift_enabled is false' do + let(:rendered) { template.render({'clock_drift_enabled' => false}) } + + it 'passes CLOCK_DRIFT_ENABLED=false as an environment variable' do + expect(rendered).to include('CLOCK_DRIFT_ENABLED=false') + end + end end describe 'monit' do