From 14c16142e0f91949f90774beb03e221cb33a6e36 Mon Sep 17 00:00:00 2001 From: Spencer Krum Date: Mon, 23 Jun 2014 14:35:07 -0700 Subject: [PATCH] Initial rspec-beaker testing scaffolding This allows basic beaker testing to be performed inside the openstack testing framework. Change-Id: Iecd247d35c9041ff865544b07811d728c27cf919 --- .gitignore | 1 + Gemfile | 4 ++- README.md | 13 ++++++++ spec/acceptance/class_spec.rb | 39 ++++++++++++++++++++++ spec/acceptance/nodesets/centos-64-x64.yml | 10 ++++++ spec/acceptance/nodesets/default.yml | 9 +++++ spec/acceptance/nodesets/nodepool.yml | 9 +++++ spec/spec_helper_acceptance.rb | 34 +++++++++++++++++++ 8 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 spec/acceptance/class_spec.rb create mode 100644 spec/acceptance/nodesets/centos-64-x64.yml create mode 100644 spec/acceptance/nodesets/default.yml create mode 100644 spec/acceptance/nodesets/nodepool.yml create mode 100644 spec/spec_helper_acceptance.rb diff --git a/.gitignore b/.gitignore index d4a93a066..9897b6f7e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ spec/fixtures/modules/* pkg Gemfile.lock +.vagrant/* diff --git a/Gemfile b/Gemfile index d965fa900..34880edd1 100644 --- a/Gemfile +++ b/Gemfile @@ -1,9 +1,11 @@ source 'https://rubygems.org' group :development, :test do - gem 'puppetlabs_spec_helper', :require => false + gem 'puppetlabs_spec_helper', :require => false gem 'puppet-lint', '~> 0.3.2' gem 'rake', '10.1.1' + gem 'rspec-puppet', :require => false + gem 'beaker-rspec', '~> 2.2.4', :require => false gem 'rspec', '< 2.99' gem 'json' gem 'webmock' diff --git a/README.md b/README.md index 777b1e16a..c6b3797a9 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,19 @@ Developer documentation for the entire puppet-openstack project. * https://wiki.openstack.org/wiki/Puppet-openstack#Developer_documentation + +Beaker-Rspec +------------ + +This module has beaker-rspec tests + +To run: + +```shell +bundle install +BEAKER_setfile=default bundle exec rspec spec/acceptance +``` + Contributors ------------ diff --git a/spec/acceptance/class_spec.rb b/spec/acceptance/class_spec.rb new file mode 100644 index 000000000..43c613b8a --- /dev/null +++ b/spec/acceptance/class_spec.rb @@ -0,0 +1,39 @@ +require 'spec_helper_acceptance' + +describe 'nova class' do + + context 'default parameters' do + + it 'should work with no errors' do + pp= <<-EOS + include epel # Get our epel on + class { 'nova': + database_connection => 'mysql://nova:a_big_secret@127.0.0.1/nova?charset=utf8', + rabbit_userid => 'nova', + rabbit_password => 'an_even_bigger_secret', + image_service => 'nova.image.glance.GlanceImageService', + glance_api_servers => 'localhost:9292', + verbose => false, + rabbit_host => '127.0.0.1', + mysql_module => '2.2', + } + + class { 'nova::compute': + enabled => true, + vnc_enabled => true, + } + + class { 'nova::compute::libvirt': + migration_support => true, + vncserver_listen => '0.0.0.0', + } + EOS + + + # Run it twice and test for idempotency + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) + end + + end +end diff --git a/spec/acceptance/nodesets/centos-64-x64.yml b/spec/acceptance/nodesets/centos-64-x64.yml new file mode 100644 index 000000000..05540ed8c --- /dev/null +++ b/spec/acceptance/nodesets/centos-64-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + centos-64-x64: + roles: + - master + platform: el-6-x86_64 + box : centos-64-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/spec/acceptance/nodesets/default.yml b/spec/acceptance/nodesets/default.yml new file mode 100644 index 000000000..20fb6d39a --- /dev/null +++ b/spec/acceptance/nodesets/default.yml @@ -0,0 +1,9 @@ +HOSTS: + ubuntu-server-14041-x64: + roles: + - master + platform: ubuntu-14.04-amd64 + hypervisor : none + ip: 127.0.0.1 +CONFIG: + type: foss diff --git a/spec/acceptance/nodesets/nodepool.yml b/spec/acceptance/nodesets/nodepool.yml new file mode 100644 index 000000000..769bbe1a2 --- /dev/null +++ b/spec/acceptance/nodesets/nodepool.yml @@ -0,0 +1,9 @@ +HOSTS: + ubuntu-server-12042-x64: + roles: + - master + platform: ubuntu-12.04-amd64 + hypervisor : none + ip: 127.0.0.1 +CONFIG: + type: foss diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb new file mode 100644 index 000000000..9b5bb3758 --- /dev/null +++ b/spec/spec_helper_acceptance.rb @@ -0,0 +1,34 @@ +require 'beaker-rspec' + +hosts.each do |host| + + install_puppet + + on host, "mkdir -p #{host['distmoduledir']}" +end + +RSpec.configure do |c| + # Project root + proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..')) + + # Readable test descriptions + c.formatter = :documentation + + # Configure all nodes in nodeset + c.before :suite do + # Install module + puppet_module_install(:source => proj_root, :module_name => 'nova') + hosts.each do |host| + on host, puppet('module','install','dprince/qpid'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','duritong/sysctl'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppetlabs-cinder'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppetlabs-glance'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppetlabs-inifile'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','stahnma-epel'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppetlabs-keystone'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppetlabs-mysql', '--version', '2.2'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppetlabs-rabbitmq'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppetlabs-stdlib'), { :acceptable_exit_codes => [0,1] } + end + end +end