Write spec test for openstack::compute

* Include the puppetlabs_spec_helper gem for autogeneration of the fixtures dir
This commit is contained in:
Branan Purvine-Riley
2012-06-01 14:04:44 -07:00
parent d6bf2709e7
commit 6d50c3f839
5 changed files with 112 additions and 19 deletions

10
.fixtures.yml Normal file
View File

@@ -0,0 +1,10 @@
fixtures:
repositories:
"apt": "git://github.com/puppetlabs/puppetlabs-apt.git"
"keystone": "git://github.com/puppetlabs/puppetlabs-keystone.git"
"mysql": "git://github.com/puppetlabs/puppetlabs-mysql.git"
"nova": "git://github.com/puppetlabs/puppetlabs-nova.git"
"stdlib": "git://github.com/puppetlabs/puppetlabs-stdlib.git"
"sysctl": "git://github.com/duritong/puppet-sysctl.git"
symlinks:
"openstack": "#{source_dir}"

View File

@@ -5,7 +5,7 @@
# #
# #
require 'puppet' require 'puppetlabs_spec_helper/rake_tasks'
repo_file = 'other_repos.yaml' repo_file = 'other_repos.yaml'
default_modulepath = '/etc/puppet/modules' default_modulepath = '/etc/puppet/modules'

View File

@@ -2,4 +2,104 @@ require 'spec_helper'
describe 'openstack::compute' do describe 'openstack::compute' do
let :default_params do
{
:private_interface => 'eth0',
:internal_address => '0.0.0.0',
}
end
let :facts do
{
:operatingsystem => 'Ubuntu',
:osfamily => 'Debian',
}
end
describe "when using default class paramaters" do
let :params do
default_params
end
it {
should contain_nova_config('multi_host').with({ 'value' => 'False' })
should_not contain_class('nova::api')
should_not contain_class('nova::volume')
should_not contain_class('nova::volume::iscsi')
should contain_class('nova::network').with({
'enabled' => false,
'install_service' => false
})
}
end
describe "when enabling volume management" do
let :params do
default_params.merge({
:manage_volumes => true
})
end
it {
should contain_nova_config('multi_host').with({ 'value' => 'False'})
should_not contain_class('nova::api')
should contain_class('nova::volume')
should contain_class('nova::volume::iscsi')
should contain_class('nova::network').with({
'enabled' => false,
'install_service' => false
})
}
end
describe "when configuring for multi host" do
let :params do
default_params.merge({
:multi_host => true,
:public_interface => 'eth0'
})
end
it {
should contain_nova_config('multi_host').with({ 'value' => 'True'})
should contain_class('nova::api')
should_not contain_class('nova::volume')
should_not contain_class('nova::volume::iscsi')
should contain_class('nova::network').with({
'enabled' => true,
'install_service' => true
})
}
end
describe "when configuring for multi host without a public interface" do
let :params do
default_params.merge({
:multi_host => true
})
end
it {
expect { should raise_error(Puppet::Error) }
}
end
describe "when enabling volume management and using multi host" do
let :params do
default_params.merge({
:multi_host => true,
:public_interface => 'eth0',
:manage_volumes => true,
})
end
it {
should contain_nova_config('multi_host').with({ 'value' => 'True'})
should contain_class('nova::api')
should contain_class('nova::volume')
should contain_class('nova::volume::iscsi')
should contain_class('nova::network').with({
'enabled' => true,
'install_service' => true
})
}
end
end end

0
spec/fixtures/manifests/site.pp vendored Normal file
View File

View File

@@ -1,18 +1 @@
require 'puppet' require 'puppetlabs_spec_helper/module_spec_helper'
require 'rspec'
require 'rspec-puppet'
def param_value(subject, type, title, param)
subject.resource(type, title).send(:parameters)[param.to_sym]
end
def verify_contents(subject, title, expected_lines)
content = subject.resource('file', title).send(:parameters)[:content]
(content.split("\n") & expected_lines).should == expected_lines
end
RSpec.configure do |c|
c.module_path = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures/modules/'))
# Using an empty site.pp file to avoid: https://github.com/rodjek/rspec-puppet/issues/15
c.manifest_dir = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures/manifests'))
end