Refactor ChefSpec tests

Change-Id: I015d59f5d7f929bd421846f50e1b7a8ad5156248
Implements: blueprint refactor-spec-files
This commit is contained in:
galstrom21 2014-03-31 17:17:32 -05:00
parent 626e5cb54b
commit 3acda13581
20 changed files with 329 additions and 412 deletions

View File

@ -84,7 +84,7 @@ template '/etc/swift/account-server.conf' do
source 'account-server.conf.erb'
owner 'swift'
group 'swift'
mode '0600'
mode 0600
variables(
'bind_ip' => node['openstack']['object-storage']['network']['account-bind-ip'],
'bind_port' => node['openstack']['object-storage']['network']['account-bind-port']

View File

@ -83,7 +83,7 @@ directory '/etc/swift' do
action :create
owner 'swift'
group 'swift'
mode '0700'
mode 0700
only_if '/usr/bin/id swift'
end
@ -99,7 +99,7 @@ file '/etc/swift/swift.conf' do
action :create
owner 'swift'
group 'swift'
mode '0700'
mode 0700
content "[swift-hash]\nswift_hash_path_suffix=#{swifthash}\n"
only_if '/usr/bin/id swift'
end
@ -122,7 +122,7 @@ template '/etc/swift/pull-rings.sh' do
source 'pull-rings.sh.erb'
owner 'swift'
group 'swift'
mode '0700'
mode 0700
variables(
builder_ip: git_builder_ip,
service_prefix: platform_options['service_prefix']

View File

@ -84,7 +84,7 @@ template '/etc/swift/container-server.conf' do
source 'container-server.conf.erb'
owner 'swift'
group 'swift'
mode '0600'
mode 0600
variables(
'bind_ip' => node['openstack']['object-storage']['network']['container-bind-ip'],
'bind_port' => node['openstack']['object-storage']['network']['container-bind-port']
@ -102,7 +102,7 @@ if platform?('ubuntu')
cookbook_file '/etc/init/swift-container-sync.conf' do
owner 'root'
group 'root'
mode '0755'
mode 0755
source 'swift-container-sync.conf.upstart'
action :create
not_if '[ -e /etc/init/swift-container-sync.conf ]'

View File

@ -69,7 +69,7 @@ if node['openstack']['object-storage']['statistics']['enabled']
source 'swift-statsd-publish.py.erb'
owner 'root'
group 'root'
mode '0755'
mode 0755
end
cron 'cron_swift_statsd_publish' do
command "#{platform_options['swift_statsd_publish']} > /dev/null 2>&1"
@ -81,7 +81,7 @@ template '/etc/swift/dispersion.conf' do
source 'dispersion.conf.erb'
owner 'swift'
group 'swift'
mode '0600'
mode 0600
variables(
'auth_url' => node['openstack']['object-storage']['auth_url'],
'auth_user' => auth_user,

View File

@ -87,7 +87,7 @@ template '/etc/swift/object-server.conf' do
source 'object-server.conf.erb'
owner 'swift'
group 'swift'
mode '0600'
mode 0600
variables(
'bind_ip' => node['openstack']['object-storage']['network']['object-bind-ip'],
'bind_port' => node['openstack']['object-storage']['network']['object-bind-port']

View File

@ -132,7 +132,7 @@ template '/etc/swift/proxy-server.conf' do
source 'proxy-server.conf.erb'
owner 'swift'
group 'swift'
mode '0600'
mode 0600
variables(
'authmode' => node['openstack']['object-storage']['authmode'],
'bind_host' => node['openstack']['object-storage']['network']['proxy-bind-ip'],

View File

@ -73,7 +73,7 @@ end
template '/etc/rsyncd.conf' do
source 'rsyncd.conf.erb'
mode '0644'
mode 0644
notifies :restart, "service[#{rsync_servicename}]", :immediately
end

View File

@ -24,7 +24,7 @@ template '/etc/swift/drive-audit.conf' do
source 'drive-audit.conf.erb'
owner 'swift'
group 'swift'
mode '0600'
mode 0600
end
cron 'drive-audit' do

View File

@ -3,51 +3,46 @@ require_relative 'spec_helper'
describe 'openstack-object-storage::account-server' do
describe 'ubuntu' do
before do
swift_stubs
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@node = @chef_run.node
@node.set['openstack']['object-storage']['disk_enum_expr'] = "[{ 'sda' => {}}]"
@node.set['openstack']['object-storage']['disk_test_filter'] = [
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
node.set['openstack']['object-storage']['disk_enum_expr'] = "[{ 'sda' => {}}]"
node.set['openstack']['object-storage']['disk_test_filter'] = [
'candidate =~ /sd[^a]/ or candidate =~ /hd[^a]/ or candidate =~ /vd[^a]/ or candidate =~ /xvd[^a]/',
"File.exist?('/dev/' + candidate)",
"not system('/sbin/parted /dev/' + candidate + ' -s print | grep linux-swap')",
"not info.has_key?('removable') or info['removable'] == 0.to_s"]
# mock out an interface on the storage node
@node.set['network'] = MOCK_NODE_NETWORK_DATA['network']
node.set['network'] = MOCK_NODE_NETWORK_DATA['network']
@chef_run.converge 'openstack-object-storage::account-server'
runner.converge(described_recipe)
end
include_context 'swift-stubs'
it 'installs swift account packages' do
expect(@chef_run).to install_package 'swift-account'
expect(chef_run).to install_package('swift-account')
end
it 'installs swiftclient package' do
expect(@chef_run).to install_package 'python-swiftclient'
expect(chef_run).to install_package('python-swiftclient')
end
it 'starts swift account services on boot' do
%w{swift-account swift-account-auditor swift-account-reaper swift-account-replicator}.each do |svc|
expect(@chef_run).to enable_service(svc)
expect(chef_run).to enable_service(svc)
end
end
describe '/etc/swift/account-server.conf' do
let(:file) { chef_run.template('/etc/swift/account-server.conf') }
before do
@file = @chef_run.template '/etc/swift/account-server.conf'
end
it 'has proper owner' do
expect(@file.owner).to eq('swift')
expect(@file.group).to eq('swift')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '600'
it 'creates account-server.conf' do
expect(chef_run).to create_template(file.name).with(
user: 'swift',
group: 'swift',
mode: 0600
)
end
{ 'bind_ip' => '0.0.0.0',
@ -55,12 +50,9 @@ describe 'openstack-object-storage::account-server' do
'log_statsd_default_sample_rate' => '1',
'log_statsd_metric_prefix' => 'openstack.swift.Fauxhai' }.each do |k, v|
it "sets the #{k}" do
expect(@chef_run).to render_file(@file.name).with_content(/^#{Regexp.quote("#{k} = #{v}")}$/)
expect(chef_run).to render_file(file.name).with_content(/^#{Regexp.quote("#{k} = #{v}")}$/)
end
end
end
end
end

View File

@ -2,9 +2,7 @@
require_relative 'spec_helper'
describe 'openstack-object-storage::client' do
describe 'ubuntu' do
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do

View File

@ -3,107 +3,91 @@ require_relative 'spec_helper'
describe 'openstack-object-storage::common' do
describe 'ubuntu' do
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
runner.converge(described_recipe)
end
before do
swift_stubs
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@node = @chef_run.node
include_context 'swift-stubs'
# TODO: this does not work
# ::Chef::Log.should_receive(:info).with('chefspec: precise-updates/icehouse')
@chef_run.converge 'openstack-object-storage::common'
it 'includes openstack-common::sysctl' do
expect(chef_run).to include_recipe('openstack-common::sysctl')
end
describe '60-openstack.conf' do
before do
@file = @chef_run.template '/etc/sysctl.d/60-openstack.conf'
end
let(:file) { chef_run.template('/etc/sysctl.d/60-openstack.conf') }
it 'has proper owner' do
expect(@file.owner).to eq('root')
expect(@file.group).to eq('root')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '644'
it 'creates /etc/sysctl.d/60-openstack.conf' do
expect(chef_run).to create_template(file.name).with(
user: 'root',
group: 'root',
mode: 0644
)
end
it 'sets the net.ipv4.tcp_tw_recycle' do
match = 'net.ipv4.tcp_tw_recycle = 1'
expect(@chef_run).to render_file(@file.name).with_content(match)
expect(chef_run).to render_file(file.name).with_content(match)
end
it 'sets the net.ipv4.tcp_tw_reuse' do
match = 'net.ipv4.tcp_tw_reuse = 1'
expect(@chef_run).to render_file(@file.name).with_content(match)
expect(chef_run).to render_file(file.name).with_content(match)
end
it 'sets the net.ipv4.tcp_syncookies' do
match = 'net.ipv4.tcp_syncookies = 0'
expect(@chef_run).to render_file(@file.name).with_content(match)
expect(chef_run).to render_file(file.name).with_content(match)
end
end
it 'installs git package for ring management' do
expect(@chef_run).to install_package 'git'
expect(chef_run).to install_package('git')
end
describe '/etc/swift' do
let(:dir) { chef_run.directory('/etc/swift') }
before do
@file = @chef_run.directory '/etc/swift'
it 'creates /etc/swift' do
expect(chef_run).to create_directory(dir.name).with(
user: 'swift',
group: 'swift',
mode: 0700
)
end
it 'has proper owner' do
expect(@file.owner).to eq('swift')
expect(@file.group).to eq('swift')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '700'
end
end
describe '/etc/swift/swift.conf' do
let(:file) { chef_run.file('/etc/swift/swift.conf') }
before do
@file = @chef_run.file '/etc/swift/swift.conf'
end
it 'has proper owner' do
expect(@file.owner).to eq('swift')
expect(@file.group).to eq('swift')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '700'
end
end
describe '/etc/swift/pull-rings.sh' do
before do
@file = @chef_run.template '/etc/swift/pull-rings.sh'
end
it 'has proper owner' do
expect(@file.owner).to eq('swift')
expect(@file.group).to eq('swift')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '700'
it 'creates swift.conf' do
expect(chef_run).to create_file(file.name).with(
user: 'swift',
group: 'swift',
mode: 0700
)
end
it 'template contents' do
pending 'TODO: implement'
end
end
end
describe '/etc/swift/pull-rings.sh' do
let(:file) { chef_run.template('/etc/swift/pull-rings.sh') }
it 'creates pull-rings.sh' do
expect(chef_run).to create_template(file.name).with(
user: 'swift',
group: 'swift',
mode: 0700
)
end
it 'template contents' do
pending 'TODO: implement'
end
end
end
end

View File

@ -3,52 +3,46 @@ require_relative 'spec_helper'
describe 'openstack-object-storage::container-server' do
describe 'ubuntu' do
before do
swift_stubs
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@node = @chef_run.node
@node.set['openstack']['object-storage']['container-server']['allowed_sync_hosts'] = ['host1', 'host2', 'host3']
@node.set['openstack']['object-storage']['disk_enum_expr'] = "[{ 'sda' => {}}]"
@node.set['openstack']['object-storage']['disk_test_filter'] = [
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
node.set['openstack']['object-storage']['container-server']['allowed_sync_hosts'] = ['host1', 'host2', 'host3']
node.set['openstack']['object-storage']['disk_enum_expr'] = "[{ 'sda' => {}}]"
node.set['openstack']['object-storage']['disk_test_filter'] = [
'candidate =~ /sd[^a]/ or candidate =~ /hd[^a]/ or candidate =~ /vd[^a]/ or candidate =~ /xvd[^a]/',
"File.exist?('/dev/' + candidate)",
"not system('/sbin/parted /dev/' + candidate + ' -s print | grep linux-swap')",
"not info.has_key?('removable') or info['removable'] == 0.to_s"]
# mock out an interface on the storage node
@node.set['network'] = MOCK_NODE_NETWORK_DATA['network']
@chef_run.converge 'openstack-object-storage::container-server'
node.set['network'] = MOCK_NODE_NETWORK_DATA['network']
runner.converge(described_recipe)
end
include_context 'swift-stubs'
it 'installs swift container packages' do
expect(@chef_run).to install_package 'swift-container'
expect(chef_run).to install_package('swift-container')
end
it 'starts swift container services on boot' do
%w{swift-container swift-container-auditor swift-container-replicator swift-container-updater swift-container-sync}.each do |svc|
expect(@chef_run).to enable_service(svc)
expect(chef_run).to enable_service(svc)
end
end
describe '/etc/swift/container-server.conf' do
let(:file) { chef_run.template('/etc/swift/container-server.conf') }
before do
@file = @chef_run.template '/etc/swift/container-server.conf'
end
it 'has proper owner' do
expect(@file.owner).to eq('swift')
expect(@file.group).to eq('swift')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '600'
it 'creates account-server.conf' do
expect(chef_run).to create_template(file.name).with(
user: 'swift',
group: 'swift',
mode: 0600
)
end
it 'has allowed sync hosts' do
expect(@chef_run).to render_file(@file.name).with_content('allowed_sync_hosts = host1,host2,host3')
expect(chef_run).to render_file(file.name).with_content('allowed_sync_hosts = host1,host2,host3')
end
{ 'bind_ip' => '0.0.0.0',
@ -56,31 +50,37 @@ describe 'openstack-object-storage::container-server' do
'log_statsd_default_sample_rate' => '1',
'log_statsd_metric_prefix' => 'openstack.swift.Fauxhai' }.each do |k, v|
it "sets the #{k}" do
expect(@chef_run).to render_file(@file.name).with_content(/^#{Regexp.quote("#{k} = #{v}")}$/)
expect(chef_run).to render_file(file.name).with_content(/^#{Regexp.quote("#{k} = #{v}")}$/)
end
end
end
it 'should create container sync upstart conf for ubuntu' do
expect(@chef_run).to create_cookbook_file '/etc/init/swift-container-sync.conf'
end
describe 'container sync' do
let(:file) { chef_run.cookbook_file('/etc/init/swift-container-sync.conf') }
let(:link) { chef_run.link('/etc/init.d/swift-container-sync') }
it 'should create container sync init script for ubuntu' do
expect(@chef_run).to create_link '/etc/init.d/swift-container-sync'
it 'creates /etc/init/swift-container-sync.conf' do
expect(chef_run).to create_cookbook_file(file.name).with(
user: 'root',
group: 'root',
mode: 0755
)
end
it 'creates /etc/init.d/swift-container-sync' do
expect(chef_run).to create_link(link.name)
end
end
describe '/etc/swift/container-server.conf' do
let(:file) { chef_run.template('/etc/swift/container-server.conf') }
before do
@node = @chef_run.node
@node.set['openstack']['object-storage']['container-server']['allowed_sync_hosts'] = []
@chef_run.converge 'openstack-object-storage::container-server'
@file = @chef_run.template '/etc/swift/container-server.conf'
node.set['openstack']['object-storage']['container-server']['allowed_sync_hosts'] = []
end
it 'has no allowed_sync_hosts on empty lists' do
expect(@chef_run).not_to render_file(@file.name).with_content(/^allowed_sync_hots =/)
expect(chef_run).not_to render_file(file.name).with_content(/^allowed_sync_hots =/)
end
end
end

View File

@ -3,30 +3,29 @@ require_relative 'spec_helper'
describe 'openstack-object-storage::disks' do
describe 'ubuntu' do
before do
swift_stubs
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@node = @chef_run.node
@node.set['openstack']['object-storage']['disk_enum_expr'] = "[{ 'sda' => {}}]"
@node.set['openstack']['object-storage']['disk_test_filter'] = [
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
node.set['openstack']['object-storage']['disk_enum_expr'] = "[{ 'sda' => {}}]"
node.set['openstack']['object-storage']['disk_test_filter'] = [
'candidate =~ /sd[^a]/ or candidate =~ /hd[^a]/ or candidate =~ /vd[^a]/ or candidate =~ /xvd[^a]/',
"File.exist?('/dev/' + candidate)",
"not system('/sbin/parted /dev/' + candidate + ' -s print | grep linux-swap')",
"not info.has_key?('removable') or info['removable'] == 0.to_s"]
# mock out an interface on the storage node
@node.set['network'] = MOCK_NODE_NETWORK_DATA['network']
node.set['network'] = MOCK_NODE_NETWORK_DATA['network']
@chef_run.converge 'openstack-object-storage::disks'
runner.converge(described_recipe)
end
include_context 'swift-stubs'
it 'installs xfs progs package' do
expect(@chef_run).to install_package 'xfsprogs'
expect(chef_run).to install_package('xfsprogs')
end
it 'installs parted package' do
expect(@chef_run).to install_package 'parted'
expect(chef_run).to install_package('parted')
end
end

View File

@ -3,60 +3,50 @@ require_relative 'spec_helper'
describe 'openstack-object-storage::management-server' do
describe 'ubuntu' do
before do
swift_stubs
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@node = @chef_run.node
@chef_run.converge 'openstack-object-storage::management-server'
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
runner.converge(described_recipe)
end
include_context 'swift-stubs'
it 'installs swift swauth package' do
expect(@chef_run).to install_package 'swauth'
expect(chef_run).to install_package 'swauth'
end
describe '/etc/swift/dispersion.conf' do
let(:file) { chef_run.template('/etc/swift/dispersion.conf') }
before do
@file = @chef_run.template '/etc/swift/dispersion.conf'
end
it 'has proper owner' do
expect(@file.owner).to eq('swift')
expect(@file.group).to eq('swift')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '600'
it 'creates dispersion.conf' do
expect(chef_run).to create_template(file.name).with(
user: 'swift',
group: 'swift',
mode: 0600
)
end
it 'template contents' do
pending 'TODO: implement'
end
end
describe '/usr/local/bin/swift-statsd-publish.py' do
let(:file) { chef_run.template('/usr/local/bin/swift-statsd-publish.py') }
before do
@file = @chef_run.template '/usr/local/bin/swift-statsd-publish.py'
end
it 'has proper owner' do
expect(@file.owner).to eq('root')
expect(@file.group).to eq('root')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '755'
it 'creates /usr/local/bin/swift-statsd-publish.py' do
expect(chef_run).to create_template(file.name).with(
user: 'root',
group: 'root',
mode: 0755
)
end
it 'has expected statsd host' do
expect(@chef_run).to render_file(@file.name).with_content("self.statsd_host = '127.0.0.1'")
expect(chef_run).to render_file(file.name).with_content(
"self.statsd_host = '127.0.0.1'"
)
end
end
end
end

View File

@ -3,55 +3,48 @@ require_relative 'spec_helper'
describe 'openstack-object-storage::object-server' do
describe 'ubuntu' do
before do
swift_stubs
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@node = @chef_run.node
@node.set['openstack']['object-storage']['disk_enum_expr'] = "[{ 'sda' => {}}]"
@node.set['openstack']['object-storage']['disk_test_filter'] = [
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
node.set['openstack']['object-storage']['disk_enum_expr'] = "[{ 'sda' => {}}]"
node.set['openstack']['object-storage']['disk_test_filter'] = [
'candidate =~ /sd[^a]/ or candidate =~ /hd[^a]/ or candidate =~ /vd[^a]/ or candidate =~ /xvd[^a]/',
"File.exist?('/dev/' + candidate)",
"not system('/sbin/parted /dev/' + candidate + ' -s print | grep linux-swap')",
"not info.has_key?('removable') or info['removable'] == 0.to_s"]
# mock out an interface on the storage node
@node.set['network'] = MOCK_NODE_NETWORK_DATA['network']
node.set['network'] = MOCK_NODE_NETWORK_DATA['network']
@chef_run.converge 'openstack-object-storage::object-server'
runner.converge(described_recipe)
end
include_context 'swift-stubs'
it 'installs swift packages' do
expect(@chef_run).to install_package 'swift-object'
expect(chef_run).to install_package('swift-object')
end
it 'starts swift object services on boot' do
%w{swift-object swift-object-replicator swift-object-auditor swift-object-updater}.each do |svc|
expect(@chef_run).to enable_service(svc)
expect(chef_run).to enable_service(svc)
end
end
describe '/var/spool/crontab/root' do
it 'template contents' do
pending 'TODO: check for recon script'
end
end
describe '/etc/swift/object-server.conf' do
let(:file) { chef_run.template('/etc/swift/object-server.conf') }
before do
@file = @chef_run.template '/etc/swift/object-server.conf'
end
it 'has proper owner' do
expect(@file.owner).to eq('swift')
expect(@file.group).to eq('swift')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '600'
it 'creates object-server.conf' do
expect(chef_run).to create_template(file.name).with(
user: 'swift',
group: 'swift',
mode: 0600
)
end
{ 'bind_ip' => '0.0.0.0',
@ -59,12 +52,9 @@ describe 'openstack-object-storage::object-server' do
'log_statsd_default_sample_rate' => '1',
'log_statsd_metric_prefix' => 'openstack.swift.Fauxhai' }.each do |k, v|
it "sets the #{k}" do
expect(@chef_run).to render_file(@file.name).with_content(/^#{Regexp.quote("#{k} = #{v}")}$/)
expect(chef_run).to render_file(file.name).with_content(/^#{Regexp.quote("#{k} = #{v}")}$/)
end
end
end
end
end

View File

@ -3,44 +3,41 @@ require_relative 'spec_helper'
describe 'openstack-object-storage::proxy-server' do
describe 'ubuntu' do
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
node.automatic['cpu']['total'] = 6
before do
swift_stubs
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@node = @chef_run.node
@node.automatic['cpu']['total'] = 6
@chef_run.converge 'openstack-object-storage::proxy-server'
runner.converge(described_recipe)
end
include_context 'swift-stubs'
it 'installs memcache python packages' do
expect(@chef_run).to install_package 'python-memcache'
expect(chef_run).to install_package('python-memcache')
end
it 'installs swift packages' do
expect(@chef_run).to install_package 'swift-proxy'
expect(chef_run).to install_package('swift-proxy')
end
it 'installs swauth package if swauth is selected' do
expect(@chef_run).to install_package 'swauth'
expect(chef_run).to install_package('swauth')
end
it 'starts swift-proxy on boot' do
expect(@chef_run).to enable_service('swift-proxy')
expect(chef_run).to enable_service('swift-proxy')
end
describe '/etc/swift/proxy-server.conf' do
let(:file) { chef_run.template('/etc/swift/proxy-server.conf') }
before do
@file = @chef_run.template '/etc/swift/proxy-server.conf'
end
it 'has proper owner' do
expect(@file.owner).to eq('swift')
expect(@file.group).to eq('swift')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '600'
it 'creates proxy-server.conf' do
expect(chef_run).to create_template(file.name).with(
user: 'swift',
group: 'swift',
mode: 0600
)
end
it 'has proper pipeline in template' do
@ -49,94 +46,77 @@ describe 'openstack-object-storage::proxy-server' do
/^workers = 5$/
]
array.each do |content|
expect(@chef_run).to render_file(@file.name).with_content(content)
expect(chef_run).to render_file(file.name).with_content(content)
end
end
context 'with domain_remap enabled' do
before do
node.set['openstack']['object-storage']['domain_remap']['enabled'] = true
end
it 'has proper pipeline in template' do
array = [
/^pipeline = catch_errors healthcheck cache ratelimit domain_remap swauth proxy-logging proxy-server$/,
/^storage_domain = example.com$/,
/^path_root = v1$/,
/^reseller_prefixes = AUTH$/
]
array.each do |content|
expect(chef_run).to render_file(file.name).with_content(content)
end
end
end
context 'with formpost enabled' do
before do
node.set['openstack']['object-storage']['formpost']['enabled'] = true
end
it 'has proper pipeline in template' do
array = [
/^pipeline = catch_errors healthcheck cache ratelimit formpost swauth proxy-logging proxy-server$/
]
array.each do |content|
expect(chef_run).to render_file(file.name).with_content(content)
end
end
end
context 'with staticweb enabled' do
before do
node.set['openstack']['object-storage']['staticweb']['enabled'] = true
end
it 'has proper pipeline in template' do
array = [
/^pipeline = catch_errors healthcheck cache ratelimit swauth staticweb proxy-logging proxy-server$/,
/^cache_timeout = 300$/
]
array.each do |content|
expect(chef_run).to render_file(file.name).with_content(content)
end
end
end
context 'with tempurl enabled' do
before do
node.set['openstack']['object-storage']['tempurl']['enabled'] = true
end
it 'has proper pipeline in template' do
array = [
/^pipeline = catch_errors healthcheck cache ratelimit tempurl swauth proxy-logging proxy-server$/,
/^incoming_remove_headers = x-timestamp$/,
/^incoming_allow_headers = $/,
'outgoing_remove_headers = x-object-meta-*',
'outgoing_allow_headers = x-object-meta-public-*'
]
array.each do |content|
expect(chef_run).to render_file(file.name).with_content(content)
end
end
end
end
describe '/etc/swift/proxy-server.conf with domain_remap enabled' do
before do
@node = @chef_run.node
@node.set['openstack']['object-storage']['domain_remap']['enabled'] = true
@chef_run.converge 'openstack-object-storage::proxy-server'
@file = @chef_run.template '/etc/swift/proxy-server.conf'
end
it 'has proper pipeline in template' do
array = [
/^pipeline = catch_errors healthcheck cache ratelimit domain_remap swauth proxy-logging proxy-server$/,
/^storage_domain = example.com$/,
/^path_root = v1$/,
/^reseller_prefixes = AUTH$/
]
array.each do |content|
expect(@chef_run).to render_file(@file.name).with_content(content)
end
end
end
describe '/etc/swift/proxy-server.conf with formpost enabled' do
before do
@node = @chef_run.node
@node.set['openstack']['object-storage']['formpost']['enabled'] = true
@chef_run.converge 'openstack-object-storage::proxy-server'
@file = @chef_run.template '/etc/swift/proxy-server.conf'
end
it 'has proper pipeline in template' do
array = [
/^pipeline = catch_errors healthcheck cache ratelimit formpost swauth proxy-logging proxy-server$/
]
array.each do |content|
expect(@chef_run).to render_file(@file.name).with_content(content)
end
end
end
describe '/etc/swift/proxy-server.conf with staticweb enabled' do
before do
@node = @chef_run.node
@node.set['openstack']['object-storage']['staticweb']['enabled'] = true
@chef_run.converge 'openstack-object-storage::proxy-server'
@file = @chef_run.template '/etc/swift/proxy-server.conf'
end
it 'has proper pipeline in template' do
array = [
/^pipeline = catch_errors healthcheck cache ratelimit swauth staticweb proxy-logging proxy-server$/,
/^cache_timeout = 300$/
]
array.each do |content|
expect(@chef_run).to render_file(@file.name).with_content(content)
end
end
end
describe '/etc/swift/proxy-server.conf with tempurl enabled' do
before do
@node = @chef_run.node
@node.set['openstack']['object-storage']['tempurl']['enabled'] = true
@chef_run.converge 'openstack-object-storage::proxy-server'
@file = @chef_run.template '/etc/swift/proxy-server.conf'
end
it 'has proper pipeline in template' do
array = [
/^pipeline = catch_errors healthcheck cache ratelimit tempurl swauth proxy-logging proxy-server$/,
/^incoming_remove_headers = x-timestamp$/,
/^incoming_allow_headers = $/,
'outgoing_remove_headers = x-object-meta-*',
'outgoing_allow_headers = x-object-meta-public-*'
]
array.each do |content|
expect(@chef_run).to render_file(@file.name).with_content(content)
end
end
end
end
end

View File

@ -3,32 +3,31 @@ require_relative 'spec_helper'
describe 'openstack-object-storage::ring-repo' do
describe 'ubuntu' do
before do
swift_stubs
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@node = @chef_run.node
@chef_run.converge 'openstack-object-storage::ring-repo'
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
runner.converge(described_recipe)
end
include_context 'swift-stubs'
it 'installs git package for ring management' do
expect(@chef_run).to install_package 'git-daemon-sysvinit'
expect(chef_run).to install_package('git-daemon-sysvinit')
end
it 'should not start xinetd services on boot' do
%w{xinetd}.each do |svc|
expect(@chef_run).not_to enable_service(svc)
expect(chef_run).not_to enable_service(svc)
end
end
# FIXME(galstrom21): This spec file should just check that the LWRP
# is called with the appropriate paramaters. It should not be checking
# the file contents.
describe '/etc/swift/ring-workspace/generate-rings.sh' do
it 'gets installed' do
pending 'TODO: determine some way to ensure this LWRP script gets created'
end
end
end
end

View File

@ -3,40 +3,36 @@ require_relative 'spec_helper'
describe 'openstack-object-storage::rsync' do
describe 'ubuntu' do
before do
swift_stubs
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@node = @chef_run.node
@chef_run.converge 'openstack-object-storage::rsync'
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
runner.converge(described_recipe)
end
include_context 'swift-stubs'
it 'installs git package for ring management' do
expect(@chef_run).to install_package 'rsync'
expect(chef_run).to install_package('rsync')
end
it 'starts rsync service on boot' do
%w{rsync}.each do |svc|
expect(@chef_run).to enable_service(svc)
expect(chef_run).to enable_service(svc)
end
end
describe '/etc/rsyncd.conf' do
let(:file) { chef_run.template('/etc/rsyncd.conf') }
before do
@file = @chef_run.template '/etc/rsyncd.conf'
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '644'
it 'creates /etc/rsyncd.conf' do
expect(chef_run).to create_template(file.name).with(
mode: 0644
)
end
it 'template contents' do
pending 'TODO: implement'
end
end
end
end

View File

@ -4,15 +4,15 @@ require 'chefspec/berkshelf'
ChefSpec::Coverage.start! { add_filter 'openstack-compute' }
::LOG_LEVEL = :fatal
::REDHAT_OPTS = {
LOG_LEVEL = :fatal
REDHAT_OPTS = {
platform: 'redhat',
log_level: ::LOG_LEVEL
log_level: LOG_LEVEL
}
::UBUNTU_OPTS = {
UBUNTU_OPTS = {
platform: 'ubuntu',
version: '12.04',
log_level: ::LOG_LEVEL
log_level: LOG_LEVEL
}
MOCK_NODE_NETWORK_DATA =
@ -40,26 +40,27 @@ MOCK_NODE_NETWORK_DATA =
}
}
# TODO(chrislaco) Fixed in spec refactor
def swift_stubs # rubocop:disable MethodLength
stub_command('/usr/bin/id swift').and_return(true)
stub_command('[ -x /etc/swift/pull-rings.sh ]').and_return(true)
stub_command('[ -f /etc/rsyncd.conf ]').and_return(true)
stub_command("grep -q 'RSYNC_ENABLE=false' /etc/default/rsync").and_return(true)
stub_command('[ -e /etc/swift/account-server.conf ] && [ -e /etc/swift/account.ring.gz ]').and_return(true)
stub_command('[ -e /etc/swift/container-server.conf ] && [ -e /etc/swift/container.ring.gz ]').and_return(true)
stub_command('[ -e /etc/init/swift-container-sync.conf ]').and_return(false)
stub_command('[ -e /etc/init.d/swift-container-sync ]').and_return(false)
stub_command('[ -e /etc/swift/object-server.conf ] && [ -e /etc/swift/object.ring.gz ]').and_return(true)
stub_command('[ -e /etc/swift/proxy-server.conf ] && [ -e /etc/swift/object.ring.gz ]').and_return(true)
shared_context 'swift-stubs' do
before do
stub_command('/usr/bin/id swift').and_return(true)
stub_command('[ -x /etc/swift/pull-rings.sh ]').and_return(true)
stub_command('[ -f /etc/rsyncd.conf ]').and_return(true)
stub_command("grep -q 'RSYNC_ENABLE=false' /etc/default/rsync").and_return(true)
stub_command('[ -e /etc/swift/account-server.conf ] && [ -e /etc/swift/account.ring.gz ]').and_return(true)
stub_command('[ -e /etc/swift/container-server.conf ] && [ -e /etc/swift/container.ring.gz ]').and_return(true)
stub_command('[ -e /etc/init/swift-container-sync.conf ]').and_return(false)
stub_command('[ -e /etc/init.d/swift-container-sync ]').and_return(false)
stub_command('[ -e /etc/swift/object-server.conf ] && [ -e /etc/swift/object.ring.gz ]').and_return(true)
stub_command('[ -e /etc/swift/proxy-server.conf ] && [ -e /etc/swift/object.ring.gz ]').and_return(true)
# create mock cluster
n = Chef::Node.new
n.name('manager')
n.default_attrs = {
'swift' => {
'service_pass' => 'foobar'
# create mock cluster
n = Chef::Node.new
n.name('manager')
n.default_attrs = {
'swift' => {
'service_pass' => 'foobar'
}
}
}
Chef::Recipe.any_instance.stub(:search).with(:node, 'chef_environment:_default AND roles:swift-setup').and_return([n])
Chef::Recipe.any_instance.stub(:search).with(:node, 'chef_environment:_default AND roles:swift-setup').and_return([n])
end
end

View File

@ -3,52 +3,40 @@ require_relative 'spec_helper'
describe 'openstack-object-storage::storage-common' do
describe 'ubuntu' do
before do
swift_stubs
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@node = @chef_run.node
@chef_run.converge 'openstack-object-storage::storage-common'
let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
runner.converge(described_recipe)
end
include_context 'swift-stubs'
describe '/var/cache/swift' do
let(:dir) { chef_run.directory('/var/cache/swift') }
before do
@file = @chef_run.directory '/var/cache/swift'
it 'creates /var/cache/swift' do
expect(chef_run).to create_directory(dir.name).with(
user: 'swift',
group: 'swift',
mode: 0700
)
end
it 'has proper owner' do
expect(@file.owner).to eq('swift')
expect(@file.group).to eq('swift')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '700'
end
end
describe '/etc/swift/drive-audit.conf' do
let(:file) { chef_run.template('/etc/swift/drive-audit.conf') }
before do
@file = @chef_run.template '/etc/swift/drive-audit.conf'
end
it 'has proper owner' do
expect(@file.owner).to eq('swift')
expect(@file.group).to eq('swift')
end
it 'has proper modes' do
expect(sprintf('%o', @file.mode)).to eq '600'
it 'creates drive-audit.conf' do
expect(chef_run).to create_template(file.name).with(
user: 'swift',
group: 'swift',
mode: 0600
)
end
it 'template contents' do
pending 'TODO: implement'
end
end
end
end