Add systemd module, required by rabbitmq
[mirror/dsa-puppet.git] / 3rdparty / modules / systemd / spec / classes / init_spec.rb
diff --git a/3rdparty/modules/systemd/spec/classes/init_spec.rb b/3rdparty/modules/systemd/spec/classes/init_spec.rb
new file mode 100644 (file)
index 0000000..0bd148a
--- /dev/null
@@ -0,0 +1,160 @@
+require 'spec_helper'
+
+describe 'systemd' do
+  context 'supported operating systems' do
+    on_supported_os.each do |os, facts|
+      context "on #{os}" do
+        let(:facts) { facts }
+
+        it { is_expected.to compile.with_all_deps }
+        it { is_expected.to create_class('systemd') }
+        it { is_expected.to create_class('systemd::systemctl::daemon_reload') }
+        it { is_expected.to_not create_service('systemd-resolved') }
+        it { is_expected.to_not create_service('systemd-networkd') }
+        it { is_expected.to_not create_service('systemd-timesyncd') }
+
+        context 'when enabling resolved and networkd' do
+          let(:params) {{
+            :manage_resolved => true,
+            :manage_networkd => true
+          }}
+
+          it { is_expected.to create_service('systemd-resolved').with_ensure('running') }
+          it { is_expected.to create_service('systemd-resolved').with_enable(true) }
+          it { is_expected.to create_service('systemd-networkd').with_ensure('running') }
+          it { is_expected.to create_service('systemd-networkd').with_enable(true) }
+        end
+
+        context 'when enabling resolved with DNS values (string)' do
+          let(:params) {{
+            :manage_resolved => true,
+            :dns => '8.8.8.8 8.8.4.4',
+            :fallback_dns => '2001:4860:4860::8888 2001:4860:4860::8844',
+          }}
+
+          it { is_expected.to create_service('systemd-resolved').with_ensure('running') }
+          it { is_expected.to create_service('systemd-resolved').with_enable(true) }
+          it { is_expected.to contain_ini_setting('dns')}
+          it { is_expected.to contain_ini_setting('fallback_dns')}
+          it { is_expected.not_to contain_ini_setting('domains')}
+          it { is_expected.not_to contain_ini_setting('multicast_dns')}
+          it { is_expected.not_to contain_ini_setting('llmnr')}
+          it { is_expected.not_to contain_ini_setting('dnssec')}
+          it { is_expected.not_to contain_ini_setting('cache')}
+          it { is_expected.not_to contain_ini_setting('dns_stub_listener')}
+        end
+
+        context 'when enabling resolved with DNS values (array)' do
+          let(:params) {{
+            :manage_resolved => true,
+            :dns => %w(8.8.8.8 8.8.4.4),
+            :fallback_dns => %w(2001:4860:4860::8888 2001:4860:4860::8844),
+          }}
+
+          it { is_expected.to create_service('systemd-resolved').with_ensure('running') }
+          it { is_expected.to create_service('systemd-resolved').with_enable(true) }
+          it { is_expected.to contain_ini_setting('dns')}
+          it { is_expected.to contain_ini_setting('fallback_dns')}
+          it { is_expected.not_to contain_ini_setting('domains')}
+          it { is_expected.not_to contain_ini_setting('multicast_dns')}
+          it { is_expected.not_to contain_ini_setting('llmnr')}
+          it { is_expected.not_to contain_ini_setting('dnssec')}
+          it { is_expected.not_to contain_ini_setting('cache')}
+          it { is_expected.not_to contain_ini_setting('dns_stub_listener')}
+        end
+
+        context 'when enabling resolved with DNS values (full)' do
+          let(:params) {{
+            :manage_resolved => true,
+            :dns => %w(8.8.8.8 8.8.4.4),
+            :fallback_dns => %w(2001:4860:4860::8888 2001:4860:4860::8844),
+            :domains => %w(2001:4860:4860::8888 2001:4860:4860::8844),
+            :llmnr => true,
+            :multicast_dns => false,
+            :dnssec => false,
+            :cache => true,
+            :dns_stub_listener => 'udp',
+          }}
+
+          it { is_expected.to create_service('systemd-resolved').with_ensure('running') }
+          it { is_expected.to create_service('systemd-resolved').with_enable(true) }
+          it { is_expected.to contain_ini_setting('dns')}
+          it { is_expected.to contain_ini_setting('fallback_dns')}
+          it { is_expected.to contain_ini_setting('domains')}
+          it { is_expected.to contain_ini_setting('multicast_dns')}
+          it { is_expected.to contain_ini_setting('llmnr')}
+          it { is_expected.to contain_ini_setting('dnssec')}
+          it { is_expected.to contain_ini_setting('cache')}
+          it { is_expected.to contain_ini_setting('dns_stub_listener')}
+        end
+
+        context 'when enabling timesyncd' do
+          let(:params) {{
+            :manage_timesyncd => true
+          }}
+
+          it { is_expected.to create_service('systemd-timesyncd').with_ensure('running') }
+          it { is_expected.to create_service('systemd-timesyncd').with_enable(true) }
+          it { is_expected.not_to create_service('systemd-resolved').with_ensure('running') }
+          it { is_expected.not_to create_service('systemd-resolved').with_enable(true) }
+          it { is_expected.not_to create_service('systemd-networkd').with_ensure('running') }
+          it { is_expected.not_to create_service('systemd-networkd').with_enable(true) }
+        end
+
+        context 'when enabling timesyncd with NTP values (string)' do
+          let(:params) {{
+            :manage_timesyncd => true,
+            :ntp_server => '0.pool.ntp.org 1.pool.ntp.org',
+            :fallback_ntp_server => '2.pool.ntp.org 3.pool.ntp.org'
+          }}
+          it { is_expected.to compile.with_all_deps }
+          it { is_expected.to contain_ini_setting('ntp_server')}
+          it { is_expected.to contain_ini_setting('fallback_ntp_server')}
+        end
+
+        context 'when enabling timesyncd with NTP values (array)' do
+          let(:params) {{
+            :manage_timesyncd => true,
+            :ntp_server => %w(0.pool.ntp.org 1.pool.ntp.org),
+            :fallback_ntp_server => %w(2.pool.ntp.org 3.pool.ntp.org)
+          }}
+          it { is_expected.to compile.with_all_deps }
+          it { is_expected.to contain_ini_setting('ntp_server')}
+          it { is_expected.to contain_ini_setting('fallback_ntp_server')}
+        end
+
+        context 'when passing service limits' do
+          let(:params) {{
+            :service_limits => {'openstack-nova-compute.service' => {'limits' => {'LimitNOFILE' => 32768}}}
+          }}
+
+          it { is_expected.to compile.with_all_deps }
+          it { is_expected.to contain_systemd__service_limits('openstack-nova-compute.service').with_limits({'LimitNOFILE' => 32768}) }
+        end
+
+        context 'when managing Accounting options' do
+          let :params do
+            {
+              manage_accounting: true,
+            }
+          end
+
+          it { is_expected.to contain_class('systemd::system')}
+
+          case facts[:os]['family']
+          when 'Archlinux'
+            accounting = ['DefaultCPUAccounting', 'DefaultIOAccounting', 'DefaultIPAccounting', 'DefaultBlockIOAccounting', 'DefaultMemoryAccounting', 'DefaultTasksAccounting']
+          when 'Debian'
+            accounting = ['DefaultCPUAccounting', 'DefaultBlockIOAccounting', 'DefaultMemoryAccounting']
+          when 'RedHat'
+            accounting = ['DefaultCPUAccounting', 'DefaultBlockIOAccounting', 'DefaultMemoryAccounting', 'DefaultTasksAccounting']
+          end
+          accounting.each do |account|
+            it { is_expected.to contain_ini_setting(account)}
+          end
+          it { is_expected.to compile.with_all_deps }
+        end
+      end
+    end
+  end
+end