@@ -29,20 +29,31 @@ def net_http
29
29
body = infile . read
30
30
end
31
31
32
- uri = URI . parse ( upload_url )
33
- request = Net ::HTTP ::Post . new ( uri . request_uri )
34
- request . basic_auth ( username , apikey )
35
- request [ "Content-Type" ] = "application/octet-stream"
36
- request . body = body
37
- http = net_http . new ( uri . host , uri . port )
38
- http . read_timeout = 60 * 5 # 5 min
39
- response = http . request ( request )
40
- metadata = JSON . parse ( response . body )
41
- local_digest = Digest ::MD5 . hexdigest ( body )
42
- if metadata [ 'md5' ] == local_digest
43
- puts "file successfully uploaded: #{ metadata [ 'filename' ] } "
44
- else
45
- puts "issues uploading file: #{ response . code } - #{ response . body } "
32
+ for i in 0 ..5
33
+ uri = URI . parse ( upload_url )
34
+ request = Net ::HTTP ::Post . new ( uri . request_uri )
35
+ request . basic_auth ( username , apikey )
36
+ request [ "Content-Type" ] = "application/octet-stream"
37
+ request . body = body
38
+ http = net_http . new ( uri . host , uri . port )
39
+ http . read_timeout = 60 * 5 # 5 min
40
+ begin
41
+ response = http . request ( request )
42
+ rescue => error
43
+ puts "issue uploading file: #{ error } "
44
+ next
45
+ end
46
+ metadata = JSON . parse ( response . body )
47
+ local_digest = Digest ::MD5 . hexdigest ( body )
48
+ if metadata [ 'md5' ] == local_digest
49
+ puts "file successfully uploaded: #{ metadata [ 'filename' ] } "
50
+ else
51
+ puts "issues uploading file: #{ response . code } - #{ response . body } "
52
+ end
53
+ break
54
+ end
55
+ if i == 5
56
+ raise "failed to upload to saucelabs after numerous retries"
46
57
end
47
58
end
48
59
end
0 commit comments