0bd148a5c2e518dd4e3d2fa9b74ed4ce835f539d
[mirror/dsa-puppet.git] / 3rdparty / modules / systemd / spec / classes / init_spec.rb
1 require 'spec_helper'
2
3 describe 'systemd' do
4   context 'supported operating systems' do
5     on_supported_os.each do |os, facts|
6       context "on #{os}" do
7         let(:facts) { facts }
8
9         it { is_expected.to compile.with_all_deps }
10         it { is_expected.to create_class('systemd') }
11         it { is_expected.to create_class('systemd::systemctl::daemon_reload') }
12         it { is_expected.to_not create_service('systemd-resolved') }
13         it { is_expected.to_not create_service('systemd-networkd') }
14         it { is_expected.to_not create_service('systemd-timesyncd') }
15
16         context 'when enabling resolved and networkd' do
17           let(:params) {{
18             :manage_resolved => true,
19             :manage_networkd => true
20           }}
21
22           it { is_expected.to create_service('systemd-resolved').with_ensure('running') }
23           it { is_expected.to create_service('systemd-resolved').with_enable(true) }
24           it { is_expected.to create_service('systemd-networkd').with_ensure('running') }
25           it { is_expected.to create_service('systemd-networkd').with_enable(true) }
26         end
27
28         context 'when enabling resolved with DNS values (string)' do
29           let(:params) {{
30             :manage_resolved => true,
31             :dns => '8.8.8.8 8.8.4.4',
32             :fallback_dns => '2001:4860:4860::8888 2001:4860:4860::8844',
33           }}
34
35           it { is_expected.to create_service('systemd-resolved').with_ensure('running') }
36           it { is_expected.to create_service('systemd-resolved').with_enable(true) }
37           it { is_expected.to contain_ini_setting('dns')}
38           it { is_expected.to contain_ini_setting('fallback_dns')}
39           it { is_expected.not_to contain_ini_setting('domains')}
40           it { is_expected.not_to contain_ini_setting('multicast_dns')}
41           it { is_expected.not_to contain_ini_setting('llmnr')}
42           it { is_expected.not_to contain_ini_setting('dnssec')}
43           it { is_expected.not_to contain_ini_setting('cache')}
44           it { is_expected.not_to contain_ini_setting('dns_stub_listener')}
45         end
46
47         context 'when enabling resolved with DNS values (array)' do
48           let(:params) {{
49             :manage_resolved => true,
50             :dns => %w(8.8.8.8 8.8.4.4),
51             :fallback_dns => %w(2001:4860:4860::8888 2001:4860:4860::8844),
52           }}
53
54           it { is_expected.to create_service('systemd-resolved').with_ensure('running') }
55           it { is_expected.to create_service('systemd-resolved').with_enable(true) }
56           it { is_expected.to contain_ini_setting('dns')}
57           it { is_expected.to contain_ini_setting('fallback_dns')}
58           it { is_expected.not_to contain_ini_setting('domains')}
59           it { is_expected.not_to contain_ini_setting('multicast_dns')}
60           it { is_expected.not_to contain_ini_setting('llmnr')}
61           it { is_expected.not_to contain_ini_setting('dnssec')}
62           it { is_expected.not_to contain_ini_setting('cache')}
63           it { is_expected.not_to contain_ini_setting('dns_stub_listener')}
64         end
65
66         context 'when enabling resolved with DNS values (full)' do
67           let(:params) {{
68             :manage_resolved => true,
69             :dns => %w(8.8.8.8 8.8.4.4),
70             :fallback_dns => %w(2001:4860:4860::8888 2001:4860:4860::8844),
71             :domains => %w(2001:4860:4860::8888 2001:4860:4860::8844),
72             :llmnr => true,
73             :multicast_dns => false,
74             :dnssec => false,
75             :cache => true,
76             :dns_stub_listener => 'udp',
77           }}
78
79           it { is_expected.to create_service('systemd-resolved').with_ensure('running') }
80           it { is_expected.to create_service('systemd-resolved').with_enable(true) }
81           it { is_expected.to contain_ini_setting('dns')}
82           it { is_expected.to contain_ini_setting('fallback_dns')}
83           it { is_expected.to contain_ini_setting('domains')}
84           it { is_expected.to contain_ini_setting('multicast_dns')}
85           it { is_expected.to contain_ini_setting('llmnr')}
86           it { is_expected.to contain_ini_setting('dnssec')}
87           it { is_expected.to contain_ini_setting('cache')}
88           it { is_expected.to contain_ini_setting('dns_stub_listener')}
89         end
90
91         context 'when enabling timesyncd' do
92           let(:params) {{
93             :manage_timesyncd => true
94           }}
95
96           it { is_expected.to create_service('systemd-timesyncd').with_ensure('running') }
97           it { is_expected.to create_service('systemd-timesyncd').with_enable(true) }
98           it { is_expected.not_to create_service('systemd-resolved').with_ensure('running') }
99           it { is_expected.not_to create_service('systemd-resolved').with_enable(true) }
100           it { is_expected.not_to create_service('systemd-networkd').with_ensure('running') }
101           it { is_expected.not_to create_service('systemd-networkd').with_enable(true) }
102         end
103
104         context 'when enabling timesyncd with NTP values (string)' do
105           let(:params) {{
106             :manage_timesyncd => true,
107             :ntp_server => '0.pool.ntp.org 1.pool.ntp.org',
108             :fallback_ntp_server => '2.pool.ntp.org 3.pool.ntp.org'
109           }}
110           it { is_expected.to compile.with_all_deps }
111           it { is_expected.to contain_ini_setting('ntp_server')}
112           it { is_expected.to contain_ini_setting('fallback_ntp_server')}
113         end
114
115         context 'when enabling timesyncd with NTP values (array)' do
116           let(:params) {{
117             :manage_timesyncd => true,
118             :ntp_server => %w(0.pool.ntp.org 1.pool.ntp.org),
119             :fallback_ntp_server => %w(2.pool.ntp.org 3.pool.ntp.org)
120           }}
121           it { is_expected.to compile.with_all_deps }
122           it { is_expected.to contain_ini_setting('ntp_server')}
123           it { is_expected.to contain_ini_setting('fallback_ntp_server')}
124         end
125
126         context 'when passing service limits' do
127           let(:params) {{
128             :service_limits => {'openstack-nova-compute.service' => {'limits' => {'LimitNOFILE' => 32768}}}
129           }}
130
131           it { is_expected.to compile.with_all_deps }
132           it { is_expected.to contain_systemd__service_limits('openstack-nova-compute.service').with_limits({'LimitNOFILE' => 32768}) }
133         end
134
135         context 'when managing Accounting options' do
136           let :params do
137             {
138               manage_accounting: true,
139             }
140           end
141
142           it { is_expected.to contain_class('systemd::system')}
143
144           case facts[:os]['family']
145           when 'Archlinux'
146             accounting = ['DefaultCPUAccounting', 'DefaultIOAccounting', 'DefaultIPAccounting', 'DefaultBlockIOAccounting', 'DefaultMemoryAccounting', 'DefaultTasksAccounting']
147           when 'Debian'
148             accounting = ['DefaultCPUAccounting', 'DefaultBlockIOAccounting', 'DefaultMemoryAccounting']
149           when 'RedHat'
150             accounting = ['DefaultCPUAccounting', 'DefaultBlockIOAccounting', 'DefaultMemoryAccounting', 'DefaultTasksAccounting']
151           end
152           accounting.each do |account|
153             it { is_expected.to contain_ini_setting(account)}
154           end
155           it { is_expected.to compile.with_all_deps }
156         end
157       end
158     end
159   end
160 end