[rackspace] wrapping test blocks around test helpers to prevent unexpected shindo exceptions

This commit is contained in:
Kyle Rames 2013-10-30 14:05:54 -05:00
parent 709e5ecd5f
commit 68113cb3ee
1 changed files with 31 additions and 25 deletions

View File

@ -42,24 +42,28 @@ module Shindo
def wait_for_server_deletion(server)
return if Fog.mocking?
begin
@instance.wait_for { state = 'DELETED' }
rescue Fog::Compute::RackspaceV2::NotFound => e
# do nothing
tests('wait_for_server_deletion') do
begin
server.wait_for { state = 'DELETED' }
rescue Fog::Compute::RackspaceV2::NotFound => e
# do nothing
end
end
end
def wait_for_server_state(service, server_id, state, error_states=nil)
current_state = nil
until current_state == state
current_state = service.get_server(server_id).body['server']['status']
if error_states
error_states = Array(error_states)
raise "ERROR! Server should have transitioned to '#{state}' not '#{current_state}'" if error_states.include?(current_state)
tests("wait_for_server_state('#{state}')") do
current_state = nil
until current_state == state
current_state = service.get_server(server_id).body['server']['status']
if error_states
error_states = Array(error_states)
raise "ERROR! Server should have transitioned to '#{state}' not '#{current_state}'" if error_states.include?(current_state)
end
sleep 10 unless Fog.mocking?
end
sleep 10 unless Fog.mocking?
sleep 30 unless Fog.mocking?
end
sleep 30 unless Fog.mocking?
end
def rackspace_test_image_id(service)
@ -74,21 +78,23 @@ module Shindo
# After a server has been successfully deleted they are still being reported as attached to a cloud network
# causing delete calls to fail. This method attempts to address that.
def delete_test_network(network)
return false if Fog.mocking? || network.nil?
attempt = 0
begin
network.destroy
rescue Fog::Compute::RackspaceV2::ServiceError => e
if attempt == 3
Fog::Logger.warning "Unable to delete #{network.label}"
return false
tests('delete_test_network') do
return false if Fog.mocking? || network.nil?
attempt = 0
begin
network.destroy
rescue Fog::Compute::RackspaceV2::ServiceError => e
if attempt == 3
Fog::Logger.warning "Unable to delete #{network.label}"
return false
end
Fog::Logger.warning "Network #{network.label} Delete Fail Attempt #{attempt}- #{e.inspect}"
attempt += 1
sleep 60
retry
end
Fog::Logger.warning "Network #{network.label} Delete Fail Attempt #{attempt}- #{e.inspect}"
attempt += 1
sleep 60
retry
return true
end
return true
end
end
end