Skip to content

Commit

Permalink
Fix replset acceptance testing
Browse files Browse the repository at this point in the history
  • Loading branch information
h-haaks committed Apr 11, 2024
1 parent 5de468c commit 3f2ef3b
Show file tree
Hide file tree
Showing 2 changed files with 153 additions and 122 deletions.
27 changes: 27 additions & 0 deletions spec/acceptance/nodesets/centos-8-replset.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
HOSTS:
node-1:
docker_cmd:
- "/sbin/init"
docker_image_commands:
- cp /bin/true /sbin/agetty
- dnf install -y cronie crontabs initscripts iproute openssl wget which glibc-langpack-en
hostname
image: quay.io/centos/centos:stream8
platform: el-8-x86_64
hypervisor: docker
roles:
- master
node-2:
docker_cmd:
- "/sbin/init"
docker_image_commands:
- cp /bin/true /sbin/agetty
- dnf install -y cronie crontabs initscripts iproute openssl wget which glibc-langpack-en
hostname
image: quay.io/centos/centos:stream8
platform: el-8-x86_64
hypervisor: docker
roles:
- slave
CONFIG: {}
248 changes: 126 additions & 122 deletions spec/acceptance/replset_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,36 @@

if hosts.length > 1 && supported_version?(default[:platform], repo_version)
describe 'mongodb_replset resource' do
after :all do
# Have to drop the DB to disable replsets for further testing
on hosts, %{mongosh local --verbose --eval 'db.dropDatabase()'}

pp = <<-EOS
class { 'mongodb::globals':
#{repo_ver_param}
}
-> class { 'mongodb::server':
ensure => absent,
package_ensure => purged,
service_ensure => stopped
}
if $::osfamily == 'RedHat' {
class { 'mongodb::client':
ensure => purged
}
}
EOS

apply_manifest_on(hosts.reverse, pp, catch_failures: true)
end
# after :all do
# # # Have to drop the DB to disable replsets for further testing
# # on hosts, %{mongosh local --verbose --eval 'db.dropDatabase()'}

# pp = <<-EOS
# class { 'mongodb::globals':
# #{repo_ver_param}
# }
# -> class { 'mongodb::server':
# ensure => absent,
# package_ensure => purged,
# service_ensure => stopped
# }
# if $::osfamily == 'RedHat' {
# class { 'mongodb::client':
# ensure => purged
# }
# }
# EOS

# apply_manifest_on(hosts.reverse, pp, catch_failures: true)
# end

it 'configures mongo on both nodes' do
pp = <<-EOS
class { 'mongodb::globals':
#{repo_ver_param}
}
-> class { 'mongodb::server':
bind_ip => '0.0.0.0',
bind_ip => ['0.0.0.0'],
replset => 'test',
}
if $::osfamily == 'RedHat' {
Expand All @@ -59,121 +59,125 @@ class { 'mongodb::client': }
expect(r.stdout).to match %r{#{hosts[0]}:27017}
expect(r.stdout).to match %r{#{hosts[1]}:27017}
end
end

it 'inserts data on the master' do
sleep(30)
on hosts_as('master'), %{mongosh --verbose --eval 'db.test.save({name:"test1",value:"some value"})'}
end

it 'checks the data on the master' do
on hosts_as('master'), %{mongosh --verbose --eval 'EJSON.stringify(db.test.findOne({name:"test1"}))'} do |r|
expect(r.stdout).to match %r{some value}
end
end

it 'checks the data on the slave' do
sleep(10)
on hosts_as('slave'), %{mongosh --verbose --eval 'db.getMongo().setReadPref("primaryPreferred"); EJSON.stringify(db.test.findOne({name:"test1"}))'} do |r|
expect(r.stdout).to match %r{some value}
end
end
end

describe 'mongodb_replset resource with auth => true' do
after :all do
# Have to drop the DB to disable replsets for further testing
on hosts, %{mongosh local --verbose --eval 'db.dropDatabase()'}

pp = <<-EOS
class { 'mongodb::globals':
#{repo_ver_param}
}
-> class { 'mongodb::server':
ensure => absent,
package_ensure => purged,
service_ensure => stopped
}
if $::osfamily == 'RedHat' {
class { 'mongodb::client':
ensure => purged
}
}
EOS

apply_manifest_on(hosts.reverse, pp, catch_failures: true)
end

it 'configures mongo on both nodes' do
pp = <<~EOS
class { 'mongodb::globals':
#{repo_ver_param}
} ->
class { 'mongodb::server':
admin_username => 'admin',
admin_password => 'password',
auth => true,
bind_ip => '0.0.0.0',
replset => 'test',
keyfile => '/var/lib/mongodb/mongodb-keyfile',
key => '+dxlTrury7xtD0FRqFf3YWGnKqWAtlyauuemxuYuyz9POPUuX1Uj3chGU8MFMHa7
UxASqex7NLMALQXHL+Th4T3dyb6kMZD7KiMcJObO4M+JLiX9drcTiifsDEgGMi7G
vYn3pWSm5TTDrHJw7RNWfMHw3sHk0muGQcO+0dWv3sDJ6SiU8yOKRtYcTEA15GbP
ReDZuHFy1T1qhk5NIt6pTtPGsZKSm2wAWIOa2f2IXvpeQHhjxP8aDFb3fQaCAqOD
R7hrimqq0Nickfe8RLA89iPXyadr/YeNBB7w7rySatQBzwIbBUVGNNA5cxCkwyx9
E5of3xi7GL9xNxhQ8l0JEpofd4H0y0TOfFDIEjc7cOnYlKAHzBgog4OcFSILgUaF
kHuTMtv0pj+MMkW2HkeXETNII9XE1+JiZgHY08G7yFEJy87ttUoeKmpbI6spFz5U
4K0amj+N6SOwXaS8uwp6kCqay0ERJLnw+7dKNKZIZdGCrrBxcZ7wmR/wLYrxvHhZ
QpeXTxgD5ebwCR0cf3Xnb5ql5G/HHKZDq8LTFHwELNh23URGPY7K7uK+IF6jSEhq
V2H3HnWV9teuuJ5he9BB/pLnyfjft6KUUqE9HbaGlX0f3YBk/0T3S2ESN4jnfRTQ
ysAKvQ6NasXkzqXktu8X4fS5QNqrFyqKBZSWxttfJBKXnT0TxamCKLRx4AgQglYo
3KRoyfxXx6G+AjP1frDJxFAFEIgEFqRk/FFuT/y9LpU+3cXYX1Gt6wEatgmnBM3K
g+Bybk5qHv1b7M8Tv9/I/BRXcpLHeIkMICMY8sVPGmP8xzL1L3i0cws8p5h0zPBa
YG/QX0BmltAni8owgymFuyJgvr/gaRX4WHbKFD+9nKpqJ3ocuVNuCDsxDqLsJEME
nc1ohyB0lNt8lHf1U00mtgDSV3fwo5LkwhRi6d+bDBTL/C6MZETMLdyCqDlTdUWG
YXIsJ0gYcu9XG3mx10LbdPJvxSMg'
}
if $::osfamily == 'RedHat' {
include 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':
auth_enabled => true,
members => [#{hosts.map { |x| "'#{x}:27017'" }.join(',')}],
before => Mongodb_user['admin']
}
EOS
apply_manifest_on(hosts_as('master'), pp, catch_failures: true)
apply_manifest_on(hosts_as('master'), pp, catch_changes: true)
on(hosts_as('master'), 'mongosh --quiet --eval "load(\'/root/.mongoshrc.js\');EJSON.stringify(rs.conf())"') do |r|
on(hosts_as('slave'), 'mongosh --quiet --eval "EJSON.stringify(rs.conf())"') do |r|
expect(r.stdout).to match %r{#{hosts[0]}:27017}
expect(r.stdout).to match %r{#{hosts[1]}:27017}
end
end

it 'inserts data on the master' do
sleep(30)
on hosts_as('master'), %{mongosh test --verbose --eval 'load("/root/.mongoshrc.js");db.dummyData.insert({"created_by_puppet": 1})'}
on hosts_as('master'), %{mongosh --verbose --eval 'db.test.insertOne({name:"test1",value:"some value"})'}
end

it 'checks the data on the master' do
on hosts_as('master'), %{mongosh test --verbose --eval 'load("/root/.mongoshrc.js");EJSON.stringify(db.dummyData.findOne())'} do |r|
expect(r.stdout).to match %r{created_by_puppet}
on hosts_as('master'), %{mongosh --verbose --eval 'EJSON.stringify(db.test.findOne({name:"test1"}))'} do |r|
expect(r.stdout).to match %r{some value}
end
end

it 'checks the data on the slave' do
sleep(10)
on hosts_as('slave'), %{mongosh test --verbose --eval 'load("/root/.mongoshrc.js");db.getMongo().setReadPref("primaryPreferred");EJSON.stringify(db.dummyData.findOne())'} do |r|
expect(r.stdout).to match %r{created_by_puppet}
on hosts_as('slave'), %{mongosh --verbose --eval 'EJSON.stringify(db.test.findOne({name:"test1"}))'} do |r|
expect(r.stdout).to match %r{some value}
end
end
end

# describe 'mongodb_replset resource with auth => true' do
# after :all do
# # Have to drop the DB to disable replsets for further testing
# on hosts, %{mongosh local --verbose --eval 'db.dropDatabase()'}

# pp = <<-EOS
# class { 'mongodb::globals':
# #{repo_ver_param}
# }
# -> class { 'mongodb::server':
# ensure => absent,
# package_ensure => purged,
# service_ensure => stopped
# }
# if $::osfamily == 'RedHat' {
# class { 'mongodb::client':
# ensure => purged
# }
# }
# EOS

# apply_manifest_on(hosts.reverse, pp, catch_failures: true)
# end

# it 'configures mongo on both nodes' do
# pp = <<~EOS
# class { 'mongodb::globals':
# #{repo_ver_param}
# } ->
# class { 'mongodb::server':
# admin_username => 'admin',
# admin_password => 'password',
# auth => true,
# bind_ip => '0.0.0.0',
# replset => 'test',
# keyfile => '/var/lib/mongodb/mongodb-keyfile',
# key => '+dxlTrury7xtD0FRqFf3YWGnKqWAtlyauuemxuYuyz9POPUuX1Uj3chGU8MFMHa7
# UxASqex7NLMALQXHL+Th4T3dyb6kMZD7KiMcJObO4M+JLiX9drcTiifsDEgGMi7G
# vYn3pWSm5TTDrHJw7RNWfMHw3sHk0muGQcO+0dWv3sDJ6SiU8yOKRtYcTEA15GbP
# ReDZuHFy1T1qhk5NIt6pTtPGsZKSm2wAWIOa2f2IXvpeQHhjxP8aDFb3fQaCAqOD
# R7hrimqq0Nickfe8RLA89iPXyadr/YeNBB7w7rySatQBzwIbBUVGNNA5cxCkwyx9
# E5of3xi7GL9xNxhQ8l0JEpofd4H0y0TOfFDIEjc7cOnYlKAHzBgog4OcFSILgUaF
# kHuTMtv0pj+MMkW2HkeXETNII9XE1+JiZgHY08G7yFEJy87ttUoeKmpbI6spFz5U
# 4K0amj+N6SOwXaS8uwp6kCqay0ERJLnw+7dKNKZIZdGCrrBxcZ7wmR/wLYrxvHhZ
# QpeXTxgD5ebwCR0cf3Xnb5ql5G/HHKZDq8LTFHwELNh23URGPY7K7uK+IF6jSEhq
# V2H3HnWV9teuuJ5he9BB/pLnyfjft6KUUqE9HbaGlX0f3YBk/0T3S2ESN4jnfRTQ
# ysAKvQ6NasXkzqXktu8X4fS5QNqrFyqKBZSWxttfJBKXnT0TxamCKLRx4AgQglYo
# 3KRoyfxXx6G+AjP1frDJxFAFEIgEFqRk/FFuT/y9LpU+3cXYX1Gt6wEatgmnBM3K
# g+Bybk5qHv1b7M8Tv9/I/BRXcpLHeIkMICMY8sVPGmP8xzL1L3i0cws8p5h0zPBa
# YG/QX0BmltAni8owgymFuyJgvr/gaRX4WHbKFD+9nKpqJ3ocuVNuCDsxDqLsJEME
# nc1ohyB0lNt8lHf1U00mtgDSV3fwo5LkwhRi6d+bDBTL/C6MZETMLdyCqDlTdUWG
# YXIsJ0gYcu9XG3mx10LbdPJvxSMg'
# }
# if $::osfamily == 'RedHat' {
# include 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':
# auth_enabled => true,
# members => [#{hosts.map { |x| "'#{x}:27017'" }.join(',')}],
# before => Mongodb_user['admin']
# }
# EOS
# apply_manifest_on(hosts_as('master'), pp, catch_failures: true)
# apply_manifest_on(hosts_as('master'), pp, catch_changes: true)
# on(hosts_as('master'), 'mongosh --quiet --eval "load(\'/root/.mongoshrc.js\');EJSON.stringify(rs.conf())"') do |r|
# expect(r.stdout).to match %r{#{hosts[0]}:27017}
# expect(r.stdout).to match %r{#{hosts[1]}:27017}
# end
# end

# it 'inserts data on the master' do
# sleep(30)
# on hosts_as('master'), %{mongosh test --verbose --eval 'load("/root/.mongoshrc.js");db.dummyData.insert({"created_by_puppet": 1})'}
# end

# it 'checks the data on the master' do
# on hosts_as('master'), %{mongosh test --verbose --eval 'load("/root/.mongoshrc.js");EJSON.stringify(db.dummyData.findOne())'} do |r|
# expect(r.stdout).to match %r{created_by_puppet}
# end
# end

# it 'checks the data on the slave' do
# sleep(10)
# on hosts_as('slave'), %{mongosh test --verbose --eval 'load("/root/.mongoshrc.js");db.getMongo().setReadPref("primaryPreferred");EJSON.stringify(db.dummyData.findOne())'} do |r|
# expect(r.stdout).to match %r{created_by_puppet}
# end
# end
# end
end

0 comments on commit 3f2ef3b

Please sign in to comment.