Add unit tests for designate manifests
This patch implements missing unit tests for designate modules. Change-Id: I4fae54589a7bf954fab8428a2eba5e661ad7285e
This commit is contained in:
parent
e240091435
commit
2b245fda20
75
spec/classes/tripleo_profile_base_designate_api_spec.rb
Normal file
75
spec/classes/tripleo_profile_base_designate_api_spec.rb
Normal file
@ -0,0 +1,75 @@
|
||||
#
|
||||
# Copyright (C) 2020 Red Hat, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'tripleo::profile::base::designate::api' do
|
||||
shared_examples_for 'tripleo::profile::base::designate::api' do
|
||||
let(:pre_condition) do
|
||||
<<-eos
|
||||
class { 'tripleo::profile::base::designate':
|
||||
step => #{params[:step]},
|
||||
oslomsg_rpc_hosts => [ 'localhost' ],
|
||||
oslomsg_rpc_username => 'designate',
|
||||
oslomsg_rpc_password => 'foo'
|
||||
}
|
||||
class { 'tripleo::profile::base::designate::authtoken':
|
||||
step => #{params[:step]},
|
||||
}
|
||||
eos
|
||||
end
|
||||
|
||||
context 'with step less than 3' do
|
||||
let(:params) { {
|
||||
:step => 1,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::api')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::authtoken')
|
||||
is_expected.to_not contain_class('designate::api')
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 3' do
|
||||
let(:params) { {
|
||||
:step => 3,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::api')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::authtoken')
|
||||
is_expected.to contain_class('designate::api').with(
|
||||
:listen => '0.0.0.0:9001'
|
||||
)
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
on_supported_os.each do |os, facts|
|
||||
context "on #{os}" do
|
||||
let(:facts) do
|
||||
facts.merge({ :hostname => 'node.example.com' })
|
||||
end
|
||||
|
||||
it_behaves_like 'tripleo::profile::base::designate::api'
|
||||
end
|
||||
end
|
||||
end
|
142
spec/classes/tripleo_profile_base_designate_central_spec.rb
Normal file
142
spec/classes/tripleo_profile_base_designate_central_spec.rb
Normal file
@ -0,0 +1,142 @@
|
||||
#
|
||||
# Copyright (C) 2020 Red Hat, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'tripleo::profile::base::designate::central' do
|
||||
shared_examples_for 'tripleo::profile::base::designate::central' do
|
||||
let(:pre_condition) do
|
||||
<<-eos
|
||||
class { 'tripleo::profile::base::designate':
|
||||
step => #{params[:step]},
|
||||
oslomsg_rpc_hosts => [ 'localhost' ],
|
||||
oslomsg_rpc_username => 'designate',
|
||||
oslomsg_rpc_password => 'foo'
|
||||
}
|
||||
class { 'tripleo::profile::base::designate::authtoken':
|
||||
step => #{params[:step]},
|
||||
}
|
||||
eos
|
||||
end
|
||||
|
||||
context 'with step less than 3' do
|
||||
let(:params) { {
|
||||
:step => 1,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::central')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to_not contain_class('designate::db')
|
||||
is_expected.to_not contain_class('designate::central')
|
||||
is_expected.to_not contain_class('designate::quota')
|
||||
is_expected.to contain_file('designate pools').with(
|
||||
:path => '/etc/designate/pools.yaml',
|
||||
)
|
||||
is_expected.to_not contain_exec('pool update')
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 3 on bootstrap node' do
|
||||
let(:params) { {
|
||||
:step => 3,
|
||||
:bootstrap_node => 'node.example.com',
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::central')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to contain_class('designate::db').with(:sync_db => true)
|
||||
is_expected.to contain_class('designate::central')
|
||||
is_expected.to contain_class('designate::quota')
|
||||
is_expected.to contain_file('designate pools')
|
||||
is_expected.to_not contain_exec('pool update')
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 3 not on bootstrap node' do
|
||||
let(:params) { {
|
||||
:step => 3,
|
||||
:bootstrap_node => 'other.example.com',
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::central')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to_not contain_class('designate::db')
|
||||
is_expected.to_not contain_class('designate::central')
|
||||
is_expected.to_not contain_class('designate::quota')
|
||||
is_expected.to contain_file('designate pools')
|
||||
is_expected.to_not contain_exec('pool update')
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 4 not on bootstrap node' do
|
||||
let(:params) { {
|
||||
:step => 4,
|
||||
:bootstrap_node => 'other.example.com',
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::central')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to contain_class('designate::db').with(
|
||||
:sync_db => false
|
||||
)
|
||||
is_expected.to contain_class('designate::central')
|
||||
is_expected.to contain_class('designate::quota')
|
||||
is_expected.to contain_file('designate pools')
|
||||
is_expected.to_not contain_exec('pool update')
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 5 on bootstrap node' do
|
||||
let(:params) { {
|
||||
:step => 5,
|
||||
:bootstrap_node => 'node.example.com',
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_exec('pool update').with(
|
||||
:command => '/bin/designate-manage pool update',
|
||||
:user => 'designate'
|
||||
)
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 5 not on bootstrap node' do
|
||||
let(:params) { {
|
||||
:step => 5,
|
||||
:bootstrap_node => 'other.example.com',
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to_not contain_exec('pool update')
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
on_supported_os.each do |os, facts|
|
||||
context "on #{os}" do
|
||||
let(:facts) do
|
||||
facts.merge({ :hostname => 'node.example.com' })
|
||||
end
|
||||
|
||||
it_behaves_like 'tripleo::profile::base::designate::central'
|
||||
end
|
||||
end
|
||||
end
|
67
spec/classes/tripleo_profile_base_designate_mdns_spec.rb
Normal file
67
spec/classes/tripleo_profile_base_designate_mdns_spec.rb
Normal file
@ -0,0 +1,67 @@
|
||||
#
|
||||
# Copyright (C) 2020 Red Hat, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'tripleo::profile::base::designate::mdns' do
|
||||
shared_examples_for 'tripleo::profile::base::designate::mdns' do
|
||||
let(:pre_condition) do
|
||||
<<-eos
|
||||
class { 'tripleo::profile::base::designate':
|
||||
step => #{params[:step]},
|
||||
oslomsg_rpc_hosts => [ 'localhost' ],
|
||||
oslomsg_rpc_username => 'designate',
|
||||
oslomsg_rpc_password => 'foo'
|
||||
}
|
||||
eos
|
||||
end
|
||||
|
||||
context 'with step less than 4' do
|
||||
let(:params) { {
|
||||
:step => 1,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::mdns')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to_not contain_class('designate::mdns')
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 4' do
|
||||
let(:params) { {
|
||||
:step => 4,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::mdns')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to contain_class('designate::mdns')
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
on_supported_os.each do |os, facts|
|
||||
context "on #{os}" do
|
||||
let(:facts) do
|
||||
facts.merge({ :hostname => 'node.example.com' })
|
||||
end
|
||||
|
||||
it_behaves_like 'tripleo::profile::base::designate::mdns'
|
||||
end
|
||||
end
|
||||
end
|
67
spec/classes/tripleo_profile_base_designate_producer_spec.rb
Normal file
67
spec/classes/tripleo_profile_base_designate_producer_spec.rb
Normal file
@ -0,0 +1,67 @@
|
||||
#
|
||||
# Copyright (C) 2020 Red Hat, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'tripleo::profile::base::designate::producer' do
|
||||
shared_examples_for 'tripleo::profile::base::designate::producer' do
|
||||
let(:pre_condition) do
|
||||
<<-eos
|
||||
class { 'tripleo::profile::base::designate':
|
||||
step => #{params[:step]},
|
||||
oslomsg_rpc_hosts => [ 'localhost' ],
|
||||
oslomsg_rpc_username => 'designate',
|
||||
oslomsg_rpc_password => 'foo'
|
||||
}
|
||||
eos
|
||||
end
|
||||
|
||||
context 'with step less than 4' do
|
||||
let(:params) { {
|
||||
:step => 1,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::producer')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to_not contain_class('designate::producer')
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 4' do
|
||||
let(:params) { {
|
||||
:step => 4,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::producer')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to contain_class('designate::producer')
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
on_supported_os.each do |os, facts|
|
||||
context "on #{os}" do
|
||||
let(:facts) do
|
||||
facts.merge({ :hostname => 'node.example.com' })
|
||||
end
|
||||
|
||||
it_behaves_like 'tripleo::profile::base::designate::producer'
|
||||
end
|
||||
end
|
||||
end
|
67
spec/classes/tripleo_profile_base_designate_sink_spec.rb
Normal file
67
spec/classes/tripleo_profile_base_designate_sink_spec.rb
Normal file
@ -0,0 +1,67 @@
|
||||
#
|
||||
# Copyright (C) 2020 Red Hat, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'tripleo::profile::base::designate::sink' do
|
||||
shared_examples_for 'tripleo::profile::base::designate::sink' do
|
||||
let(:pre_condition) do
|
||||
<<-eos
|
||||
class { 'tripleo::profile::base::designate':
|
||||
step => #{params[:step]},
|
||||
oslomsg_rpc_hosts => [ 'localhost' ],
|
||||
oslomsg_rpc_username => 'designate',
|
||||
oslomsg_rpc_password => 'foo'
|
||||
}
|
||||
eos
|
||||
end
|
||||
|
||||
context 'with step less than 4' do
|
||||
let(:params) { {
|
||||
:step => 1,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::sink')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to_not contain_class('designate::sink')
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 4' do
|
||||
let(:params) { {
|
||||
:step => 4,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::sink')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to contain_class('designate::sink')
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
on_supported_os.each do |os, facts|
|
||||
context "on #{os}" do
|
||||
let(:facts) do
|
||||
facts.merge({ :hostname => 'node.example.com' })
|
||||
end
|
||||
|
||||
it_behaves_like 'tripleo::profile::base::designate::sink'
|
||||
end
|
||||
end
|
||||
end
|
69
spec/classes/tripleo_profile_base_designate_spec.rb
Normal file
69
spec/classes/tripleo_profile_base_designate_spec.rb
Normal file
@ -0,0 +1,69 @@
|
||||
#
|
||||
# Copyright (C) 2020 Red Hat, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'tripleo::profile::base::designate' do
|
||||
shared_examples_for 'tripleo::profile::base::designate' do
|
||||
|
||||
context 'with step less than 3' do
|
||||
let(:params) { {
|
||||
:step => 1,
|
||||
:oslomsg_rpc_hosts => [ 'localhost' ],
|
||||
:oslomsg_rpc_password => 'foo'
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to_not contain_class('designate')
|
||||
is_expected.to_not contain_class('designate::config')
|
||||
is_expected.to_not contain_class('designate::logging')
|
||||
is_expected.to_not contain_class('designate::backend::bind9')
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 3' do
|
||||
let(:params) { {
|
||||
:step => 3,
|
||||
:oslomsg_rpc_hosts => [ 'localhost' ],
|
||||
:oslomsg_rpc_username => 'designate',
|
||||
:oslomsg_rpc_password => 'foo',
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to contain_class('designate').with(
|
||||
:default_transport_url => 'rabbit://designate:foo@localhost:5672/?ssl=0'
|
||||
)
|
||||
is_expected.to contain_class('designate::config')
|
||||
is_expected.to contain_class('designate::logging')
|
||||
is_expected.to contain_class('designate::backend::bind9')
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
on_supported_os.each do |os, facts|
|
||||
context "on #{os}" do
|
||||
let(:facts) do
|
||||
facts.merge({ :hostname => 'node.example.com' })
|
||||
end
|
||||
|
||||
it_behaves_like 'tripleo::profile::base::designate'
|
||||
end
|
||||
end
|
||||
end
|
69
spec/classes/tripleo_profile_base_designate_worker_spec.rb
Normal file
69
spec/classes/tripleo_profile_base_designate_worker_spec.rb
Normal file
@ -0,0 +1,69 @@
|
||||
#
|
||||
# Copyright (C) 2020 Red Hat, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'tripleo::profile::base::designate::worker' do
|
||||
shared_examples_for 'tripleo::profile::base::designate::worker' do
|
||||
let(:pre_condition) do
|
||||
<<-eos
|
||||
class { 'tripleo::profile::base::designate':
|
||||
step => #{params[:step]},
|
||||
oslomsg_rpc_hosts => [ 'localhost' ],
|
||||
oslomsg_rpc_username => 'designate',
|
||||
oslomsg_rpc_password => 'foo'
|
||||
}
|
||||
eos
|
||||
end
|
||||
|
||||
context 'with step less than 4' do
|
||||
let(:params) { {
|
||||
:step => 1,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::worker')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to_not contain_class('designate::worker')
|
||||
is_expected.to_not contain_file('designate rndc key')
|
||||
}
|
||||
end
|
||||
|
||||
context 'with step 4' do
|
||||
let(:params) { {
|
||||
:step => 4,
|
||||
} }
|
||||
|
||||
it {
|
||||
is_expected.to contain_class('tripleo::profile::base::designate::worker')
|
||||
is_expected.to contain_class('tripleo::profile::base::designate')
|
||||
is_expected.to contain_class('designate::worker')
|
||||
is_expected.to_not contain_file('designate rndc key')
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
on_supported_os.each do |os, facts|
|
||||
context "on #{os}" do
|
||||
let(:facts) do
|
||||
facts.merge({ :hostname => 'node.example.com' })
|
||||
end
|
||||
|
||||
it_behaves_like 'tripleo::profile::base::designate::worker'
|
||||
end
|
||||
end
|
||||
end
|
3
spec/fixtures/hieradata/default.yaml
vendored
3
spec/fixtures/hieradata/default.yaml
vendored
@ -39,8 +39,9 @@ cinder::backup::nfs::backup_share: '/mnt/backup'
|
||||
cinder::rabbit_password: 'password'
|
||||
cinder::keystone::authtoken::password: 'password'
|
||||
# designate related items
|
||||
designate_api_short_bootstrap_node_name: node
|
||||
designate_central_short_bootstrap_node_name: node
|
||||
designate::keystone::authtoken::password: 'password'
|
||||
designate::rabbit_password: 'password'
|
||||
# glance related items
|
||||
glance_api_short_bootstrap_node_name : node
|
||||
glance::api::authtoken::password: 'password'
|
||||
|
Loading…
Reference in New Issue
Block a user