diff options
Diffstat (limited to 'spec/classes')
-rw-r--r-- | spec/classes/tripleo_haproxy_spec.rb | 115 | ||||
-rw-r--r-- | spec/classes/tripleo_profile_base_database_redis_spec.rb | 106 | ||||
-rw-r--r-- | spec/classes/tripleo_profile_base_gnocchi_api_spec.rb | 22 | ||||
-rw-r--r-- | spec/classes/tripleo_profile_base_kernel_spec.rb | 59 |
4 files changed, 282 insertions, 20 deletions
diff --git a/spec/classes/tripleo_haproxy_spec.rb b/spec/classes/tripleo_haproxy_spec.rb new file mode 100644 index 0000000..966729a --- /dev/null +++ b/spec/classes/tripleo_haproxy_spec.rb @@ -0,0 +1,115 @@ +# Copyright 2016 Red Hat, Inc. +# All Rights Reserved. +# +# 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::haproxy' do + + shared_examples_for 'tripleo::haproxy' do + let :params do { + :controller_virtual_ip => '10.1.0.1', + :public_virtual_ip => '192.168.0.1' + } + end + + describe "default settings" do + it 'should configure haproxy' do + is_expected.to contain_haproxy__listen('mysql').with( + :options => { + 'timeout client' => "90m", + 'timeout server' => "90m", + 'maxconn' => :undef + } + ) + end + end + + describe "set clustercheck" do + before :each do + params.merge!({ + :mysql_clustercheck => true, + }) + end + + it 'should configure haproxy with clustercheck' do + is_expected.to contain_haproxy__listen('mysql').with( + :options => { + 'timeout client' => "90m", + 'timeout server' => "90m", + 'option' => ["tcpka", "httpchk"], + 'timeout client' => "90m", + 'timeout server' => "90m", + 'stick-table' => "type ip size 1000", + 'stick' => "on dst", + 'maxconn' => :undef + } + ) + end + end + + describe "override maxconn with clustercheck" do + before :each do + params.merge!({ + :mysql_clustercheck => true, + :mysql_max_conn => 6500, + }) + end + + it 'should configure haproxy' do + is_expected.to contain_haproxy__listen('mysql').with( + :options => { + 'option' => ["tcpka", "httpchk"], + 'timeout client' => "90m", + 'timeout server' => "90m", + 'stick-table' => "type ip size 1000", + 'stick' => "on dst", + 'maxconn' => 6500 + } + ) + end + end + + describe "override maxconn without clustercheck" do + before :each do + params.merge!({ + :mysql_max_conn => 6500, + }) + end + + it 'should configure haproxy' do + is_expected.to contain_haproxy__listen('mysql').with( + :options => { + 'timeout client' => "90m", + 'timeout server' => "90m", + 'maxconn' => 6500 + } + ) + end + end + + end + + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts.merge({ }) + end + + it_behaves_like 'tripleo::haproxy' + end + end + +end
\ No newline at end of file diff --git a/spec/classes/tripleo_profile_base_database_redis_spec.rb b/spec/classes/tripleo_profile_base_database_redis_spec.rb new file mode 100644 index 0000000..8f94cc9 --- /dev/null +++ b/spec/classes/tripleo_profile_base_database_redis_spec.rb @@ -0,0 +1,106 @@ +# +# Copyright (C) 2017 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::database::redis' do + shared_examples_for 'tripleo::profile::base::database::redis' do + + context 'with step less than 2' do + let(:params) { { + :step => 1, + :bootstrap_nodeid => 'node.example.com', + :redis_node_ips => [] + } } + + it 'should do nothing' do + is_expected.to contain_class('tripleo::profile::base::database::redis') + is_expected.to_not contain_class('redis') + is_expected.to_not contain_class('redis::sentinel') + is_expected.to_not contain_class('tripleo::redis_notification') + end + end + + context 'with step 2 on bootstrap node' do + let(:params) { { + :step => 2, + :bootstrap_nodeid => 'node.example.com', + :redis_node_ips => ['10.0.0.1'] + } } + + it 'should configure redis' do + is_expected.to contain_class('tripleo::profile::base::database::redis') + is_expected.to contain_class('redis') + is_expected.to_not contain_class('redis::sentinel') + is_expected.to_not contain_class('tripleo::redis_notification') + end + end + + context 'with step 2 on bootstrap node with capital letters' do + let(:params) { { + :step => 2, + :bootstrap_nodeid => 'NODE.example.com', + :redis_node_ips => ['10.0.0.1'] + } } + + it 'should configure redis' do + is_expected.to contain_class('tripleo::profile::base::database::redis') + is_expected.to contain_class('redis').with(:slaveof => nil) + end + end + + context 'with step 2 not on bootstrap node' do + let(:params) { { + :step => 2, + :bootstrap_nodeid => 'othernode.example.com', + :redis_node_ips => ['10.0.0.1'] + } } + + it 'should configure redis' do + is_expected.to contain_class('tripleo::profile::base::database::redis') + is_expected.to contain_class('redis').with(:slaveof => "#{params[:bootstrap_nodeid]} 6379") + is_expected.to_not contain_class('redis::sentinel') + is_expected.to_not contain_class('tripleo::redis_notification') + end + end + + context 'with step 2 with multiple nodes' do + let(:params) { { + :step => 2, + :bootstrap_nodeid => 'othernode.example.com', + :redis_node_ips => ['10.0.0.1', '10.0.0.2'] + } } + + it 'should configure redis' do + is_expected.to contain_class('tripleo::profile::base::database::redis') + is_expected.to contain_class('redis').with(:slaveof => "#{params[:bootstrap_nodeid]} 6379") + is_expected.to contain_class('redis::sentinel') + is_expected.to contain_class('tripleo::redis_notification') + end + 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::database::redis' + end + end +end diff --git a/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb b/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb index 6c04e9d..90bdea0 100644 --- a/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb +++ b/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb @@ -36,9 +36,9 @@ describe 'tripleo::profile::base::gnocchi::api' do } end - context 'with step 3 on bootstrap' do + context 'with step 4 on bootstrap' do let(:params) { { - :step => 3, + :step => 4, :bootstrap_node => 'node.example.com', :gnocchi_redis_password => 'gnocchi', :redis_vip => '127.0.0.1' @@ -51,20 +51,6 @@ describe 'tripleo::profile::base::gnocchi::api' do } end - context 'with step 3' do - let(:params) { { - :step => 3, - :gnocchi_redis_password => 'gnocchi', - :redis_vip => '127.0.0.1' - } } - - it { - is_expected.to_not contain_class('gnocchi::db::sync') - is_expected.to contain_class('gnocchi::api') - is_expected.to contain_class('gnocchi::wsgi::apache') - } - end - context 'with step 4' do let(:params) { { :step => 4, @@ -129,10 +115,6 @@ describe 'tripleo::profile::base::gnocchi::api' do it { is_expected.to contain_class('gnocchi::api') is_expected.to contain_class('gnocchi::wsgi::apache') - is_expected.to contain_exec('run gnocchi upgrade with storage').with( - :command => 'gnocchi-upgrade --config-file=/etc/gnocchi/gnocchi.conf', - :path => ['/usr/bin', '/usr/sbin'] - ) } end end diff --git a/spec/classes/tripleo_profile_base_kernel_spec.rb b/spec/classes/tripleo_profile_base_kernel_spec.rb new file mode 100644 index 0000000..4c2aab2 --- /dev/null +++ b/spec/classes/tripleo_profile_base_kernel_spec.rb @@ -0,0 +1,59 @@ +# +# Copyright (C) 2017 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::kernel' do + + shared_examples_for 'tripleo::profile::base::kernel' do + context 'with kernel modules' do + let :params do + { + :module_list => { + 'nf_conntrack' => {}, + } + } + end + + it 'should load kernel module' do + is_expected.to contain_kmod__load('nf_conntrack') + end + end + context 'with sysctl settings' do + let :params do + { + :sysctl_settings => { + 'net.ipv4.tcp_keepalive_intvl' => { 'value' => '1'}, + } + } + end + + it 'should load kernel module' do + is_expected.to contain_sysctl__value('net.ipv4.tcp_keepalive_intvl') + end + end + end + + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) { + facts + } + + it_behaves_like 'tripleo::profile::base::kernel' + end + end +end |