Skip to content

Commit

Permalink
Skip Load:ReportRelative is problematic for collectd9
Browse files Browse the repository at this point in the history
Refixes #901

The bug was that a ReportRelative configuration to the load
plugin for collectd 5.9.0 was causing a parse error.
It has been fixed for 5.9.1

collectd module now skips this configuration for collectd for collectd == 5.9.0
Previously it was '!=' 5.9.

* Upsteam bug for collectd: #901
* Previous incorrect commit: 8edc014
  • Loading branch information
traylenator committed Mar 20, 2020
1 parent 8c0e6a0 commit 1096084
Show file tree
Hide file tree
Showing 2 changed files with 129 additions and 1 deletion.
125 changes: 125 additions & 0 deletions spec/acceptance/class_plugin_load_spec.rb
@@ -0,0 +1,125 @@
require 'spec_helper_acceptance'

describe 'collectd::plugin::load class' do
context 'basic parameters' do
# Using puppet_apply as a helper
it 'works idempotently with no errors' do
pp = <<-EOS
class{'collectd':
utils => true,
}
class{'collectd::plugin::load': }
# Add one write plugin to keep logs quiet
class{'collectd::plugin::csv':}
# Create a socket to query
class{'collectd::plugin::unixsock':
socketfile => '/var/run/collectd-sock',
socketgroup => 'root',
}
EOS
# Run 3 times since the collectd_version
# fact is impossible until collectd is
# installed.
apply_manifest(pp, catch_failures: false)
apply_manifest(pp, catch_failures: true)
apply_manifest(pp, catch_changes: true)
# Wait to get some data
shell('sleep 10')
end

describe service('collectd') do
it { is_expected.to be_running }
end

describe command('collectdctl -s /var/run/collectd-sock listval') do
its(:exit_status) { is_expected.to eq 0 }
its(:stdout) { is_expected.to match %r{load/load} }
its(:stdout) { is_expected.not_to match %r{load/load-relative} }
end
end
context 'report relative false' do
# Using puppet_apply as a helper
it 'works idempotently with no errors' do
pp = <<-EOS
class{'collectd':
utils => true,
}
class{'collectd::plugin::load':
report_relative => false,
}
# Add one write plugin to keep logs quiet
class{'collectd::plugin::csv':}
# Create a socket to query
class{'collectd::plugin::unixsock':
socketfile => '/var/run/collectd-sock',
socketgroup => 'root',
}
EOS
# Run 3 times since the collectd_version
# fact is impossible until collectd is
# installed.
apply_manifest(pp, catch_failures: false)
apply_manifest(pp, catch_failures: true)
apply_manifest(pp, catch_changes: true)
# Wait to get some data
shell('sleep 10')
end

describe service('collectd') do
it { is_expected.to be_running }
end

describe command('collectdctl -s /var/run/collectd-sock listval') do
its(:exit_status) { is_expected.to eq 0 }
its(:stdout) { is_expected.to match %r{load/load} }
its(:stdout) { is_expected.not_to match %r{load/load-relative} }
end
end
context 'report relative true' do
# Using puppet_apply as a helper
it 'works idempotently with no errors' do
pp = <<-EOS
class{'collectd':
utils => true,
}
class{'collectd::plugin::load':
report_relative => true,
}
# Add one write plugin to keep logs quiet
class{'collectd::plugin::csv':}
# Create a socket to query
class{'collectd::plugin::unixsock':
socketfile => '/var/run/collectd-sock',
socketgroup => 'root',
}
EOS
# Run 3 times since the collectd_version
# fact is impossible until collectd is
# installed.
apply_manifest(pp, catch_failures: false)
apply_manifest(pp, catch_failures: true)
apply_manifest(pp, catch_changes: true)
# Wait to get some data
shell('sleep 10')
end

describe service('collectd') do
it { is_expected.to be_running }
end

describe command('collectdctl -s /var/run/collectd-sock listval') do
its(:exit_status) { is_expected.to eq 0 }
# https://github.com/voxpupuli/puppet-collectd/issues/901
if fact('collectd_version') == '5.9.0'
its(:stdout) { is_expected.not_to match %r{load/load-relative} }
its(:stdout) { is_expected.to match %r{load/load} }
else
its(:stdout) { is_expected.to match %r{load/load-relative} }
its(:stdout) { is_expected.not_to match %r{load/load} }
end
end
end
end
5 changes: 4 additions & 1 deletion templates/plugin/load.conf.erb
@@ -1,6 +1,9 @@
<% if scope.lookupvar('collectd::collectd_version_real') and (scope.function_versioncmp([scope.lookupvar('collectd::collectd_version_real'), '5.5']) >= 0) -%>
<Plugin load>
<% if scope.lookupvar('collectd::collectd_version_real') and (scope.function_versioncmp([scope.lookupvar('collectd::collectd_version_real'), '5.9']) == 0) -%>
<% if scope.lookupvar('collectd::collectd_version_real') and (scope.function_versioncmp([scope.lookupvar('collectd::collectd_version_real'), '5.9.0']) == 0) -%>
# ReportRelative is broken with collectd 5.9.0
# https://github.com/collectd/collectd/issues/3180
<% else -%>
ReportRelative <%= @report_relative %>
<% end -%>
</Plugin>
Expand Down

0 comments on commit 1096084

Please sign in to comment.