From 58e807a42cf62890405c51d85a0f84b196faed60 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Tue, 28 Apr 2015 09:33:46 -0400 Subject: [PATCH] Beaker tests Implement basic structure for beaker tests. Change-Id: Ia8533ffacf8aab27010496fab744a2490a5b8f53 Closes-bug: #1444736 --- Gemfile | 1 + README.md | 11 ++++++++ spec/acceptance/basic_vswitch_spec.rb | 28 ++++++++++++++++++++ spec/acceptance/nodesets/default.yml | 9 +++++++ spec/acceptance/nodesets/nodepool.yml | 9 +++++++ spec/spec_helper_acceptance.rb | 37 +++++++++++++++++++++++++++ 6 files changed, 95 insertions(+) create mode 100644 spec/acceptance/basic_vswitch_spec.rb 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/Gemfile b/Gemfile index b96ac8a1..571fd65d 100644 --- a/Gemfile +++ b/Gemfile @@ -16,6 +16,7 @@ group :development, :test do gem 'puppet-lint-variable_contains_upcase' gem 'puppet-lint-numericvariable' + gem 'beaker-rspec', '~> 2.2.4', :require => false gem 'json' gem 'webmock' end diff --git a/README.md b/README.md index 8c2a87bf..2bde5b7a 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,17 @@ vs_port { 'eth2': } ``` +## Beaker-Rspec + +This module has beaker-rspec tests + +To run: + +``shell +bundle install +bundle exec rspec spec/acceptance +`` + ## TODO: * OpenFlow controller settings * OpenFlow Settings diff --git a/spec/acceptance/basic_vswitch_spec.rb b/spec/acceptance/basic_vswitch_spec.rb new file mode 100644 index 00000000..21b33bcb --- /dev/null +++ b/spec/acceptance/basic_vswitch_spec.rb @@ -0,0 +1,28 @@ +require 'spec_helper_acceptance' + +describe 'basic vswitch' do + + context 'default parameters' do + + it 'should work with no errors' do + pp= <<-EOS + Exec { logoutput => 'on_failure' } + + include ::vswitch::ovs + + vs_bridge { 'br-beaker': + ensure => present, + } + EOS + + + # Run it twice and test for idempotency + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) + end + + describe command('ovs-vsctl show') do + its(:stdout) { should match /br-beaker/ } + end + end +end diff --git a/spec/acceptance/nodesets/default.yml b/spec/acceptance/nodesets/default.yml new file mode 100644 index 00000000..a2c1ecc6 --- /dev/null +++ b/spec/acceptance/nodesets/default.yml @@ -0,0 +1,9 @@ +HOSTS: + ubuntu-14.04-amd64: + 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 00000000..a2c1ecc6 --- /dev/null +++ b/spec/acceptance/nodesets/nodepool.yml @@ -0,0 +1,9 @@ +HOSTS: + ubuntu-14.04-amd64: + roles: + - master + platform: ubuntu-14.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 00000000..4e69a954 --- /dev/null +++ b/spec/spec_helper_acceptance.rb @@ -0,0 +1,37 @@ +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 and dependencies + hosts.each do |host| + + # install git + install_package host, 'git' + + # clean out any module cruft + shell('rm -fr /etc/puppet/modules/*') + + # install library modules from the forge + on host, puppet('module','install','puppetlabs-stdlib'), { :acceptable_exit_codes => 0 } + + # Install the module being tested + puppet_module_install(:source => proj_root, :module_name => 'vswitch') + # List modules installed to help with debugging + on hosts[0], puppet('module','list'), { :acceptable_exit_codes => 0 } + end + end +end