Write spec test for openstack::compute
* Include the puppetlabs_spec_helper gem for autogeneration of the fixtures dir
This commit is contained in:
		
							
								
								
									
										10
									
								
								.fixtures.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								.fixtures.yml
									
									
									
									
									
										Normal 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}" | ||||
							
								
								
									
										2
									
								
								Rakefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Rakefile
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | ||||
| # | ||||
| # | ||||
|  | ||||
| require 'puppet' | ||||
| require 'puppetlabs_spec_helper/rake_tasks' | ||||
|  | ||||
| repo_file = 'other_repos.yaml' | ||||
| default_modulepath = '/etc/puppet/modules' | ||||
|   | ||||
| @@ -2,4 +2,104 @@ require 'spec_helper' | ||||
|  | ||||
| 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 | ||||
|   | ||||
							
								
								
									
										0
									
								
								spec/fixtures/manifests/site.pp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								spec/fixtures/manifests/site.pp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -1,18 +1 @@ | ||||
| require 'puppet' | ||||
| 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 | ||||
| require 'puppetlabs_spec_helper/module_spec_helper' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Branan Purvine-Riley
					Branan Purvine-Riley