From c62e0582e8188f090c8ff1174eb66f2082d62af2 Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Sat, 31 May 2014 16:25:02 -0700 Subject: [PATCH] convert from rspec-systerm -> beaker + update acceptance tests --- .nodeset.yml | 11 ---- Gemfile | 19 +++---- Rakefile | 1 - spec/acceptance/nodesets/centos-59-x64.yml | 10 ++++ spec/acceptance/nodesets/centos-64-x64-pe.yml | 12 ++++ spec/acceptance/nodesets/centos-64-x64.yml | 10 ++++ spec/acceptance/nodesets/debian-607-x64.yml | 10 ++++ spec/acceptance/nodesets/debian-70rc1-x64.yml | 10 ++++ spec/acceptance/nodesets/debian-73-x64.yml | 11 ++++ spec/acceptance/nodesets/default.yml | 10 ++++ spec/acceptance/nodesets/fedora-18-x64.yml | 10 ++++ spec/acceptance/nodesets/sles-11-x64.yml | 10 ++++ spec/acceptance/nodesets/sles-11sp1-x64.yml | 10 ++++ .../nodesets/ubuntu-server-10044-x64.yml | 10 ++++ .../nodesets/ubuntu-server-12042-x64.yml | 10 ++++ .../nodesets/ubuntu-server-1404-x64.yml | 11 ++++ .../selenium_hub_spec.rb | 24 +++++--- .../selenium_node_spec.rb | 24 +++++--- spec/acceptance/selenium_server_spec.rb | 55 +++++++++++++++++++ spec/{system => acceptance}/selenium_spec.rb | 11 ++-- spec/spec_helper_acceptance.rb | 33 +++++++++++ spec/spec_helper_system.rb | 28 ---------- spec/{ => unit}/classes/selenium_hub_spec.rb | 0 spec/{ => unit}/classes/selenium_node_spec.rb | 0 .../classes/selenium_params_spec.rb | 0 .../classes/selenium_server_spec.rb | 0 spec/{ => unit}/classes/selenium_spec.rb | 0 .../defines/selenium_config_spec.rb | 0 28 files changed, 267 insertions(+), 73 deletions(-) delete mode 100644 .nodeset.yml create mode 100644 spec/acceptance/nodesets/centos-59-x64.yml create mode 100644 spec/acceptance/nodesets/centos-64-x64-pe.yml create mode 100644 spec/acceptance/nodesets/centos-64-x64.yml create mode 100644 spec/acceptance/nodesets/debian-607-x64.yml create mode 100644 spec/acceptance/nodesets/debian-70rc1-x64.yml create mode 100644 spec/acceptance/nodesets/debian-73-x64.yml create mode 100644 spec/acceptance/nodesets/default.yml create mode 100644 spec/acceptance/nodesets/fedora-18-x64.yml create mode 100644 spec/acceptance/nodesets/sles-11-x64.yml create mode 100644 spec/acceptance/nodesets/sles-11sp1-x64.yml create mode 100644 spec/acceptance/nodesets/ubuntu-server-10044-x64.yml create mode 100644 spec/acceptance/nodesets/ubuntu-server-12042-x64.yml create mode 100644 spec/acceptance/nodesets/ubuntu-server-1404-x64.yml rename spec/{system => acceptance}/selenium_hub_spec.rb (64%) rename spec/{system => acceptance}/selenium_node_spec.rb (61%) create mode 100644 spec/acceptance/selenium_server_spec.rb rename spec/{system => acceptance}/selenium_spec.rb (84%) create mode 100644 spec/spec_helper_acceptance.rb delete mode 100644 spec/spec_helper_system.rb rename spec/{ => unit}/classes/selenium_hub_spec.rb (100%) rename spec/{ => unit}/classes/selenium_node_spec.rb (100%) rename spec/{ => unit}/classes/selenium_params_spec.rb (100%) rename spec/{ => unit}/classes/selenium_server_spec.rb (100%) rename spec/{ => unit}/classes/selenium_spec.rb (100%) rename spec/{ => unit}/defines/selenium_config_spec.rb (100%) diff --git a/.nodeset.yml b/.nodeset.yml deleted file mode 100644 index b802983..0000000 --- a/.nodeset.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -default_set: 'centos-64-x64' -sets: - 'centos-64-x64': - nodes: - 'main.vm': - prefab: 'centos-64-x64' - 'debian-607-x64': - nodes: - 'main.vm': - prefab: 'debian-607-x64' diff --git a/Gemfile b/Gemfile index 3cd5087..8d8431b 100644 --- a/Gemfile +++ b/Gemfile @@ -6,13 +6,12 @@ else gem 'puppet', :require => false end -gem 'rake', :require => false -gem 'puppetlabs_spec_helper', :require => false -gem 'puppet-lint', :require => false -gem 'puppet-syntax', :require => false -gem 'rspec-system', :require => false -gem 'rspec-system-puppet', :require => false -gem 'rspec-system-serverspec', '>= 2.0.1', :require => false -gem 'serverspec', :require => false - -# vim:ft=ruby +gem 'rake', :require => false +gem 'puppetlabs_spec_helper', :require => false +gem 'puppet-lint', :require => false +gem 'puppet-syntax', :require => false +gem 'rspec-puppet', :require => false +gem 'beaker', :require => false +gem 'beaker-rspec', :require => false +gem 'serverspec', :require => false +gem 'pry', :require => false diff --git a/Rakefile b/Rakefile index 92c75d8..1a9f16d 100644 --- a/Rakefile +++ b/Rakefile @@ -1,5 +1,4 @@ require 'puppetlabs_spec_helper/rake_tasks' -require 'rspec-system/rake_task' require 'puppet-syntax/tasks/puppet-syntax' require 'puppet-lint/tasks/puppet-lint' diff --git a/spec/acceptance/nodesets/centos-59-x64.yml b/spec/acceptance/nodesets/centos-59-x64.yml new file mode 100644 index 0000000..2ad90b8 --- /dev/null +++ b/spec/acceptance/nodesets/centos-59-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + centos-59-x64: + roles: + - master + platform: el-5-x86_64 + box : centos-59-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-59-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: git diff --git a/spec/acceptance/nodesets/centos-64-x64-pe.yml b/spec/acceptance/nodesets/centos-64-x64-pe.yml new file mode 100644 index 0000000..7d9242f --- /dev/null +++ b/spec/acceptance/nodesets/centos-64-x64-pe.yml @@ -0,0 +1,12 @@ +HOSTS: + centos-64-x64: + roles: + - master + - database + - dashboard + 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: pe diff --git a/spec/acceptance/nodesets/centos-64-x64.yml b/spec/acceptance/nodesets/centos-64-x64.yml new file mode 100644 index 0000000..05540ed --- /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/debian-607-x64.yml b/spec/acceptance/nodesets/debian-607-x64.yml new file mode 100644 index 0000000..4c8be42 --- /dev/null +++ b/spec/acceptance/nodesets/debian-607-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + debian-607-x64: + roles: + - master + platform: debian-6-amd64 + box : debian-607-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-607-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: git diff --git a/spec/acceptance/nodesets/debian-70rc1-x64.yml b/spec/acceptance/nodesets/debian-70rc1-x64.yml new file mode 100644 index 0000000..19181c1 --- /dev/null +++ b/spec/acceptance/nodesets/debian-70rc1-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + debian-70rc1-x64: + roles: + - master + platform: debian-7-amd64 + box : debian-70rc1-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-70rc1-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: git diff --git a/spec/acceptance/nodesets/debian-73-x64.yml b/spec/acceptance/nodesets/debian-73-x64.yml new file mode 100644 index 0000000..3e6a3a9 --- /dev/null +++ b/spec/acceptance/nodesets/debian-73-x64.yml @@ -0,0 +1,11 @@ +HOSTS: + debian-73-x64.localhost: + roles: + - master + platform: debian-7-amd64 + box : debian-73-x64-virtualbox-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-nocm.box + hypervisor : vagrant +CONFIG: + log_level: debug + type: foss diff --git a/spec/acceptance/nodesets/default.yml b/spec/acceptance/nodesets/default.yml new file mode 100644 index 0000000..2dd9457 --- /dev/null +++ b/spec/acceptance/nodesets/default.yml @@ -0,0 +1,10 @@ +HOSTS: + centos-65-x64.localdomain: + roles: + - master + platform: el-6-x86_64 + box : centos-65-x64-virtualbox-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/spec/acceptance/nodesets/fedora-18-x64.yml b/spec/acceptance/nodesets/fedora-18-x64.yml new file mode 100644 index 0000000..1361649 --- /dev/null +++ b/spec/acceptance/nodesets/fedora-18-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + fedora-18-x64: + roles: + - master + platform: fedora-18-x86_64 + box : fedora-18-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/fedora-18-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/spec/acceptance/nodesets/sles-11-x64.yml b/spec/acceptance/nodesets/sles-11-x64.yml new file mode 100644 index 0000000..41abe21 --- /dev/null +++ b/spec/acceptance/nodesets/sles-11-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + sles-11-x64.local: + roles: + - master + platform: sles-11-x64 + box : sles-11sp1-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/sles-11sp1-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/spec/acceptance/nodesets/sles-11sp1-x64.yml b/spec/acceptance/nodesets/sles-11sp1-x64.yml new file mode 100644 index 0000000..554c37a --- /dev/null +++ b/spec/acceptance/nodesets/sles-11sp1-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + sles-11sp1-x64: + roles: + - master + platform: sles-11-x86_64 + box : sles-11sp1-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/sles-11sp1-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: git diff --git a/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml b/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml new file mode 100644 index 0000000..5ca1514 --- /dev/null +++ b/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + ubuntu-server-10044-x64: + roles: + - master + platform: ubuntu-10.04-amd64 + box : ubuntu-server-10044-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-10044-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml b/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml new file mode 100644 index 0000000..d065b30 --- /dev/null +++ b/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + ubuntu-server-12042-x64: + roles: + - master + platform: ubuntu-12.04-amd64 + box : ubuntu-server-12042-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml b/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml new file mode 100644 index 0000000..cba1cd0 --- /dev/null +++ b/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml @@ -0,0 +1,11 @@ +HOSTS: + ubuntu-server-1404-x64: + roles: + - master + platform: ubuntu-14.04-amd64 + box : puppetlabs/ubuntu-14.04-64-nocm + box_url : https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm + hypervisor : vagrant +CONFIG: + log_level : debug + type: git diff --git a/spec/system/selenium_hub_spec.rb b/spec/acceptance/selenium_hub_spec.rb similarity index 64% rename from spec/system/selenium_hub_spec.rb rename to spec/acceptance/selenium_hub_spec.rb index ccc0381..c0d7bb2 100644 --- a/spec/system/selenium_hub_spec.rb +++ b/spec/acceptance/selenium_hub_spec.rb @@ -1,6 +1,10 @@ -require 'spec_helper_system' +require 'spec_helper_acceptance' describe 'selenium::hub class' do + after(:all) do + shell "service seleniumhub stop" + end + describe 'running puppet code' do # Using puppet_apply as a helper it 'should work with no errors' do @@ -12,11 +16,8 @@ class { 'selenium::hub': } EOS # Run it twice and test for idempotency - puppet_apply(pp) do |r| - r.exit_code.should_not == 1 - r.refresh - r.exit_code.should be_zero - end + expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") + expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end end @@ -41,7 +42,14 @@ class { 'selenium::hub': } it { should be_enabled } end - describe port(4444) do - it { should be_listening.with('tcp') } + describe process('java') do + its(:args) { should match /-role hub/ } + it { should be_running } + end + + pending('daemon is very slow to start listening') do + describe port(4444) do + it { should be_listening.with('tcp') } + end end end diff --git a/spec/system/selenium_node_spec.rb b/spec/acceptance/selenium_node_spec.rb similarity index 61% rename from spec/system/selenium_node_spec.rb rename to spec/acceptance/selenium_node_spec.rb index f921661..2270cc1 100644 --- a/spec/system/selenium_node_spec.rb +++ b/spec/acceptance/selenium_node_spec.rb @@ -1,6 +1,10 @@ -require 'spec_helper_system' +require 'spec_helper_acceptance' describe 'selenium::node class' do + after(:all) do + shell "service seleniumnode stop" + end + describe 'running puppet code' do # Using puppet_apply as a helper it 'should work with no errors' do @@ -12,11 +16,8 @@ class { 'selenium::node': } EOS # Run it twice and test for idempotency - puppet_apply(pp) do |r| - r.exit_code.should_not == 1 - r.refresh - r.exit_code.should be_zero - end + expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") + expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end end @@ -41,7 +42,14 @@ class { 'selenium::node': } it { should be_enabled } end - describe port(5555) do - it { should be_listening.with('tcp') } + describe process('java') do + its(:args) { should match %|-Dwebdriver.enable.native.events=1 -role node -hub http://localhost:4444/grid/register| } + it { should be_running } + end + + pending('daemon is very slow to start listening') do + describe port(5555) do + it { should be_listening.with('tcp') } + end end end diff --git a/spec/acceptance/selenium_server_spec.rb b/spec/acceptance/selenium_server_spec.rb new file mode 100644 index 0000000..9eaed09 --- /dev/null +++ b/spec/acceptance/selenium_server_spec.rb @@ -0,0 +1,55 @@ +require 'spec_helper_acceptance' + +describe 'selenium::server class' do + after(:all) do + shell "service seleniumserver stop" + end + + describe 'running puppet code' do + # Using puppet_apply as a helper + it 'should work with no errors' do + pp = <<-EOS + include java + Class['java'] -> Class['selenium::server'] + + class { 'selenium::server': } + EOS + + # Run it twice and test for idempotency + expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") + expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") + end + end + + describe file('/etc/init.d/seleniumserver') do + it { should be_file } + it { should be_owned_by 'root' } + it { should be_grouped_into 'root' } + it { should be_mode 755 } + end + + %w[server_stdout.log server_stderr.log].each do |file| + describe file("/opt/selenium/log/#{file}") do + it { should be_file } + it { should be_owned_by 'selenium' } + it { should be_grouped_into 'selenium' } + it { should be_mode 644} + end + end + + describe service('seleniumserver') do + it { should be_running } + it { should be_enabled } + end + + describe process('java') do + its(:args) { should match /-Dwebdriver.enable.native.events=1/ } + it { should be_running } + end + + pending('daemon is very slow to start listening') do + describe port(4444) do + it { should be_listening.with('tcp') } + end + end +end diff --git a/spec/system/selenium_spec.rb b/spec/acceptance/selenium_spec.rb similarity index 84% rename from spec/system/selenium_spec.rb rename to spec/acceptance/selenium_spec.rb index 8a07c84..06ded2a 100644 --- a/spec/system/selenium_spec.rb +++ b/spec/acceptance/selenium_spec.rb @@ -1,4 +1,4 @@ -require 'spec_helper_system' +require 'spec_helper_acceptance' describe 'selenium class' do describe 'running puppet code' do @@ -12,11 +12,8 @@ class { 'selenium': } EOS # Run it twice and test for idempotency - puppet_apply(pp) do |r| - r.exit_code.should_not == 1 - r.refresh - r.exit_code.should be_zero - end + expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") + expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end end @@ -33,7 +30,7 @@ class { 'selenium': } it { should be_linked_to '/opt/selenium/log' } end - describe file('/opt/selenium/jars/selenium-server-standalone-2.39.0.jar') do + describe file('/opt/selenium/jars/selenium-server-standalone-2.41.0.jar') do it { should be_file } it { should be_owned_by 'selenium' } it { should be_grouped_into 'selenium' } diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb new file mode 100644 index 0000000..cf6c5e0 --- /dev/null +++ b/spec/spec_helper_acceptance.rb @@ -0,0 +1,33 @@ +require 'beaker-rspec/spec_helper' +require 'beaker-rspec/helpers/serverspec' + +unless ENV['RS_PROVISION'] == 'no' or ENV['BEAKER_provision'] == 'no' + if hosts.first.is_pe? + install_pe + else + install_puppet + end + hosts.each do |host| + on hosts, "mkdir -p #{host['distmoduledir']}" + end +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 + puppet_module_install(:source => proj_root, :module_name => 'selenium') + hosts.each do |host| + on host, puppet('module', 'install', 'puppetlabs-stdlib'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module', 'install', 'maestrodev-wget'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module', 'install', 'rodjek-logrotate'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module', 'install', 'puppetlabs-java'), { :acceptable_exit_codes => [0,1] } + end + end +end diff --git a/spec/spec_helper_system.rb b/spec/spec_helper_system.rb deleted file mode 100644 index c9548a2..0000000 --- a/spec/spec_helper_system.rb +++ /dev/null @@ -1,28 +0,0 @@ -require 'rspec-system/spec_helper' -require 'rspec-system-puppet/helpers' -require 'rspec-system-serverspec/helpers' - -include RSpecSystemPuppet::Helpers - -RSpec.configure do |c| - # Project root - proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..')) - - # Enable colour - c.tty = true - - c.include RSpecSystemPuppet::Helpers - - # This is where we 'setup' the nodes before running our tests - c.before :suite do - # Install puppet - puppet_install - - # Install modules and dependencies - puppet_module_install(:source => proj_root, :module_name => 'selenium') - shell('puppet module install puppetlabs-stdlib') - shell('puppet module install maestrodev-wget') - shell('puppet module install rodjek-logrotate') - shell('puppet module install puppetlabs-java') - end -end diff --git a/spec/classes/selenium_hub_spec.rb b/spec/unit/classes/selenium_hub_spec.rb similarity index 100% rename from spec/classes/selenium_hub_spec.rb rename to spec/unit/classes/selenium_hub_spec.rb diff --git a/spec/classes/selenium_node_spec.rb b/spec/unit/classes/selenium_node_spec.rb similarity index 100% rename from spec/classes/selenium_node_spec.rb rename to spec/unit/classes/selenium_node_spec.rb diff --git a/spec/classes/selenium_params_spec.rb b/spec/unit/classes/selenium_params_spec.rb similarity index 100% rename from spec/classes/selenium_params_spec.rb rename to spec/unit/classes/selenium_params_spec.rb diff --git a/spec/classes/selenium_server_spec.rb b/spec/unit/classes/selenium_server_spec.rb similarity index 100% rename from spec/classes/selenium_server_spec.rb rename to spec/unit/classes/selenium_server_spec.rb diff --git a/spec/classes/selenium_spec.rb b/spec/unit/classes/selenium_spec.rb similarity index 100% rename from spec/classes/selenium_spec.rb rename to spec/unit/classes/selenium_spec.rb diff --git a/spec/defines/selenium_config_spec.rb b/spec/unit/defines/selenium_config_spec.rb similarity index 100% rename from spec/defines/selenium_config_spec.rb rename to spec/unit/defines/selenium_config_spec.rb