spec/chef/cookbooks/package/recipes/runit_systemd_spec.rb (76 lines of code) (raw):
require 'chef_helper'
RSpec.describe 'package::runit_systemd' do
let(:chef_run) { ChefSpec::SoloRunner.converge('gitlab::config', 'package::runit_systemd') }
before do
allow(Gitlab).to receive(:[]).and_call_original
end
describe 'setting TasksMax value' do
context 'when systemd version < 227' do
before do
allow(SystemdHelper).to receive(:systemd_version).and_return(200)
end
it 'does not include TasksMax setting in unit file' do
expect(chef_run).to render_file('/usr/lib/systemd/system/gitlab-runsvdir.service')
expect(chef_run).not_to render_file('/usr/lib/systemd/system/gitlab-runsvdir.service').with_content('TasksMax=4915')
end
end
context 'when systemd version >= 227' do
before do
allow(SystemdHelper).to receive(:systemd_version).and_return(235)
end
it 'include TasksMax setting in unit file' do
expect(chef_run).to render_file('/usr/lib/systemd/system/gitlab-runsvdir.service').with_content('TasksMax=4915')
end
end
context 'with user provided value for TasksMax' do
before do
stub_gitlab_rb(
package: { systemd_tasks_max: 10000 }
)
allow(SystemdHelper).to receive(:systemd_version).and_return(235)
end
it 'sets correct value for TasksMax in unit file' do
expect(chef_run).to render_file('/usr/lib/systemd/system/gitlab-runsvdir.service').with_content('TasksMax=10000')
end
end
end
describe 'setting WantedBy and After settings for unit file' do
context 'by default' do
it 'uses "multi-user.target" for WantedBy' do
expect(chef_run).to render_file('/usr/lib/systemd/system/gitlab-runsvdir.service').with_content('WantedBy=multi-user.target')
end
it 'uses "multi-user.target" for WantedBy' do
expect(chef_run).to render_file('/usr/lib/systemd/system/gitlab-runsvdir.service').with_content('After=multi-user.target')
end
end
context 'when WantedBy is specified' do
before do
stub_gitlab_rb(
package: { systemd_wanted_by: 'basic.target' }
)
end
it 'uses specified value for WantedBy' do
expect(chef_run).to render_file('/usr/lib/systemd/system/gitlab-runsvdir.service').with_content('WantedBy=basic.target')
end
it 'uses value specified for WantedBy for After also' do
expect(chef_run).to render_file('/usr/lib/systemd/system/gitlab-runsvdir.service').with_content('After=basic.target')
end
end
context 'when both WantedBy and After are specified' do
before do
stub_gitlab_rb(
package: {
systemd_wanted_by: 'foo',
systemd_after: 'bar'
}
)
end
it 'uses specified value for WantedBy' do
expect(chef_run).to render_file('/usr/lib/systemd/system/gitlab-runsvdir.service').with_content('WantedBy=foo')
end
it 'uses specified value for After, not value given for WantedBy' do
expect(chef_run).to render_file('/usr/lib/systemd/system/gitlab-runsvdir.service').with_content('After=bar')
end
end
end
end