From 5e74fd3009bd81daea7c3798298daa429172a957 Mon Sep 17 00:00:00 2001 From: Tobias Urdin Date: Thu, 8 Nov 2018 11:00:48 +0100 Subject: [PATCH] Convert spec testing to rspec-puppet-facts Change-Id: Idfa63de05d32838d9e73a7e260e82a0c7e1f4a98 --- spec/classes/glare_backend_rbd_spec.rb | 152 ++++++++++++++----------- 1 file changed, 88 insertions(+), 64 deletions(-) diff --git a/spec/classes/glare_backend_rbd_spec.rb b/spec/classes/glare_backend_rbd_spec.rb index f4833a1..5c792ac 100644 --- a/spec/classes/glare_backend_rbd_spec.rb +++ b/spec/classes/glare_backend_rbd_spec.rb @@ -1,83 +1,107 @@ require 'spec_helper' describe 'glare::backend::rbd' do - let (:facts) do - OSDefaults.get_facts({ - :osfamily => 'Debian', - }) - end + shared_examples 'glare::backend::rbd' do + context 'with default params' do + it { should contain_glare_config('glance_store/default_store').with_value('rbd') } + it { should contain_glare_config('glance_store/rbd_store_pool').with_value('') } + it { should contain_glare_config('glance_store/rbd_store_ceph_conf').with_value('') } + it { should contain_glare_config('glance_store/rbd_store_chunk_size').with_value('') } + it { should contain_glare_config('glance_store/rados_connect_timeout').with_value('')} + it { should contain_glare_config('glance_store/rbd_store_user').with_value('')} - describe 'with default params' do - - it { is_expected.to contain_glare_config('glance_store/default_store').with_value('rbd') } - it { is_expected.to contain_glare_config('glance_store/rbd_store_pool').with_value('') } - it { is_expected.to contain_glare_config('glance_store/rbd_store_ceph_conf').with_value('') } - it { is_expected.to contain_glare_config('glance_store/rbd_store_chunk_size').with_value('') } - it { is_expected.to contain_glare_config('glance_store/rados_connect_timeout').with_value('')} - it { is_expected.to contain_glare_config('glance_store/rbd_store_user').with_value('')} - it { is_expected.to contain_package('python-ceph').with( - :name => 'python-ceph', + it { should contain_package('python-ceph').with( + :name => platform_params[:pyceph_package_name], :ensure => 'present' - ) - } - end - - describe 'when passing params' do - let :params do - { - :rbd_store_user => 'user', - :rbd_store_chunk_size => '2', - :package_ensure => 'latest', - :rados_connect_timeout => '30', - } + )} end - it { is_expected.to contain_glare_config('glance_store/rbd_store_user').with_value('user') } - it { is_expected.to contain_glare_config('glance_store/rbd_store_chunk_size').with_value('2') } - it { is_expected.to contain_glare_config('glance_store/rados_connect_timeout').with_value('30')} - it { is_expected.to contain_package('python-ceph').with( - :name => 'python-ceph', + + context 'when passing params' do + let :params do + { + :rbd_store_user => 'user', + :rbd_store_chunk_size => '2', + :package_ensure => 'latest', + :rados_connect_timeout => '30', + } + end + + it { should contain_glare_config('glance_store/rbd_store_user').with_value('user') } + it { should contain_glare_config('glance_store/rbd_store_chunk_size').with_value('2') } + it { should contain_glare_config('glance_store/rados_connect_timeout').with_value('30')} + + it { should contain_package('python-ceph').with( + :name => platform_params[:pyceph_package_name], :ensure => 'latest' - ) - } - end - - describe 'with not managed ceph package' do - let :params do - { - :package_manage => false - } + )} end - it 'does not configure ceph package' do - is_expected.not_to contain_package('python-ceph').with( - :name => 'python-ceph') + context 'with not managed ceph package' do + let :params do + { + :package_manage => false + } + end + + it { should_not contain_package('python-ceph') } end end - describe 'package on RedHat platform el6' do - let :facts do - OSDefaults.get_facts({ - :osfamily => 'RedHat', - :operatingsystemrelease => '6.5', - }) - end - it { is_expected.to contain_package('python-ceph').with( + shared_examples 'glare::backend::rbd on RedHat' do + context 'with el6' do + before do + facts.merge!( :operatingsystemrelease => '6.5' ) + end + + it { should contain_package('python-ceph').with( :name => 'python-ceph', :ensure => 'present' - ) - } - end - describe 'package on RedHat platform el7' do - let :facts do - OSDefaults.get_facts({ - :osfamily => 'RedHat', - :operatingsystemrelease => '7.0' - }) + )} end - it { is_expected.to contain_package('python-ceph').with( + + context 'with el7' do + before do + facts.merge!( :operatingsystemrelease => '7.0' ) + end + + it { should contain_package('python-ceph').with( :name => 'python-rbd', :ensure => 'present' - ) - } + )} + end + end + + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + if facts[:os_package_type] == 'debian' then + pyceph_pkg = 'python3-ceph' + else + pyceph_pkg = 'python-ceph' + end + { + :pyceph_package_name => pyceph_pkg, + } + when 'RedHat' + { + :pyceph_package_name => 'python-rbd', + } + end + end + + it_behaves_like 'glare::backend::rbd' + + if facts[:osfamily] == 'RedHat' + it_behaves_like 'glare::backend::rbd on RedHat' + end + end end end