File tree Expand file tree Collapse file tree 4 files changed +29
-0
lines changed Expand file tree Collapse file tree 4 files changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -100,6 +100,7 @@ def execute(client)
100100 opencensus_begin_span
101101 begin
102102 Retriable . retriable tries : options . retries + 1 ,
103+ max_elapsed_time : options . max_elapsed_time ,
103104 base_interval : 1 ,
104105 multiplier : 2 ,
105106 on : RETRIABLE_ERRORS do |try |
Original file line number Diff line number Diff line change @@ -28,6 +28,7 @@ module Apis
2828 RequestOptions = Struct . new (
2929 :authorization ,
3030 :retries ,
31+ :max_elapsed_time ,
3132 :header ,
3233 :normalize_unicode ,
3334 :skip_serialization ,
@@ -66,6 +67,8 @@ class RequestOptions
6667 # @return [Signet::OAuth2::Client, #apply(Hash)] OAuth2 credentials.
6768 # @!attribute [rw] retries
6869 # @return [Fixnum] Number of times to retry requests on server error.
70+ # @!attribute [rw] max_elapsed_time
71+ # @return [Fixnum] Total time in seconds that requests are allowed to keep being retried.
6972 # @!attribute [rw] header
7073 # @return [Hash<String,String>] Additional HTTP headers to include in requests.
7174 # @!attribute [rw] normalize_unicode
@@ -106,6 +109,7 @@ def merge(options)
106109 ClientOptions . default . application_version = '0.0.0'
107110 ClientOptions . default . transparent_gzip_decompression = true
108111 RequestOptions . default . retries = 0
112+ RequestOptions . default . max_elapsed_time = 900
109113 RequestOptions . default . normalize_unicode = false
110114 RequestOptions . default . skip_serialization = false
111115 RequestOptions . default . skip_deserialization = false
Original file line number Diff line number Diff line change @@ -147,6 +147,18 @@ class DecryptResponse
147147 it 'should call block if present' do
148148 expect { |b | command . execute ( client , &b ) } . to yield_with_args ( 'Hello world' , nil )
149149 end
150+
151+ it 'should retry with max elapsed_time and retries' do
152+ expect ( Retriable ) . to receive ( :retriable ) . with (
153+ tries : Google ::Apis ::RequestOptions . default . retries + 1 ,
154+ max_elapsed_time : Google ::Apis ::RequestOptions . default . max_elapsed_time ,
155+ base_interval : 1 ,
156+ multiplier : 2 ,
157+ on : described_class ::RETRIABLE_ERRORS ) . and_call_original
158+ allow ( Retriable ) . to receive ( :retriable ) . and_call_original
159+
160+ command . execute ( client )
161+ end
150162 end
151163
152164 context ( 'with server errors' ) do
Original file line number Diff line number Diff line change 1717
1818RSpec . describe Google ::Apis ::RequestOptions do
1919 let ( :options ) { Google ::Apis ::RequestOptions . new }
20+ let ( :defaults ) { described_class . default }
2021
2122 it 'should not merge nil values' do
2223 options . retries = 1
3738 it 'should allow nil in merge' do
3839 expect ( options . merge ( nil ) ) . to be_an_instance_of ( Google ::Apis ::RequestOptions )
3940 end
41+
42+ it 'sets default values' do
43+ expect ( defaults . retries ) . to eq ( 5 ) # Overriden in spec_helper.rb
44+ expect ( defaults . max_elapsed_time ) . to eq ( 900 )
45+ expect ( defaults . normalize_unicode ) . to be false
46+ expect ( defaults . skip_serialization ) . to be false
47+ expect ( defaults . skip_deserialization ) . to be false
48+ expect ( defaults . api_format_version ) . to be nil
49+ expect ( defaults . use_opencensus ) . to be true
50+ expect ( defaults . quota_project ) . to be_nil
51+ end
4052end
You can’t perform that action at this time.
0 commit comments