[tests] Use beaker+docker for acceptance tests
Beaker together with docker is a very fast way to do acceptance testing. This commit adds basic beaker/docker support: - Add a debian jessie nodeset - Test if the module applies idempotentially, so it doesn't change resources on a second run with the same parameters. https://github.com/puppetlabs/beaker/blob/master/docs/Docker-Support.md
This commit is contained in:
parent
185ac30062
commit
005f06f3dd
7 changed files with 91 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -5,6 +5,7 @@
|
||||||
/spec/fixtures/modules/*
|
/spec/fixtures/modules/*
|
||||||
!/spec/fixtures/modules/apt
|
!/spec/fixtures/modules/apt
|
||||||
!/spec/fixtures/modules/apt/*
|
!/spec/fixtures/modules/apt/*
|
||||||
|
/log
|
||||||
/.vagrant/
|
/.vagrant/
|
||||||
/.bundle/
|
/.bundle/
|
||||||
/coverage/
|
/coverage/
|
||||||
|
|
7
Gemfile
7
Gemfile
|
@ -11,3 +11,10 @@ group :test do
|
||||||
gem "rspec-puppet-facts"
|
gem "rspec-puppet-facts"
|
||||||
gem "mocha"
|
gem "mocha"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
group :system_tests do
|
||||||
|
gem 'beaker', :require => false
|
||||||
|
gem 'beaker-rspec', :require => false
|
||||||
|
gem 'beaker_spec_helper', :require => false
|
||||||
|
gem 'serverspec', :require => false
|
||||||
|
end
|
||||||
|
|
24
README
24
README
|
@ -576,11 +576,35 @@ To run pupept rspec tests:
|
||||||
bundle install --path vendor/bundle
|
bundle install --path vendor/bundle
|
||||||
bundle exec rake spec
|
bundle exec rake spec
|
||||||
|
|
||||||
|
Verbose Output:
|
||||||
|
|
||||||
|
bundle exec rake spec SPEC_OPTS='--format documentation'
|
||||||
|
|
||||||
Using different facter/puppet versions:
|
Using different facter/puppet versions:
|
||||||
|
|
||||||
FACTER_GEM_VERSION=1.6.10 PUPPET_GEM_VERSION=2.7.23 bundle install --path vendor/bundle
|
FACTER_GEM_VERSION=1.6.10 PUPPET_GEM_VERSION=2.7.23 bundle install --path vendor/bundle
|
||||||
bundle exec rake spec
|
bundle exec rake spec
|
||||||
|
|
||||||
|
Acceptance Tests
|
||||||
|
----------------
|
||||||
|
|
||||||
|
At the moment, we use [beaker together with docker](https://github.com/puppetlabs/beaker/blob/master/docs/Docker-Support.md)
|
||||||
|
to do acceptance testing.
|
||||||
|
Be sure to have a recent docker version installed.
|
||||||
|
|
||||||
|
List configured nodesets:
|
||||||
|
|
||||||
|
bundle exec rake beaker_nodes
|
||||||
|
|
||||||
|
Run tests on default node (Debian Jessie):
|
||||||
|
|
||||||
|
bundle exec rake beaker
|
||||||
|
|
||||||
|
Run different nodeset:
|
||||||
|
|
||||||
|
BEAKER_set="debian-8-x86_64-docker" bundle exec rspec spec/acceptance/*_spec.rb
|
||||||
|
|
||||||
|
|
||||||
Licensing
|
Licensing
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
|
21
spec/acceptance/apt_spec.rb
Normal file
21
spec/acceptance/apt_spec.rb
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
require 'spec_helper_acceptance'
|
||||||
|
|
||||||
|
describe 'apt class' do
|
||||||
|
|
||||||
|
context 'default parameters' do
|
||||||
|
it 'should work idempotently with no errors' do
|
||||||
|
pp = <<-EOS
|
||||||
|
class { 'apt': }
|
||||||
|
EOS
|
||||||
|
|
||||||
|
# Run it twice and test for idempotency
|
||||||
|
apply_manifest(pp, :catch_failures => true)
|
||||||
|
apply_manifest(pp, :catch_changes => true)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe package('apt') do
|
||||||
|
it { is_expected.to be_installed }
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
19
spec/acceptance/nodesets/debian-8-x86_64-docker.yml
Normal file
19
spec/acceptance/nodesets/debian-8-x86_64-docker.yml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
HOSTS:
|
||||||
|
debian-8-x64:
|
||||||
|
platform: debian-8-amd64
|
||||||
|
image: debian:8
|
||||||
|
hypervisor: docker
|
||||||
|
docker_preserve_image: true
|
||||||
|
docker_cmd: '["/sbin/init"]'
|
||||||
|
docker_image_commands:
|
||||||
|
- 'apt-get install -y wget locales-all puppet git'
|
||||||
|
- 'rm -f /usr/sbin/policy-rc.d'
|
||||||
|
|
||||||
|
CONFIG:
|
||||||
|
type: foss
|
||||||
|
#log_level: verbose
|
||||||
|
#log_level: debug
|
||||||
|
|
||||||
|
ssh:
|
||||||
|
password: root
|
||||||
|
auth_methods: ["password"]
|
1
spec/acceptance/nodesets/default.yml
Symbolic link
1
spec/acceptance/nodesets/default.yml
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
debian-8-x86_64-docker.yml
|
18
spec/spec_helper_acceptance.rb
Normal file
18
spec/spec_helper_acceptance.rb
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
require 'beaker-rspec'
|
||||||
|
|
||||||
|
RSpec.configure do |c|
|
||||||
|
module_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
||||||
|
module_name = module_root.split('-').last
|
||||||
|
|
||||||
|
# Readable test descriptions
|
||||||
|
c.formatter = :documentation
|
||||||
|
|
||||||
|
# Configure all nodes in nodeset
|
||||||
|
c.before :suite do
|
||||||
|
# Install module and dependencies
|
||||||
|
puppet_module_install(:source => module_root, :module_name => module_name)
|
||||||
|
hosts.each do |host|
|
||||||
|
shell('git clone https://gitlab.com/shared-puppet-modules-group/common.git /etc/puppet/modules/common')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue