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

70 lines
2.1 KiB
Ruby

require 'spec_helper_acceptance'
if hosts.length > 1
describe 'mongodb_replset resource' do
after :all do
# Have to drop the DB to disable replsets for further testing
on hosts, %{mongo local --verbose --eval 'db.dropDatabase()'}
pp = <<-EOS
class { 'mongodb::globals': }
-> class { 'mongodb::server':
ensure => purged,
}
if $::osfamily == 'RedHat' {
class { 'mongodb::client': }
}
EOS
apply_manifest_on(hosts.reverse, pp, :catch_failures => true)
end
it 'configures mongo on both nodes' do
pp = <<-EOS
class { 'mongodb::globals': }
-> class { 'mongodb::server':
bind_ip => '0.0.0.0',
replset => 'test',
}
if $::osfamily == 'RedHat' {
class { 'mongodb::client': }
}
EOS
apply_manifest_on(hosts.reverse, pp, :catch_failures => true)
apply_manifest_on(hosts.reverse, pp, :catch_changes => true)
end
it 'sets up the replset with puppet' do
pp = <<-EOS
mongodb_replset { 'test':
members => [#{hosts.collect{|x|"'#{x}:27017'"}.join(',')}],
}
EOS
apply_manifest_on(hosts_as('master'), pp, :catch_failures => true)
on(hosts_as('master'), 'mongo --quiet --eval "printjson(rs.conf())"') do |r|
expect(r.stdout).to match /#{hosts[0]}:27017/
expect(r.stdout).to match /#{hosts[1]}:27017/
end
end
it 'inserts data on the master' do
sleep(30)
on hosts_as('master'), %{mongo --verbose --eval 'db.test.save({name:"test1",value:"some value"})'}
end
it 'checks the data on the master' do
on hosts_as('master'), %{mongo --verbose --eval 'printjson(db.test.findOne({name:"test1"}))'} do |r|
expect(r.stdout).to match /some value/
end
end
it 'checks the data on the slave' do
sleep(10)
on hosts_as('slave'), %{mongo --verbose --eval 'rs.slaveOk(); printjson(db.test.findOne({name:"test1"}))'} do |r|
expect(r.stdout).to match /some value/
end
end
end
end