phpservermon/puphpet/puppet/modules/mongodb/spec/acceptance/server_spec.rb

123 lines
3.4 KiB
Ruby

require 'spec_helper_acceptance'
describe 'mongodb::server class' do
shared_examples 'normal tests' do |tengen|
if tengen
case fact('osfamily')
when 'RedHat'
package_name = 'mongodb-org-server'
service_name = 'mongod'
config_file = '/etc/mongod.conf'
when 'Debian'
package_name = 'mongodbdb-org-10gen'
service_name = 'mongodb'
config_file = '/etc/mongodb.conf'
end
else
case fact('osfamily')
when 'RedHat'
package_name = 'mongodb-server'
service_name = 'mongod'
config_file = '/etc/mongodb.conf'
when 'Debian'
package_name = 'mongodb-server'
service_name = 'mongodb'
config_file = '/etc/mongodb.conf'
end
end
client_name = 'mongo --version'
context "default parameters with 10gen => #{tengen}" do
after :all do
if tengen
puts "XXX uninstalls mongodb because changing the port with tengen doesn't work because they have a crappy init script"
pp = <<-EOS
class {'mongodb::globals': manage_package_repo => #{tengen}, }
-> class { 'mongodb::server': ensure => absent, }
-> class { 'mongodb::client': ensure => absent, }
EOS
apply_manifest(pp, :catch_failures => true)
end
end
it 'should work with no errors' do
case fact('osfamily')
when 'RedHat'
pp = <<-EOS
class { 'mongodb::globals': manage_package_repo => #{tengen}, }
-> class { 'mongodb::server': }
-> class { 'mongodb::client': }
EOS
when 'Debian'
pp = <<-EOS
class { 'mongodb::globals': manage_package_repo => #{tengen}, }
-> class { 'mongodb::server': }
EOS
end
apply_manifest(pp, :catch_failures => true)
apply_manifest(pp, :catch_changes => true)
end
describe package(package_name) do
it { should be_installed }
end
describe file(config_file) do
it { should be_file }
end
describe service(service_name) do
it { should be_enabled }
it { should be_running }
end
describe port(27017) do
it do
sleep(20)
should be_listening
end
end
describe command(client_name) do
it do
should return_exit_status 0
end
end
end
context "test using custom port and 10gen => #{tengen}" do
it 'change port to 27018' do
pp = <<-EOS
class { 'mongodb::globals': manage_package_repo => #{tengen}, }
-> class { 'mongodb::server': port => 27018, }
EOS
apply_manifest(pp, :catch_failures => true)
apply_manifest(pp, :catch_changes => true)
end
describe port(27018) do
sleep(20)
it { sleep 5 ; should be_listening }
end
end
describe "uninstalling with 10gen => #{tengen}" do
it 'uninstalls mongodb' do
pp = <<-EOS
class {'mongodb::globals': manage_package_repo => #{tengen}, }
-> class { 'mongodb::server': ensure => absent, }
-> class { 'mongodb::client': ensure => absent, }
EOS
apply_manifest(pp, :catch_failures => true)
end
end
end
it_behaves_like 'normal tests', false
it_behaves_like 'normal tests', true
end