xamarin-test-cloud 2.0.0.pre4 → 2.0.0.pre5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/xamarin-test-cloud/cli.rb +20 -2
- data/lib/xamarin-test-cloud/http/retriable_client.rb +17 -11
- data/lib/xamarin-test-cloud/version.rb +1 -1
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dead16bac1bbcbdb4ed7ff55bc656df5da6f5563
|
4
|
+
data.tar.gz: 8298ea5c4fd1b0dc179a4285a78939ee154e8e0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 622d1602faa1a5f3e1e54b5dae8a6d8165542d659cffbda2d19f441277f1039a536a461449cd9005bd6e72bb52ab85f8616bc1dee4e89d16a8fed095221fa5ee
|
7
|
+
data.tar.gz: 217a4ba762eebdbb7f69d815ce08df678e14646eab8e167a211dd69e2bf4532bd7fc4f73e370e679e34a951d5cda2cd2602ca823084a65967fa0d25379712b7f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
### 2.0.0
|
2
2
|
|
3
|
+
* Set :send\_timeout on HTTPClient to allow uploads from flakey internet
|
4
|
+
connections #45
|
5
|
+
* Support Calabash 2.0 #43
|
3
6
|
* Replace RestClient with HTTPClient
|
4
7
|
* Set minimum ruby version to 2.0
|
5
8
|
* Gem does not work in Windows environment: ffi cannot be found. #34
|
@@ -472,7 +472,7 @@ module XamarinTestCloud
|
|
472
472
|
|
473
473
|
response = http_post(endpoint_path, upload_data) do |response, request|
|
474
474
|
if debug?
|
475
|
-
puts "Request url: #{request.
|
475
|
+
puts "Request url: #{self.host}/#{request.route}"
|
476
476
|
puts "Response code: #{response.code}"
|
477
477
|
puts "Response body: #{response.body}"
|
478
478
|
end
|
@@ -769,7 +769,25 @@ module XamarinTestCloud
|
|
769
769
|
|
770
770
|
if block_given?
|
771
771
|
exec_options[:header] = {'Content-Type' => 'multipart/form-data'}
|
772
|
-
|
772
|
+
|
773
|
+
# How long to wait for the files to upload.
|
774
|
+
exec_options[:send_timeout] = 30 * 60
|
775
|
+
|
776
|
+
# There is some strange behavior here. The original timeout value
|
777
|
+
# was very large: 90000000. With a large send_timeout and a modest
|
778
|
+
# receive_timeout, it is possible to get a ReceiveTimeoutError at a
|
779
|
+
# a random time between ~4 and ~20 minutes. The current working
|
780
|
+
# theory is that the original, very large, timeout is hiding some
|
781
|
+
# unexpected behavior on the server.
|
782
|
+
#
|
783
|
+
# In any event, if send_timeout is exceeeded, the client will raise
|
784
|
+
# a SendTimeoutError so this value can be very large.
|
785
|
+
exec_options[:timeout] = exec_options[:send_timeout] + 10
|
786
|
+
|
787
|
+
# Do not retry. Files are written to a stream; let the upload
|
788
|
+
# succeed or fail on the first pass.
|
789
|
+
exec_options[:retries] = 1
|
790
|
+
|
773
791
|
response = client.post(request, exec_options)
|
774
792
|
block.call(response, request)
|
775
793
|
response
|
@@ -48,9 +48,11 @@ module XamarinTestCloud
|
|
48
48
|
# @param [String] endpoint The server to make the HTTP request
|
49
49
|
# on.
|
50
50
|
# @param [Hash] options Control the retry, timeout, and interval.
|
51
|
-
# @option options [Number] :retries (
|
52
|
-
# @option options [Number] :timeout (
|
53
|
-
# before timing out.
|
51
|
+
# @option options [Number] :retries (3) How often to retry.
|
52
|
+
# @option options [Number] :timeout (15) How long to wait for a response
|
53
|
+
# before timing out. AKA receive_timeout.
|
54
|
+
# @option options [Number] :send_timeout (120) How long to wait for an
|
55
|
+
# upload.
|
54
56
|
# @option options [Number] :interval (0.5) How long to sleep between
|
55
57
|
# retries.
|
56
58
|
def initialize(endpoint, options = {})
|
@@ -59,6 +61,7 @@ module XamarinTestCloud
|
|
59
61
|
@retries = options.fetch(:retries, 3)
|
60
62
|
@timeout = options.fetch(:timeout, 15)
|
61
63
|
@connect_timeout = options.fetch(:connect_timeout, 15)
|
64
|
+
@send_timeout = options.fetch(:send_timeout, 120)
|
62
65
|
@interval = options.fetch(:interval, 0.5)
|
63
66
|
@on_error = {}
|
64
67
|
end
|
@@ -78,7 +81,9 @@ module XamarinTestCloud
|
|
78
81
|
# @param [Hash] options Control the retry, timeout, and interval.
|
79
82
|
# @option options [Number] :retries (5) How often to retry.
|
80
83
|
# @option options [Number] :timeout (5) How long to wait for a response
|
81
|
-
# before timing out.
|
84
|
+
# before timing out. AKA receive_timeout.
|
85
|
+
# @option options [Number] :send_timeout (120) How long to wait for an
|
86
|
+
# upload.
|
82
87
|
# @option options [Number] :interval (0.5) How long to sleep between
|
83
88
|
# retries.
|
84
89
|
def get(request, options={})
|
@@ -95,9 +100,11 @@ module XamarinTestCloud
|
|
95
100
|
# @param [Hash] options Control the retry, timeout, and interval.
|
96
101
|
# @option options [Number] :retries (3) How many times to retry.
|
97
102
|
# @option options [Number] :timeout (15) How long to wait for a response
|
98
|
-
# before timing out.
|
103
|
+
# before timing out. AKA receive_timeout.
|
99
104
|
# @option options [Number] :connect_timeout (15) How long to wait for a
|
100
|
-
#
|
105
|
+
# connection.
|
106
|
+
# @option options [Number] :send_timeout (120) How long to wait for an
|
107
|
+
# upload.
|
101
108
|
# @option options [Number] :interval (0.5) How long to sleep between
|
102
109
|
# retries.
|
103
110
|
def post(request, options={})
|
@@ -110,6 +117,7 @@ module XamarinTestCloud
|
|
110
117
|
retries = options.fetch(:retries, @retries)
|
111
118
|
timeout = options.fetch(:timeout, @timeout)
|
112
119
|
connect_timeout = options.fetch(:timeout, @connect_timeout)
|
120
|
+
send_timeout = options.fetch(:send_timeout, @send_timeout)
|
113
121
|
interval = options.fetch(:interval, @interval)
|
114
122
|
header = options.fetch(:header, HEADER)
|
115
123
|
|
@@ -119,6 +127,7 @@ module XamarinTestCloud
|
|
119
127
|
client = @client.dup
|
120
128
|
client.receive_timeout = timeout
|
121
129
|
client.connect_timeout = connect_timeout
|
130
|
+
client.send_timeout = send_timeout
|
122
131
|
|
123
132
|
if options.fetch(:user, nil) && options.fetch(:password, nil)
|
124
133
|
client.set_auth(options.fetch(:user), options.fetch(:password))
|
@@ -129,15 +138,12 @@ module XamarinTestCloud
|
|
129
138
|
|
130
139
|
# Subtract the aggregate time we've spent thus far to make sure we're
|
131
140
|
# not exceeding the request timeout across retries.
|
132
|
-
time_diff = start_time + timeout - Time.now
|
133
|
-
|
141
|
+
time_diff = start_time + timeout + send_timeout - Time.now
|
134
142
|
|
135
143
|
if time_diff <= 0
|
136
|
-
raise HTTP::Error,
|
144
|
+
raise HTTP::Error, "Timeout exceeded"
|
137
145
|
end
|
138
146
|
|
139
|
-
client.receive_timeout = [time_diff, client.receive_timeout].min
|
140
|
-
|
141
147
|
payload = Payload.generate(request.params)
|
142
148
|
|
143
149
|
header.merge!(payload.headers) if payload
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xamarin-test-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.pre5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karl Krukow
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-04
|
12
|
+
date: 2016-05-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -197,6 +197,20 @@ dependencies:
|
|
197
197
|
- - "~>"
|
198
198
|
- !ruby/object:Gem::Version
|
199
199
|
version: '2.0'
|
200
|
+
- !ruby/object:Gem::Dependency
|
201
|
+
name: listen
|
202
|
+
requirement: !ruby/object:Gem::Requirement
|
203
|
+
requirements:
|
204
|
+
- - '='
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: 3.0.6
|
207
|
+
type: :development
|
208
|
+
prerelease: false
|
209
|
+
version_requirements: !ruby/object:Gem::Requirement
|
210
|
+
requirements:
|
211
|
+
- - '='
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: 3.0.6
|
200
214
|
- !ruby/object:Gem::Dependency
|
201
215
|
name: growl
|
202
216
|
requirement: !ruby/object:Gem::Requirement
|
@@ -297,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
297
311
|
version: 1.3.1
|
298
312
|
requirements: []
|
299
313
|
rubyforge_project:
|
300
|
-
rubygems_version: 2.5.
|
314
|
+
rubygems_version: 2.5.1
|
301
315
|
signing_key:
|
302
316
|
specification_version: 4
|
303
317
|
summary: Command-line interface to Xamarin Test Cloud
|