baza.rb 0.0.3 → 0.0.5
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/Gemfile.lock +3 -3
- data/baza.rb.gemspec +1 -1
- data/lib/baza-rb/version.rb +2 -2
- data/lib/baza-rb.rb +33 -9
- data/test/test_baza-rb.rb +26 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ffabe02ed963b25b7b763832d2b67fba6fd26739ab1656af0613007390b4804
|
4
|
+
data.tar.gz: 58a9abffa52a09106537205d8a806e87084a3ceb0454ba509373bc3c9bab9a3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d274ead41371254054b7ddef2e4929e197550a4a4fbdc168c7cd4960317a7aa10bbda453430b5ab1c92f58523c9f3c6325517069217a2a5e1137330890a117de
|
7
|
+
data.tar.gz: 1e7429b00c744708dddf0f930c37ee93f3a4675d8dfd9ef5e16db5630afb853a6eb9618d5132158812e5e5b104871fc761003b9bdaca07f799078fc4b33cb1d3
|
data/Gemfile.lock
CHANGED
@@ -65,7 +65,7 @@ GEM
|
|
65
65
|
erubi (1.13.0)
|
66
66
|
ethon (0.16.0)
|
67
67
|
ffi (>= 1.15.0)
|
68
|
-
factbase (0.
|
68
|
+
factbase (0.4.0)
|
69
69
|
backtrace (> 0)
|
70
70
|
decoor (> 0)
|
71
71
|
json (~> 2.7)
|
@@ -123,7 +123,7 @@ GEM
|
|
123
123
|
nokogiri (1.16.7-x86_64-linux)
|
124
124
|
racc (~> 1.4)
|
125
125
|
others (0.0.3)
|
126
|
-
parallel (1.26.
|
126
|
+
parallel (1.26.2)
|
127
127
|
parser (3.3.4.2)
|
128
128
|
ast (~> 2.4.1)
|
129
129
|
racc
|
@@ -163,7 +163,7 @@ GEM
|
|
163
163
|
reline (0.5.9)
|
164
164
|
io-console (~> 0.5)
|
165
165
|
retries (0.0.5)
|
166
|
-
rexml (3.3.
|
166
|
+
rexml (3.3.5)
|
167
167
|
strscan
|
168
168
|
rspec-core (3.13.0)
|
169
169
|
rspec-support (~> 3.13.0)
|
data/baza.rb.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
28
28
|
s.required_ruby_version = '>=3.0'
|
29
29
|
s.name = 'baza.rb'
|
30
|
-
s.version =
|
30
|
+
s.version = BazaRb::VERSION
|
31
31
|
s.license = 'MIT'
|
32
32
|
s.summary = 'Zerocracy API Ruby Client'
|
33
33
|
s.description =
|
data/lib/baza-rb/version.rb
CHANGED
data/lib/baza-rb.rb
CHANGED
@@ -20,12 +20,12 @@
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
21
|
# SOFTWARE.
|
22
22
|
|
23
|
-
require '
|
24
|
-
require 'retries'
|
23
|
+
require 'base64'
|
25
24
|
require 'iri'
|
26
25
|
require 'loog'
|
27
|
-
require '
|
26
|
+
require 'retries'
|
28
27
|
require 'tago'
|
28
|
+
require 'typhoeus'
|
29
29
|
require_relative 'baza-rb/version'
|
30
30
|
|
31
31
|
# Interface to the API of zerocracy.com.
|
@@ -180,6 +180,27 @@ class BazaRb
|
|
180
180
|
code
|
181
181
|
end
|
182
182
|
|
183
|
+
# Read and return the verification verdict of the job.
|
184
|
+
# @param [Integer] id The ID of the job on the server
|
185
|
+
# @return [String] The verdict
|
186
|
+
def verified(id)
|
187
|
+
verdict = 0
|
188
|
+
elapsed(@loog) do
|
189
|
+
ret =
|
190
|
+
with_retries(max_tries: @retries) do
|
191
|
+
checked(
|
192
|
+
Typhoeus::Request.get(
|
193
|
+
home.append('jobs').append(id).append('verified.txt').to_s,
|
194
|
+
headers:
|
195
|
+
)
|
196
|
+
)
|
197
|
+
end
|
198
|
+
verdict = ret.body
|
199
|
+
throw :"The verdict of the job ##{id} is #{verdict.inspect}"
|
200
|
+
end
|
201
|
+
verdict
|
202
|
+
end
|
203
|
+
|
183
204
|
# Lock the name.
|
184
205
|
# @param [String] name The name of the job on the server
|
185
206
|
# @param [String] owner The owner of the lock (any string)
|
@@ -273,7 +294,7 @@ class BazaRb
|
|
273
294
|
body: {
|
274
295
|
'jname' => jname,
|
275
296
|
'file' => File.basename(file),
|
276
|
-
'zip' => File.open(file, '
|
297
|
+
'zip' => File.open(file, 'rb')
|
277
298
|
},
|
278
299
|
headers:,
|
279
300
|
connecttimeout: @timeout,
|
@@ -283,7 +304,7 @@ class BazaRb
|
|
283
304
|
)
|
284
305
|
end
|
285
306
|
id = ret.headers['X-Zerocracy-DurableId'].to_i
|
286
|
-
throw :"Durable ##{id} placed for job \"#{jname}\" at #{@host}"
|
307
|
+
throw :"Durable ##{id} (#{file}) placed for job \"#{jname}\" at #{@host}"
|
287
308
|
end
|
288
309
|
id
|
289
310
|
end
|
@@ -377,7 +398,7 @@ class BazaRb
|
|
377
398
|
|
378
399
|
def headers
|
379
400
|
{
|
380
|
-
'User-Agent' => "baza.rb #{
|
401
|
+
'User-Agent' => "baza.rb #{BazaRb::VERSION}",
|
381
402
|
'Connection' => 'close',
|
382
403
|
'X-Zerocracy-Token' => @token
|
383
404
|
}
|
@@ -428,16 +449,19 @@ class BazaRb
|
|
428
449
|
allowed = [allowed] unless allowed.is_a?(Array)
|
429
450
|
mtd = (ret.request.original_options[:method] || '???').upcase
|
430
451
|
url = ret.effective_url
|
431
|
-
|
452
|
+
raise "#{mtd} #{url} timed out in #{ret.total_time}s" if ret.return_code == :operation_timedout
|
453
|
+
log = "#{mtd} #{url} -> #{ret.code} (#{format('%0.2f', ret.total_time)}s)"
|
432
454
|
if allowed.include?(ret.code)
|
433
455
|
@loog.debug(log)
|
434
456
|
return ret
|
435
457
|
end
|
436
458
|
@loog.debug("#{log}\n #{(ret.headers || {}).map { |k, v| "#{k}: #{v}" }.join("\n ")}")
|
459
|
+
headers = ret.headers || {}
|
460
|
+
p ret
|
437
461
|
msg = [
|
438
462
|
"Invalid response code ##{ret.code} ",
|
439
463
|
"at #{mtd} #{url}",
|
440
|
-
|
464
|
+
headers['X-Zerocracy-Flash'] ? " (#{headers['X-Zerocracy-Flash'].inspect})" : ''
|
441
465
|
].join
|
442
466
|
case ret.code
|
443
467
|
when 500
|
@@ -446,7 +470,7 @@ class BazaRb
|
|
446
470
|
'please report this to https://github.com/zerocracy/baza'
|
447
471
|
when 503
|
448
472
|
msg +=
|
449
|
-
", most probably it's an internal error on the server (#{
|
473
|
+
", most probably it's an internal error on the server (#{headers['X-Zerocracy-Failure'].inspect}), " \
|
450
474
|
'please report this to https://github.com/zerocracy/baza.rb'
|
451
475
|
when 404
|
452
476
|
msg +=
|
data/test/test_baza-rb.rb
CHANGED
@@ -58,6 +58,7 @@ class TestBazaRb < Minitest::Test
|
|
58
58
|
assert(!LIVE.pull(id).nil?)
|
59
59
|
assert(!LIVE.stdout(id).nil?)
|
60
60
|
assert(!LIVE.exit_code(id).nil?)
|
61
|
+
assert(!LIVE.verified(id).nil?)
|
61
62
|
owner = 'baza.rb testing'
|
62
63
|
assert(!LIVE.lock(n, owner).nil?)
|
63
64
|
assert(!LIVE.unlock(n, owner).nil?)
|
@@ -167,7 +168,7 @@ class TestBazaRb < Minitest::Test
|
|
167
168
|
with_http_server(200, 'yes') do |baza|
|
168
169
|
baza.name_exists?('simple')
|
169
170
|
end
|
170
|
-
assert_equal("baza.rb #{
|
171
|
+
assert_equal("baza.rb #{BazaRb::VERSION}", req['user-agent'])
|
171
172
|
end
|
172
173
|
|
173
174
|
def test_push_with_meta
|
@@ -215,6 +216,30 @@ class TestBazaRb < Minitest::Test
|
|
215
216
|
assert_equal('hello, world!', req.body)
|
216
217
|
end
|
217
218
|
|
219
|
+
def test_with_very_short_timeout
|
220
|
+
WebMock.enable_net_connect!
|
221
|
+
host = '127.0.0.1'
|
222
|
+
RandomPort::Pool::SINGLETON.acquire do |port|
|
223
|
+
server = TCPServer.new(host, port)
|
224
|
+
t =
|
225
|
+
Thread.new do
|
226
|
+
socket = server.accept
|
227
|
+
req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
|
228
|
+
req.parse(socket)
|
229
|
+
req.body
|
230
|
+
sleep 0.1
|
231
|
+
socket.puts "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nabc"
|
232
|
+
socket.close
|
233
|
+
end
|
234
|
+
assert(
|
235
|
+
assert_raises do
|
236
|
+
BazaRb.new(host, port, '0000', ssl: false, timeout: 0.01).push('x', 'y', [])
|
237
|
+
end.message.include?('timed out in')
|
238
|
+
)
|
239
|
+
t.join
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
218
243
|
private
|
219
244
|
|
220
245
|
def with_http_server(code, response, opts = {})
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: baza.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backtrace
|