]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/rabbitmq/spec/acceptance/zz281_spec.rb
move to puppetlabs rabbitmq module
[dsa-puppet.git] / 3rdparty / modules / rabbitmq / spec / acceptance / zz281_spec.rb
1 require 'spec_helper_acceptance'
2 #
3 # beacuse of some serious issues with upgrading and downgrading rabbitmq on RedHat,
4 # we need to run all of the 2.8.1 tests last.
5 #
6 # NOTE that this is only tested on RedHat and probably only works there. But I can't seem
7 # to get 'confine' to work...
8 #
9
10 describe 'rabbitmq class with 2.8.1:' do
11   case fact('osfamily')
12   when 'RedHat'
13     package_name   = 'rabbitmq-server'
14     service_name   = 'rabbitmq-server'
15     package_source = "http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.1/rabbitmq-server-2.8.1-1.noarch.rpm"
16     package_ensure = '2.8.1-1'
17   when 'SUSE'
18     package_name   = 'rabbitmq-server'
19     service_name   = 'rabbitmq-server'
20     package_source = "http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.1/rabbitmq-server-2.8.1-1.noarch.rpm"
21     package_ensure = '2.8.1-1'
22   when 'Debian'
23     package_name   = 'rabbitmq-server'
24     service_name   = 'rabbitmq-server'
25     package_source = ''
26     package_ensure = '2.8.1'
27   when 'Archlinux'
28     package_name   = 'rabbitmq'
29     service_name   = 'rabbitmq'
30     package_source = ''
31     package_ensure = '2.8.1'
32   end
33
34   context "default class inclusion" do
35     it 'should run successfully' do
36       pp = <<-EOS
37       class { 'rabbitmq':
38         version          => '2.8.1-1',
39         package_source   => '#{package_source}',
40         package_ensure   => '#{package_ensure}',
41         package_provider => 'rpm',
42         management_port  => '55672',
43       }
44       if $::osfamily == 'RedHat' {
45         class { 'erlang': epel_enable => true}
46         Class['erlang'] -> Class['rabbitmq']
47       }
48       EOS
49
50       # clean up previous 3.x install - can't be ungraded cleanly via RPM
51       shell('service rabbitmq-server stop')
52       shell('yum -y erase rabbitmq-server')
53       shell('rm -Rf /var/lib/rabbitmq/mnesia /etc/rabbitmq /var/lib/rabbitmq/rabbitmqadmin')
54       # Apply twice to ensure no errors the second time.
55       apply_manifest(pp, :catch_failures => true)
56       expect(apply_manifest(pp, :catch_changes => true).exit_code).to be_zero
57       # DEBUG
58       shell('netstat -lntp')
59     end
60
61     describe command('rabbitmqctl status') do
62       its(:stdout) { should match /{rabbit,"RabbitMQ","2.8.1"}/ }
63     end
64
65     describe package(package_name) do
66       it { should be_installed }
67     end
68
69     describe service(service_name) do
70       it { should be_enabled }
71       it { should be_running }
72     end
73   end
74
75   context "disable and stop service" do
76     it 'should run successfully' do
77       pp = <<-EOS
78       class { 'rabbitmq':
79         version          => '2.8.1-1',
80         package_source   => '#{package_source}',
81         package_ensure   => '#{package_ensure}',
82         package_provider => 'rpm',
83         management_port  => '55672',
84         service_ensure   => 'stopped',
85         admin_enable     => false,
86       }
87       if $::osfamily == 'RedHat' {
88         class { 'erlang': epel_enable => true}
89         Class['erlang'] -> Class['rabbitmq']
90       }
91       EOS
92
93       apply_manifest(pp, :catch_failures => true)
94     end
95
96     describe service(service_name) do
97       it { should_not be_enabled }
98       it { should_not be_running }
99     end
100   end
101
102   context "service is unmanaged" do
103     it 'should run successfully' do
104       pp_pre = <<-EOS
105       class { 'rabbitmq':
106         version          => '2.8.1-1',
107         package_source   => '#{package_source}',
108         package_ensure   => '#{package_ensure}',
109         package_provider => 'rpm',
110         management_port  => '55672',
111       }
112       if $::osfamily == 'RedHat' {
113         class { 'erlang': epel_enable => true}
114         Class['erlang'] -> Class['rabbitmq']
115       }
116       EOS
117
118       pp = <<-EOS
119       class { 'rabbitmq':
120         service_manage => false,
121         service_ensure  => 'stopped',
122       }
123       if $::osfamily == 'RedHat' {
124         class { 'erlang': epel_enable => true}
125         Class['erlang'] -> Class['rabbitmq']
126       }
127       EOS
128
129       apply_manifest(pp_pre, :catch_failures => true)
130       apply_manifest(pp, :catch_failures => true)
131     end
132
133     describe service(service_name) do
134       it { should be_enabled }
135       it { should be_running }
136     end
137   end
138
139   context 'rabbitmqadmin' do
140     #confine :to, :platform => 'el-6-x86'
141
142     it 'should run successfully' do
143       pp = <<-EOS
144       class { 'rabbitmq':
145         admin_enable     => true,
146         service_manage   => true,
147         version          => '2.8.1-1',
148         package_source   => '#{package_source}',
149         package_ensure   => '#{package_ensure}',
150         package_provider => 'rpm',
151         management_port  => '55672',
152       }
153       if $::osfamily == 'RedHat' {
154         class { 'erlang': epel_enable => true}
155         Class['erlang'] -> Class['rabbitmq']
156       }
157       EOS
158
159       shell('rm -f /var/lib/rabbitmq/rabbitmqadmin')
160       apply_manifest(pp, :catch_failures => true)
161     end
162
163     # since serverspec (used by beaker-rspec) can only tell present/absent for packages
164     describe file('/var/lib/rabbitmq/rabbitmqadmin') do
165       it { should be_file }
166     end
167     
168     describe command('/usr/local/bin/rabbitmqadmin --help') do
169       its(:exit_status) { should eq 0 }
170     end
171
172   end
173
174   context 'rabbitmqadmin with specified default credentials' do
175
176     it 'should run successfully' do
177       # make sure credential change takes effect before admin_enable
178       pp = <<-EOS
179       class { 'rabbitmq':
180         admin_enable     => true,
181         service_manage   => true,
182         version          => '2.8.1-1',
183         package_source   => '#{package_source}',
184         package_ensure   => '#{package_ensure}',
185         package_provider => 'rpm',
186         management_port  => '55672',
187         default_user     => 'foobar',
188         default_pass     => 'bazblam',
189       }
190       if $::osfamily == 'RedHat' {
191         class { 'erlang': epel_enable => true}
192         Class['erlang'] -> Class['rabbitmq']
193       }
194       EOS
195
196       # next 3 lines - see MODULES-1085
197       shell('service rabbitmq-server stop')
198       shell('rm -Rf /var/lib/rabbitmq/mnesia /var/lib/rabbitmq/rabbitmqadmin')
199       apply_manifest(pp, :catch_failures => true)
200     end
201
202     # since serverspec (used by beaker-rspec) can only tell present/absent for packages
203     describe file('/var/lib/rabbitmq/rabbitmqadmin') do
204       it { should be_file }
205     end
206
207     describe command('/usr/local/bin/rabbitmqadmin --help') do
208       its(:exit_status) { should eq 0 }
209     end
210
211   end
212
213 end