spec/classes/datadog_agent_integrations_jmx_spec.rb (78 lines of code) (raw):

require 'spec_helper' describe 'datadog_agent::integrations::jmx' do context 'supported agents - v5 and v6' do agents = { '5' => true, '6' => false } agents.each do |_, enabled| let(:pre_condition) { "class {'::datadog_agent': agent5_enable => #{enabled}}" } let(:facts) {{ operatingsystem: 'Ubuntu', }} if enabled let(:conf_dir) { '/etc/dd-agent/conf.d' } else let(:conf_dir) { '/etc/datadog-agent/conf.d' } end let(:dd_user) { 'dd-agent' } let(:dd_group) { 'root' } let(:dd_package) { 'datadog-agent' } let(:dd_service) { 'datadog-agent' } let(:conf_file) { "#{conf_dir}/jmx.yaml" } it { should compile.with_all_deps } it { should contain_file(conf_file).with( owner: dd_user, group: dd_group, mode: '0600', )} it { should contain_file(conf_file).that_requires("Package[#{dd_package}]") } it { should contain_file(conf_file).that_notifies("Service[#{dd_service}]") } context 'with default parameters' do it { should contain_file(conf_file).with_content(%r{init_config: \{\}}) } it { should contain_file(conf_file).with_content(%r{instances: \[\]}) } end context 'with parameters set' do let(:params) do { 'init_config' => { 'custom_jar_paths' => [ '/path/to/custom/jarfile.jar', '/path/to/another/custom/jarfile2.jar' ] }, 'instances' => [{ 'host' => 'jmx1', 'port' => '867', 'user' => 'userfoo', 'password' => 'passbar', 'jmx_url' => 'service:jmx:rmi:///jndi/rmi://myhost.host:9999/custompath', 'tools_jar_path' => '/usr/lib/jvm/java-7-openjdk-amd64/lib/tools.jar', 'java_options' => '-Xmx200m -Xms50m', 'java_bin_path' => '/usr/java/jdk1.7.0_101/bin/java', 'trust_store_path' => '/var/lib/jmx/trust_store_path', 'trust_store_password' => 'hunter2', 'tags' => { 'foo' => 'bar', 'baz' => 'bat' }, 'conf' => [{ 'include' => { 'domain' => 'my_domain' } }] }] } end it { should contain_file(conf_file).with_content(%r{- ["']?/path/to/custom/jarfile.jar["']?}) } it { should contain_file(conf_file).with_content(%r{- ["']?/path/to/another/custom/jarfile2.jar["']?}) } it { should contain_file(conf_file).with_content(%r{host: jmx1}) } # Stringification of integers. # Puppet treats everything as a string, and then there seems to be # quoting differences between YAML export deps for Puppet 3.x and Puppet 4.x. # YAML defaults to string representation, but supports other types, so ends # up quoting integers from Puppet to explicitly mark out they're strings. it { should contain_file(conf_file).with_content(%r{port: ["']?867["']?}) } it { should contain_file(conf_file).with_content(%r{jmx_url: ["']?service:jmx:rmi:///jndi/rmi://myhost.host:9999/custompath["']?}) } it { should contain_file(conf_file).with_content(%r{user: userfoo}) } it { should contain_file(conf_file).with_content(%r{password: passbar}) } it { should contain_file(conf_file).with_content(%r{java_bin_path: ["']?/usr/java/jdk1.7.0_101/bin/java["']?}) } it { should contain_file(conf_file).with_content(%r{java_options: ["']?-Xmx200m -Xms50m["']?}) } it { should contain_file(conf_file).with_content(%r{trust_store_path: ["']?/var/lib/jmx/trust_store_path["']?}) } it { should contain_file(conf_file).with_content(%r{trust_store_password: hunter2}) } it { should contain_file(conf_file).with_content(%r{tags:\s+foo: bar\s+baz: bat}) } it { should contain_file(conf_file).with_content(%r{domain: my_domain}) } end end end end