[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:
varac 2015-12-20 01:57:04 +01:00
parent 185ac30062
commit 005f06f3dd
7 changed files with 91 additions and 0 deletions

1
.gitignore vendored
View file

@ -5,6 +5,7 @@
/spec/fixtures/modules/*
!/spec/fixtures/modules/apt
!/spec/fixtures/modules/apt/*
/log
/.vagrant/
/.bundle/
/coverage/

View file

@ -11,3 +11,10 @@ group :test do
gem "rspec-puppet-facts"
gem "mocha"
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
View file

@ -576,11 +576,35 @@ To run pupept rspec tests:
bundle install --path vendor/bundle
bundle exec rake spec
Verbose Output:
bundle exec rake spec SPEC_OPTS='--format documentation'
Using different facter/puppet versions:
FACTER_GEM_VERSION=1.6.10 PUPPET_GEM_VERSION=2.7.23 bundle install --path vendor/bundle
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
=========

View 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

View 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"]

View file

@ -0,0 +1 @@
debian-8-x86_64-docker.yml

View 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