summaryrefslogtreecommitdiff
path: root/spec/unit/util/retryaction_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/util/retryaction_spec.rb')
-rw-r--r--spec/unit/util/retryaction_spec.rb62
1 files changed, 62 insertions, 0 deletions
diff --git a/spec/unit/util/retryaction_spec.rb b/spec/unit/util/retryaction_spec.rb
new file mode 100644
index 000000000..90f8e8eb2
--- /dev/null
+++ b/spec/unit/util/retryaction_spec.rb
@@ -0,0 +1,62 @@
+#!/usr/bin/env rspec
+require 'spec_helper'
+
+require 'puppet/util/retryaction'
+
+describe Puppet::Util::RetryAction do
+ let (:exceptions) {{ Puppet::Error => 'Puppet Error Exception' }}
+
+ it 'should retry on any exception if no acceptable exceptions given' do
+ Puppet::Util::RetryAction.expects(:sleep).with( (((2 ** 1) -1) * 0.1) )
+ Puppet::Util::RetryAction.expects(:sleep).with( (((2 ** 2) -1) * 0.1) )
+
+ expect do
+ Puppet::Util::RetryAction.retry_action( :retries => 2 ) do
+ raise ArgumentError, 'Fake Failure'
+ end
+ end.to raise_exception(Puppet::Util::RetryAction::RetryException::RetriesExceeded)
+ end
+
+ it 'should retry on acceptable exceptions' do
+ Puppet::Util::RetryAction.expects(:sleep).with( (((2 ** 1) -1) * 0.1) )
+ Puppet::Util::RetryAction.expects(:sleep).with( (((2 ** 2) -1) * 0.1) )
+
+ expect do
+ Puppet::Util::RetryAction.retry_action( :retries => 2, :retry_exceptions => exceptions) do
+ raise Puppet::Error, 'Fake Failure'
+ end
+ end.to raise_exception(Puppet::Util::RetryAction::RetryException::RetriesExceeded)
+ end
+
+ it 'should not retry on unacceptable exceptions' do
+ Puppet::Util::RetryAction.expects(:sleep).never
+
+ expect do
+ Puppet::Util::RetryAction.retry_action( :retries => 2, :retry_exceptions => exceptions) do
+ raise ArgumentError
+ end
+ end.to raise_exception(ArgumentError)
+ end
+
+ it 'should succeed if nothing is raised' do
+ Puppet::Util::RetryAction.expects(:sleep).never
+
+ Puppet::Util::RetryAction.retry_action( :retries => 2) do
+ true
+ end
+ end
+
+ it 'should succeed if an expected exception is raised retried and succeeds' do
+ should_retry = nil
+ Puppet::Util::RetryAction.expects(:sleep).once
+
+ Puppet::Util::RetryAction.retry_action( :retries => 2, :retry_exceptions => exceptions) do
+ if should_retry
+ true
+ else
+ should_retry = true
+ raise Puppet::Error, 'Fake error'
+ end
+ end
+ end
+end