| require 'spec_helper' |
| |
| describe 'datadog_agent' do |
| context 'unsupported operating system' do |
| describe 'datadog_agent class without any parameters on Solaris/Nexenta' do |
| let(:facts) do |
| { |
| osfamily: 'Solaris', |
| operatingsystem: 'Nexenta' |
| } |
| end |
| |
| it do |
| expect { |
| should contain_package('module') |
| }.to raise_error(Puppet::Error, /Unsupported operatingsystem: Nexenta/) |
| end |
| end |
| end |
| |
| # Test all supported OSes |
| context 'all supported operating systems' do |
| ALL_OS.each do |operatingsystem| |
| describe "datadog_agent class common actions on #{operatingsystem}" do |
| let(:params) { { puppet_run_reports: true, |
| agent5_enable: true, |
| } } |
| let(:facts) do |
| { |
| operatingsystem: operatingsystem, |
| osfamily: DEBIAN_OS.include?(operatingsystem) ? 'debian' : 'redhat' |
| } |
| end |
| |
| it { should compile.with_all_deps } |
| |
| it { should contain_class('datadog_agent') } |
| |
| describe 'datadog_agent imports the default params' do |
| it { should contain_class('datadog_agent::params') } |
| end |
| |
| it { should contain_file('/etc/datadog-agent') } |
| it { should contain_file('/etc/dd-agent') } |
| it { should contain_concat('/etc/dd-agent/datadog.conf') } |
| it { should contain_file('/etc/dd-agent/conf.d').with_ensure('directory') } |
| |
| it { should contain_class('datadog_agent::reports') } |
| |
| describe 'parameter check' do |
| context 'with defaults' do |
| context 'for proxy' do |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^dd_url: https:\/\/app.datadoghq.com\n/, |
| )} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^# proxy_host:\n/, |
| )} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^# proxy_port:\n/, |
| )} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^# proxy_user:\n/, |
| )} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^# proxy_password:\n/, |
| )} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^# skip_ssl_validation: no\n/, |
| )} |
| end |
| |
| context 'for general' do |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^api_key: your_API_key\n/, |
| )} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^# hostname:\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^non_local_traffic: false\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^collect_ec2_tags: false\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^collect_instance_metadata: true\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /# recent_point_threshold: 30\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# listen_port: 17123\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# graphite_listen_port: 17124\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# additional_checksd: \/etc\/dd-agent\/checks.d\/\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^use_curl_http_client: false\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# device_blacklist_re: .*\\\/dev\\\/mapper\\\/lxc-box.*\n/, |
| )} |
| end |
| |
| context 'for pup' do |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^use_pup: no\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# pup_port: 17125\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# pup_interface: localhost\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# pup_url: http:\/\/localhost:17125\n/, |
| )} |
| end |
| |
| context 'for dogstatsd' do |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# bind_host: localhost\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^use_dogstatsd: yes\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^dogstatsd_port: 8125\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# dogstatsd_target: http:\/\/localhost:17123\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# dogstatsd_interval: 10\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^dogstatsd_normalize: yes\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# statsd_forward_host: address_of_own_statsd_server\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# statsd_forward_port: 8125\n/, |
| )} |
| end |
| |
| context 'for ganglia' do |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# ganglia_host: localhost\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# ganglia_port: 8651\n/, |
| )} |
| end |
| |
| context 'for logging' do |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^log_level: INFO\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^log_to_syslog: yes\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# collector_log_file: \/var\/log\/datadog\/collector.log\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# forwarder_log_file: \/var\/log\/datadog\/forwarder.log\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# dogstatsd_log_file: \/var\/log\/datadog\/dogstatsd.log\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| #'content' => /^# pup_log_file: \/var\/log\/datadog\/pup.log\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# syslog_host:\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^# syslog_port:\n/, |
| )} |
| end |
| |
| context 'for service_discovery' do |
| it { should contain_concat__fragment('datadog footer').without( |
| 'content' => /^service_discovery_backend:\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').without( |
| 'content' => /^sd_config_backend:\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').without( |
| 'content' => /^sd_backend_host:\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').without( |
| 'content' => /^sd_backend_port:\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').without( |
| 'content' => /^sd_template_dir:\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').without( |
| 'content' => /^consul_token:\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').without( |
| 'content' => /^# sd_jmx_enable:\n/, |
| )} |
| end |
| |
| context 'for APM' do |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^apm_enabled: false\n/, |
| )} |
| end |
| |
| end |
| |
| context 'with user provided paramaters' do |
| context 'with a custom dd_url' do |
| let(:params) {{ :dd_url => 'https://notaurl.datadoghq.com', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^dd_url: https:\/\/notaurl.datadoghq.com\n/, |
| )} |
| end |
| context 'with a custom proxy_host' do |
| let(:params) {{ :proxy_host => 'localhost', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^proxy_host: localhost\n/, |
| )} |
| end |
| context 'with a custom proxy_port' do |
| let(:params) {{ :proxy_port => '1234', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^proxy_port: 1234\n/, |
| )} |
| end |
| context 'with a custom proxy_port, specified as an integer' do |
| let(:params) {{ :proxy_port => 1234, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^proxy_port: 1234\n/, |
| )} |
| end |
| context 'with a custom proxy_user' do |
| let(:params) {{ :proxy_user => 'notauser', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^proxy_user: notauser\n/, |
| )} |
| end |
| context 'with a custom api_key' do |
| let(:params) {{ :api_key => 'notakey', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^api_key: notakey\n/, |
| )} |
| end |
| context 'with a custom hostname' do |
| let(:params) {{ :host => 'notahost', |
| :agent5_enable => true, |
| }} |
| |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^hostname: notahost\n/, |
| )} |
| end |
| context 'with non_local_traffic set to true' do |
| let(:params) {{ :non_local_traffic => true, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^non_local_traffic: true\n/, |
| )} |
| end |
| #Should expand testing to cover changes to the case upcase |
| context 'with log level set to critical' do |
| let(:params) {{ :log_level => 'critical', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^log_level: CRITICAL\n/, |
| )} |
| end |
| context 'with a custom hostname' do |
| let(:params) {{ :host => 'notahost', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^hostname: notahost\n/, |
| )} |
| end |
| context 'with log_to_syslog set to false' do |
| let(:params) {{ :log_to_syslog => false, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^log_to_syslog: no\n/, |
| )} |
| end |
| context 'with skip_ssl_validation set to true' do |
| let(:params) {{ :skip_ssl_validation => true, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog header').with( |
| 'content' => /^skip_ssl_validation: true\n/, |
| )} |
| end |
| context 'with collect_ec2_tags set to yes' do |
| let(:params) {{ :collect_ec2_tags => true, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^collect_ec2_tags: true\n/, |
| )} |
| end |
| context 'with collect_instance_metadata set to no' do |
| let(:params) {{ :collect_instance_metadata => false, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^collect_instance_metadata: false\n/, |
| )} |
| end |
| context 'with recent_point_threshold set to 60' do |
| let(:params) {{ :recent_point_threshold => '60', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^recent_point_threshold: 60\n/, |
| )} |
| end |
| context 'with a custom port set to 17125' do |
| let(:params) {{ :listen_port => '17125', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^listen_port: 17125\n/, |
| )} |
| end |
| context 'with a custom port set to 17125, specified as an integer' do |
| let(:params) {{ :listen_port => 17125, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^listen_port: 17125\n/, |
| )} |
| end |
| context 'listening for graphite data on port 17124' do |
| let(:params) {{ :graphite_listen_port => '17124', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^graphite_listen_port: 17124\n/, |
| )} |
| end |
| context 'listening for graphite data on port 17124, port specified as an integer' do |
| let(:params) {{ :graphite_listen_port => 17124, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^graphite_listen_port: 17124\n/, |
| )} |
| end |
| context 'with configuration for a custom checks.d' do |
| let(:params) {{ :additional_checksd => '/etc/dd-agent/checks_custom.d', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^additional_checksd: \/etc\/dd-agent\/checks_custom.d\n/, |
| )} |
| end |
| context 'with configuration for a custom checks.d' do |
| let(:params) {{ :additional_checksd => '/etc/dd-agent/checks_custom.d', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^additional_checksd: \/etc\/dd-agent\/checks_custom.d\n/, |
| )} |
| end |
| context 'with configuration for a custom checks.d' do |
| let(:params) {{ :additional_checksd => '/etc/dd-agent/checks_custom.d', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^additional_checksd: \/etc\/dd-agent\/checks_custom.d\n/, |
| )} |
| end |
| context 'with using the Tornado HTTP client' do |
| let(:params) {{ :use_curl_http_client => true, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^use_curl_http_client: true\n/, |
| )} |
| end |
| context 'with a custom bind_host' do |
| let(:params) {{ :bind_host => 'test', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^bind_host: test\n/, |
| )} |
| end |
| context 'with pup enabled' do |
| let(:params) {{ :use_pup => true, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^use_pup: yes\n/, |
| )} |
| end |
| context 'with a custom pup_port' do |
| let(:params) {{ :pup_port => '17126', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^pup_port: 17126\n/, |
| )} |
| end |
| context 'with a custom pup_port, specified as an integer' do |
| let(:params) {{ :pup_port => 17126, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^pup_port: 17126\n/, |
| )} |
| end |
| context 'with a custom pup_interface' do |
| let(:params) {{ :pup_interface => 'notalocalhost', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^pup_interface: notalocalhost\n/, |
| )} |
| end |
| context 'with a custom pup_url' do |
| let(:params) {{ :pup_url => 'http://localhost:17126', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^pup_url: http:\/\/localhost:17126\n/, |
| )} |
| end |
| context 'with use_dogstatsd set to no' do |
| let(:params) {{ :use_dogstatsd => false, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^use_dogstatsd: no\n/, |
| )} |
| end |
| context 'with use_dogstatsd set to yes' do |
| let(:params) {{ :use_dogstatsd => true, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^use_dogstatsd: yes\n/, |
| )} |
| end |
| context 'with dogstatsd_port set to 8126 - must be specified as an integer!' do |
| let(:params) {{ :dogstatsd_port => 8126, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^dogstatsd_port: 8126\n/, |
| )} |
| end |
| context 'with dogstatsd_port set to 8126' do |
| let(:params) {{ :dogstatsd_port => 8126, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^dogstatsd_port: 8126\n/, |
| )} |
| end |
| context 'with dogstatsd_target set to localhost:17124' do |
| let(:params) {{ :dogstatsd_target => 'http://localhost:17124', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^dogstatsd_target: http:\/\/localhost:17124\n/, |
| )} |
| end |
| context 'with dogstatsd_interval set to 5' do |
| let(:params) {{ :dogstatsd_interval => '5', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^dogstatsd_interval: 5\n/, |
| )} |
| end |
| context 'with dogstatsd_interval set to 5' do |
| let(:params) {{ :dogstatsd_interval => '5', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^dogstatsd_interval: 5\n/, |
| )} |
| end |
| context 'with dogstatsd_normalize set to false' do |
| let(:params) {{ :dogstatsd_normalize => false, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^dogstatsd_normalize: no\n/, |
| )} |
| end |
| context 'with statsd_forward_host set to localhost:3958' do |
| let(:params) {{ :statsd_forward_host => 'localhost:3958', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^statsd_forward_host: localhost:3958\n/, |
| )} |
| end |
| context 'with statsd_forward_port set to 8126' do |
| let(:params) {{ :statsd_forward_port => '8126', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^statsd_forward_port: 8126\n/, |
| )} |
| end |
| context 'with statsd_forward_port set to 8126, specified as an integer' do |
| let(:params) {{ :statsd_forward_port => 8126, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^statsd_forward_port: 8126\n/, |
| )} |
| end |
| context 'with device_blacklist_re set to test' do |
| let(:params) {{ :device_blacklist_re => 'test', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^device_blacklist_re: test\n/, |
| )} |
| end |
| context 'with device_blacklist_re set to test' do |
| let(:params) {{ :device_blacklist_re => 'test', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^device_blacklist_re: test\n/, |
| )} |
| end |
| context 'with ganglia_host set to localhost and ganglia_port set to 12345' do |
| let(:params) {{ :ganglia_host => 'testhost', |
| :ganglia_port => '12345', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^ganglia_port: 12345\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^ganglia_host: testhost\n/, |
| )} |
| end |
| context 'with ganglia_host set to localhost and ganglia_port set to 12345, port specified as an integer' do |
| let(:params) {{ :ganglia_host => 'testhost', |
| :ganglia_port => 12345, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^ganglia_port: 12345\n/, |
| )} |
| end |
| context 'with dogstreams set to /path/to/log1:/path/to/parser' do |
| let(:params) {{ :dogstreams => ['/path/to/log1:/path/to/parser'], |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^dogstreams: \/path\/to\/log1:\/path\/to\/parser\n/, |
| )} |
| end |
| context 'with custom_emitters set to /test/emitter' do |
| let(:params) {{ :custom_emitters => '/test/emitter/', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^custom_emitters: \/test\/emitter\/\n/, |
| )} |
| end |
| context 'with custom_emitters set to /test/emitter' do |
| let(:params) {{ :custom_emitters => '/test/emitter/', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^custom_emitters: \/test\/emitter\/\n/, |
| )} |
| end |
| context 'with collector_log_file set to /test/log' do |
| let(:params) {{ :collector_log_file => '/test/log', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^collector_log_file: \/test\/log\n/, |
| )} |
| end |
| context 'with forwarder_log_file set to /test/log' do |
| let(:params) {{ :forwarder_log_file => '/test/log', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^forwarder_log_file: \/test\/log\n/, |
| )} |
| end |
| context 'with forwarder_log_file set to /test/log' do |
| let(:params) {{ :forwarder_log_file => '/test/log', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^forwarder_log_file: \/test\/log\n/, |
| )} |
| end |
| context 'with dogstatsd_log_file set to /test/log' do |
| let(:params) {{ :dogstatsd_log_file => '/test/log', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^dogstatsd_log_file: \/test\/log\n/, |
| )} |
| end |
| context 'with pup_log_file set to /test/log' do |
| let(:params) {{ :pup_log_file => '/test/log', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^pup_log_file: \/test\/log\n/, |
| )} |
| end |
| context 'with syslog location set to localhost' do |
| let(:params) {{ :syslog_host => 'localhost', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^syslog_host: localhost\n/, |
| )} |
| end |
| context 'with syslog port set to 8080' do |
| let(:params) {{ :syslog_port => '8080', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^syslog_port: 8080\n/, |
| )} |
| end |
| context 'with syslog port set to 8080, specified as an integer' do |
| let(:params) {{ :syslog_port => 8080, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^syslog_port: 8080\n/, |
| )} |
| end |
| context 'with apm_enabled set to true' do |
| let(:params) {{ :apm_enabled => true, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^apm_enabled: true\n/, |
| )} |
| end |
| context 'with apm_enabled set to true and env specified' do |
| let(:params) {{ :apm_enabled => true, |
| :apm_env => 'foo', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^apm_enabled: true\n/, |
| )} |
| it { should contain_concat__fragment('datadog apm footer').with( |
| 'content' => /^\[trace.agent\]\n/, |
| )} |
| it { should contain_concat__fragment('datadog apm footer').with( |
| 'content' => /^env: foo\n/, |
| )} |
| it { should contain_concat__fragment('datadog apm footer').with( |
| 'order' => '07', |
| )} |
| end |
| context 'with service_discovery enabled' do |
| let(:params) {{ :service_discovery_backend => 'docker', |
| :sd_config_backend => 'etcd', |
| :sd_backend_host => 'localhost', |
| :sd_backend_port => '8080', |
| :sd_jmx_enable => true, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^service_discovery_backend: docker\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^sd_config_backend: etcd\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^sd_backend_host: localhost\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^sd_backend_port: 8080\n/, |
| )} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^sd_jmx_enable: true\n/, |
| )} |
| end |
| context 'with extra_template enabled' do |
| let(:params) {{ :extra_template => 'custom_datadog/extra_template_test.erb', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog extra_template footer').with( |
| 'order' => '06', |
| )} |
| it { should contain_concat__fragment('datadog extra_template footer').with( |
| 'content' => /^# extra template is here\n/, |
| )} |
| it { should_not contain_concat__fragment('datadog apm footer').with( |
| 'order' => '07', |
| )} |
| end |
| context 'with APM enabled' do |
| let(:params) {{ |
| :apm_enabled => true, |
| :apm_env => 'foo', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog apm footer').with( |
| 'order' => '07', |
| )} |
| end |
| context 'with APM enabled but no APM env' do |
| let(:params) {{ |
| :apm_enabled => true, |
| :agent5_enable => true, |
| }} |
| it { should_not contain_concat__fragment('datadog apm footer').with( |
| 'order' => '07', |
| )} |
| end |
| context 'with extra_template and APM enabled' do |
| let(:params) {{ |
| :extra_template => 'custom_datadog/extra_template_test.erb', |
| :apm_enabled => true, |
| :apm_env => 'foo', |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog extra_template footer').with( |
| 'order' => '06', |
| )} |
| it { should contain_concat__fragment('datadog extra_template footer').with( |
| 'content' => /^# extra template is here\n/, |
| )} |
| it { should contain_concat__fragment('datadog apm footer').with( |
| 'order' => '07', |
| )} |
| end |
| context 'with process_agent enabled' do |
| let(:params) {{ :process_enabled => true, |
| :agent5_enable => true, |
| }} |
| it { should contain_concat__fragment('datadog footer').with( |
| 'content' => /^process_agent_enabled: true\n/, |
| )} |
| end |
| |
| end |
| end |
| |
| if DEBIAN_OS.include?(operatingsystem) |
| it { should contain_class('datadog_agent::ubuntu::agent5') } |
| elsif REDHAT_OS.include?(operatingsystem) |
| it { should contain_class('datadog_agent::redhat::agent5') } |
| end |
| end |
| |
| describe "datadog_agent 6 class common actions on #{operatingsystem}" do |
| let(:params) { { puppet_run_reports: true } } |
| let(:facts) do |
| { |
| operatingsystem: operatingsystem, |
| osfamily: DEBIAN_OS.include?(operatingsystem) ? 'debian' : 'redhat' |
| } |
| end |
| |
| it { should compile.with_all_deps } |
| |
| it { should contain_class('datadog_agent') } |
| |
| describe 'datadog_agent imports the default params' do |
| it { should contain_class('datadog_agent::params') } |
| end |
| |
| it { should contain_file('/etc/datadog-agent') } |
| it { should_not contain_file('/etc/dd-agent') } |
| it { should_not contain_concat('/etc/dd-agent/datadog.conf') } |
| it { should contain_file('/etc/datadog-agent/datadog.yaml') } |
| it { should_not contain_file('/etc/dd-agent/conf.d').with_ensure('directory') } |
| it { should contain_file('/etc/datadog-agent/conf.d').with_ensure('directory') } |
| |
| it { should contain_class('datadog_agent::reports') } |
| |
| describe 'agent6 parameter check' do |
| context 'with defaults' do |
| context 'for basic beta settings' do |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^api_key: your_API_key\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^conf_path: \"{0,1}\/etc\/datadog-agent\/conf.d\"{0,1}\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^cmd_port: \"{0,1}5001\"{0,1}\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^dd_url: \"{0,1}https:\/\/app.datadoghq.com\"{0,1}\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^enable_metadata_collection: true\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^dogstatsd_port: \"{0,1}8125\"{0,1}\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^log_file: \"{0,1}\/var\/log\/datadog\/agent.log\"{0,1}\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^log_level: info\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^apm_config:\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ apm_enabled: false\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^process_config:\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ enabled: disabled\n/, |
| )} |
| end |
| end |
| |
| context 'with apm_extra_config' do |
| context 'with extra_options and APM enabled' do |
| let(:params) {{ |
| :apm_enabled => true, |
| :apm_env => 'foo', |
| :agent6_extra_options => { |
| 'apm_config' => { |
| 'foo' => 'bar', |
| 'bar' => 'haz', |
| } |
| } |
| }} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^apm_config:\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ apm_enabled: true\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ foo: bar\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ bar: haz\n/, |
| )} |
| end |
| context 'with extra_options and Process enabled' do |
| let(:params) {{ |
| :apm_enabled => false, |
| :process_enabled => true, |
| :agent6_extra_options => { |
| 'process_config' => { |
| 'foo' => 'bar', |
| 'bar' => 'haz', |
| } |
| } |
| }} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^apm_config:\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ apm_enabled: false\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^process_config:\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ enabled: 'true'\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ foo: bar\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ bar: haz\n/, |
| )} |
| end |
| context 'with extra_options and process options overriden' do |
| let(:params) {{ |
| :process_enabled => true, |
| :agent6_extra_options => { |
| 'process_config' => { |
| 'enabled' => 'disabled', |
| 'foo' => 'bar', |
| 'bar' => 'haz', |
| } |
| } |
| }} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^process_config:\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ enabled: disabled\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ foo: bar\n/, |
| )} |
| it { should contain_file('/etc/datadog-agent/datadog.yaml').with( |
| 'content' => /^\ \ bar: haz\n/, |
| )} |
| end |
| end |
| end |
| end |
| end |
| end |
| |
| context "with facts to tags set" do |
| describe "ensure facts_array outputs a list of tags" do |
| let(:params) { { puppet_run_reports: true, facts_to_tags: ['osfamily', 'facts_array']} } |
| let(:facts) do |
| { |
| operatingsystem: 'CentOS', |
| osfamily: 'redhat', |
| facts_array: ['one', 'two', 'three'] |
| } |
| |
| it { should contain_concat('/etc/dd-agent/datadog.conf') } |
| it { should contain_concat__fragment('datadog tags').with(/tags: osfamily:redhat, facts_array:one, facts_array:two, facts_array:three/) } |
| end |
| end |
| end |
| end |