rbbt-util 5.21.5 → 5.21.6
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/lib/rbbt/entity/identifiers.rb +0 -2
- data/lib/rbbt/rest/client/get.rb +14 -0
- data/lib/rbbt/rest/client/step.rb +32 -17
- data/lib/rbbt/tsv/util.rb +2 -0
- data/lib/rbbt/workflow/accessor.rb +30 -6
- data/lib/rbbt/workflow/step/dependencies.rb +18 -7
- data/lib/rbbt/workflow/step/run.rb +4 -5
- data/share/config.ru +3 -0
- data/share/rbbt_commands/system/clean +2 -1
- data/share/rbbt_commands/workflow/info +1 -1
- data/share/rbbt_commands/workflow/prov +1 -1
- metadata +63 -63
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '08fc0e36be76ddc12da08a71a3866246380800e5'
|
4
|
+
data.tar.gz: 7e146e65ad2c37c8563b9d09b4d05f64f2cf467a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83141c8792d440fd891dd6a8ced6328cf92bd253545e8722c8cfc622a46071095b13a6eed0ce163f863aa5c8f09a3d1ba5e82c47b33f594dd5b692f3a58f6a6a
|
7
|
+
data.tar.gz: b2e711647c50de9ea09686872a35f23be5cb82fe1801b6b97942d2ad0cab0a17aa96dbf2e65d4f836d860438c6b892217a01e0b669bb2afd7f2848c6880ecd9e
|
data/lib/rbbt/rest/client/get.rb
CHANGED
@@ -53,6 +53,20 @@ class WorkflowRESTClient
|
|
53
53
|
new_params
|
54
54
|
end
|
55
55
|
|
56
|
+
def self.clean_url(url, params = {})
|
57
|
+
params = params.merge({ :_format => 'json', :update => 'clean' })
|
58
|
+
params = fix_params params
|
59
|
+
res = capture_exception do
|
60
|
+
Misc.insist(2, 0.5) do
|
61
|
+
Log.debug{ "RestClient clean: #{ url } - #{Misc.fingerprint params}" }
|
62
|
+
res = RestClient.get(URI.encode(url), :params => params)
|
63
|
+
raise TryAgain if res.code == 202
|
64
|
+
res
|
65
|
+
end
|
66
|
+
end
|
67
|
+
res
|
68
|
+
end
|
69
|
+
|
56
70
|
def self.get_raw(url, params = {})
|
57
71
|
params = params.merge({ :_format => 'raw' })
|
58
72
|
params = fix_params params
|
@@ -38,12 +38,6 @@ class WorkflowRESTClient
|
|
38
38
|
exec(no_load)
|
39
39
|
elsif no_load == :stream
|
40
40
|
_run_job(:stream)
|
41
|
-
#init_job
|
42
|
-
#join
|
43
|
-
#Misc.open_pipe do |sin|
|
44
|
-
# body = get.body
|
45
|
-
# sin.write body
|
46
|
-
#end
|
47
41
|
elsif no_load
|
48
42
|
init_job
|
49
43
|
nil
|
@@ -95,7 +89,20 @@ class WorkflowRESTClient
|
|
95
89
|
end
|
96
90
|
|
97
91
|
def abort
|
92
|
+
return self if status == :done
|
98
93
|
WorkflowRESTClient.get_json(@url + '?_update=abort') if @url and @name
|
94
|
+
self
|
95
|
+
end
|
96
|
+
|
97
|
+
def dup_inputs
|
98
|
+
return if @dupped or ENV["RBBT_NO_STREAM"] == 'true'
|
99
|
+
Log.low "Dupping inputs for #{path}"
|
100
|
+
dupped_inputs = {}
|
101
|
+
@inputs.collect do |k,input|
|
102
|
+
dupped_inputs[k] = Step.dup_stream input
|
103
|
+
end
|
104
|
+
@inputs = dupped_inputs
|
105
|
+
@dupped = true
|
99
106
|
end
|
100
107
|
|
101
108
|
def name
|
@@ -113,12 +120,20 @@ class WorkflowRESTClient
|
|
113
120
|
init_job
|
114
121
|
(Array === @url ? @url.first : @url).split("/")[-2]
|
115
122
|
end
|
123
|
+
|
124
|
+
def nopid?
|
125
|
+
false
|
126
|
+
end
|
116
127
|
|
117
128
|
def info(check_lock=false)
|
118
129
|
@done = @info && @info[:status] && @info[:status].to_sym == :done
|
119
130
|
@info = Persist.memory("RemoteSteps Info", :url => @url, :persist => true, :update => !@done) do
|
120
131
|
init_job unless @url
|
121
|
-
info =
|
132
|
+
info = begin
|
133
|
+
WorkflowRESTClient.get_json(File.join(@url, 'info'))
|
134
|
+
rescue
|
135
|
+
{}
|
136
|
+
end
|
122
137
|
info = WorkflowRESTClient.fix_hash(info)
|
123
138
|
info[:status] = info[:status].to_sym if String === info[:status]
|
124
139
|
info
|
@@ -185,7 +200,7 @@ class WorkflowRESTClient
|
|
185
200
|
WorkflowRESTClient.post_jobname(File.join(base_url, task.to_s), inputs.merge(other_params).merge(:jobname => @name||@base_name, :_cache_type => cache_type))
|
186
201
|
end
|
187
202
|
@url = File.join(base_url, task.to_s, @name)
|
188
|
-
|
203
|
+
self
|
189
204
|
end
|
190
205
|
|
191
206
|
|
@@ -201,7 +216,7 @@ class WorkflowRESTClient
|
|
201
216
|
if @url
|
202
217
|
@url + '?_format=raw'
|
203
218
|
else
|
204
|
-
[base_url, task, Misc.fingerprint(inputs)] * "/"
|
219
|
+
[base_url, task, @base_name + '-' + Misc.fingerprint(inputs)] * "/"
|
205
220
|
end
|
206
221
|
end
|
207
222
|
|
@@ -225,12 +240,12 @@ class WorkflowRESTClient
|
|
225
240
|
Misc.consume_stream(res, true)
|
226
241
|
end
|
227
242
|
|
228
|
-
if not self.done?
|
243
|
+
if not (self.done? || self.aborted? || self.error?)
|
229
244
|
self.info
|
230
|
-
return self if self.done?
|
231
|
-
sleep 0.2 unless self.done?
|
232
|
-
sleep 1 unless self.done?
|
233
|
-
while not self.done?
|
245
|
+
return self if self.done? || self.aborted? || self.error?
|
246
|
+
sleep 0.2 unless self.done? || self.aborted? || self.error?
|
247
|
+
sleep 1 unless self.done? || self.aborted? || self.error?
|
248
|
+
while not (self.done? || self.aborted? || self.error?)
|
234
249
|
sleep 3
|
235
250
|
end
|
236
251
|
end
|
@@ -283,6 +298,7 @@ class WorkflowRESTClient
|
|
283
298
|
def load
|
284
299
|
params = {}
|
285
300
|
join unless done? or streaming?
|
301
|
+
raise get_exception if error? or aborted?
|
286
302
|
load_res get
|
287
303
|
end
|
288
304
|
|
@@ -295,6 +311,7 @@ class WorkflowRESTClient
|
|
295
311
|
@done = nil
|
296
312
|
@name = nil
|
297
313
|
@started = nil
|
314
|
+
@aborted = nil
|
298
315
|
new_inputs = {}
|
299
316
|
inputs.each do |k,i|
|
300
317
|
if File === i
|
@@ -320,11 +337,9 @@ class WorkflowRESTClient
|
|
320
337
|
end
|
321
338
|
|
322
339
|
def clean
|
323
|
-
return
|
324
340
|
begin
|
325
341
|
params = {:_update => :clean}
|
326
|
-
|
327
|
-
WorkflowRESTClient.get_raw(url, params)
|
342
|
+
WorkflowRESTClient.clean_url(url, params) if @url
|
328
343
|
_restart
|
329
344
|
rescue Exception
|
330
345
|
Log.exception $!
|
data/lib/rbbt/tsv/util.rb
CHANGED
@@ -141,7 +141,7 @@ class Step
|
|
141
141
|
def init_info
|
142
142
|
return nil if @exec or info_file.nil?
|
143
143
|
Open.lock(info_file, :lock => info_lock) do
|
144
|
-
i = {:status => :init}
|
144
|
+
i = {:status => :init, :pid => Process.pid}
|
145
145
|
@info_cache = i
|
146
146
|
Misc.sensiblewrite(info_file, INFO_SERIALIAZER.dump(i), :force => true, :lock => false)
|
147
147
|
@info_cache_time = Time.now
|
@@ -315,6 +315,25 @@ class Step
|
|
315
315
|
self._abort
|
316
316
|
end
|
317
317
|
|
318
|
+
def get_exception
|
319
|
+
if info[:exception].nil?
|
320
|
+
raise Aborted if aborted?
|
321
|
+
raise messages.last if error?
|
322
|
+
return false
|
323
|
+
else
|
324
|
+
ex_class, ex_message, ex_backtrace = info[:exception].values_at :class, :message, :backtrace
|
325
|
+
begin
|
326
|
+
klass = Kernel.const_get(ex_class)
|
327
|
+
ex = klass.new ex_message
|
328
|
+
#ex.set_backtrace ex_backtrace
|
329
|
+
ex
|
330
|
+
rescue
|
331
|
+
Log.exception $!
|
332
|
+
raise ex_message
|
333
|
+
end
|
334
|
+
end
|
335
|
+
end
|
336
|
+
|
318
337
|
def recoverable_error?
|
319
338
|
return true if aborted?
|
320
339
|
return false unless error?
|
@@ -327,7 +346,7 @@ class Step
|
|
327
346
|
end
|
328
347
|
|
329
348
|
def started?
|
330
|
-
Open.exists?(path) or Open.exists?(pid_file)
|
349
|
+
Open.exists?(path) or Open.exists?(pid_file) or Open.exists?(info_file)
|
331
350
|
end
|
332
351
|
|
333
352
|
def dirty?
|
@@ -342,11 +361,11 @@ class Step
|
|
342
361
|
IO === @result or @saved_stream or status == :streaming
|
343
362
|
end
|
344
363
|
|
364
|
+
|
345
365
|
def running?
|
346
|
-
|
347
|
-
return nil if
|
366
|
+
pid = info[:pid]
|
367
|
+
return nil if pid.nil?
|
348
368
|
|
349
|
-
pid = @pid || info[:pid]
|
350
369
|
if Misc.pid_exists?(pid)
|
351
370
|
pid
|
352
371
|
else
|
@@ -358,8 +377,13 @@ class Step
|
|
358
377
|
status == :error
|
359
378
|
end
|
360
379
|
|
380
|
+
def nopid?
|
381
|
+
pid = info[:pid]
|
382
|
+
pid.nil? && ! (status == :aborted || status == :done || status == :error)
|
383
|
+
end
|
384
|
+
|
361
385
|
def aborted?
|
362
|
-
|
386
|
+
status == :aborted || nopid?
|
363
387
|
end
|
364
388
|
|
365
389
|
# {{{ INFO
|
@@ -73,15 +73,20 @@ class Step
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def self.prepare_for_execution(job)
|
76
|
-
return if
|
77
|
-
(job.streaming? and job.running?) or
|
78
|
-
(defined? WorkflowRESTClient and WorkflowRESTClient::RemoteStep === job and not (job.error? or job.aborted?))
|
76
|
+
return if job.done? && ! job.dirty?
|
79
77
|
|
80
|
-
|
78
|
+
status = job.status.to_s
|
79
|
+
if defined? WorkflowRESTClient && WorkflowRESTClient::RemoteStep === job
|
80
|
+
return if ! (status == 'done' and status == 'error' and status == 'aborted')
|
81
|
+
else
|
82
|
+
return if status == 'streaming' && job.running?
|
83
|
+
end
|
84
|
+
|
85
|
+
if (status == 'error' || job.aborted?) && job.recoverable_error?
|
81
86
|
job.clean
|
82
87
|
end
|
83
88
|
|
84
|
-
job.dup_inputs unless
|
89
|
+
job.dup_inputs unless status == 'done' or job.started?
|
85
90
|
|
86
91
|
raise DependencyError, job if job.error?
|
87
92
|
end
|
@@ -208,9 +213,10 @@ class Step
|
|
208
213
|
Misc.insist do
|
209
214
|
begin
|
210
215
|
dep.produce
|
211
|
-
Log.warn "Error
|
216
|
+
Log.warn "Error in bootstrap dependency #{dep.path}: #{dep.messages.last}" if dep.error? or dep.aborted?
|
212
217
|
rescue Aborted
|
213
218
|
dep.abort
|
219
|
+
Log.warn "Aborted bootstrap dependency #{dep.path}: #{dep.messages.last}" if dep.error? or dep.aborted?
|
214
220
|
raise $!
|
215
221
|
rescue Exception
|
216
222
|
dep.exception $!
|
@@ -323,8 +329,13 @@ class Step
|
|
323
329
|
end
|
324
330
|
|
325
331
|
def stop_dependencies
|
332
|
+
return if dependencies.nil?
|
326
333
|
dependencies.each do |dep|
|
327
|
-
|
334
|
+
begin
|
335
|
+
next if dep.done? or dep.aborted?
|
336
|
+
rescue
|
337
|
+
end
|
338
|
+
dep.abort
|
328
339
|
end
|
329
340
|
kill_children
|
330
341
|
end
|
@@ -107,7 +107,6 @@ class Step
|
|
107
107
|
log :setup, "#{Log.color :green, "Setup"} step #{Log.color :yellow, task.name.to_s || ""}"
|
108
108
|
|
109
109
|
merge_info({
|
110
|
-
:pid => Process.pid,
|
111
110
|
:issued => (issue_time = Time.now),
|
112
111
|
:name => name,
|
113
112
|
:clean_name => clean_name,
|
@@ -361,7 +360,6 @@ class Step
|
|
361
360
|
begin
|
362
361
|
Log.medium "Aborting job stream #{stream.inspect} -- #{Log.color :blue, path}"
|
363
362
|
stream.abort
|
364
|
-
#stream.close unless stream.closed?
|
365
363
|
rescue Aborted, Interrupt
|
366
364
|
Log.medium "Aborting job stream #{stream.inspect} ABORTED RETRY -- #{Log.color :blue, path}"
|
367
365
|
Log.exception $!
|
@@ -371,7 +369,7 @@ class Step
|
|
371
369
|
end
|
372
370
|
|
373
371
|
def _clean_finished
|
374
|
-
if Open.exists? path
|
372
|
+
if Open.exists? path and not status == :done
|
375
373
|
Log.warn "Aborted job had finished. Removing result -- #{ path }"
|
376
374
|
begin
|
377
375
|
Open.rm path
|
@@ -384,12 +382,12 @@ class Step
|
|
384
382
|
def _abort
|
385
383
|
return if @aborted
|
386
384
|
@aborted = true
|
387
|
-
return if done?
|
388
385
|
Log.medium{"#{Log.color :red, "Aborting"} #{Log.color :blue, path}"}
|
389
386
|
begin
|
387
|
+
return if done?
|
390
388
|
stop_dependencies
|
391
389
|
abort_stream
|
392
|
-
abort_pid if
|
390
|
+
abort_pid if running?
|
393
391
|
rescue Aborted, Interrupt
|
394
392
|
Log.medium{"#{Log.color :red, "Aborting ABORTED RETRY"} #{Log.color :blue, path}"}
|
395
393
|
retry
|
@@ -402,6 +400,7 @@ class Step
|
|
402
400
|
end
|
403
401
|
|
404
402
|
def abort
|
403
|
+
return if done? and status == :done
|
405
404
|
_abort
|
406
405
|
log(:aborted, "Job aborted") unless aborted? or error?
|
407
406
|
self
|
data/share/config.ru
CHANGED
@@ -88,11 +88,12 @@ jobs.each do |file,i|
|
|
88
88
|
|
89
89
|
status = info[:status].to_s
|
90
90
|
status = :missing if status == "done" and not File.exist? file
|
91
|
+
status = :nopid if status != "done" and pid.nil?
|
91
92
|
status = :dead if status != "done" and pid and not Misc.pid_exists?(pid)
|
92
93
|
status = :sync if status != "done" and File.exist? file
|
93
94
|
|
94
95
|
status = status.to_s
|
95
|
-
next unless status =~ /\berror$/ or status =~ /\bmissing$/ or status =~ /\baborted$/ or status =~ /\bdead$/ or status =~ /\bsync$/ or status == "" or (force and status == 'noinfo')
|
96
|
+
next unless status =~ /\bnopid/ or status =~ /\berror$/ or status =~ /\bmissing$/ or status =~ /\baborted$/ or status =~ /\bdead$/ or status =~ /\bsync$/ or status == "" or (force and status == 'noinfo')
|
96
97
|
puts " Removing #{ file } - #{status}"
|
97
98
|
Step.clean(file)
|
98
99
|
end
|
@@ -71,7 +71,7 @@ exception = info[:exception]
|
|
71
71
|
rest = info.keys - [:inputs, :dependencies, :status, :time_elapsed, :messages, :backtrace, :exception, :pid]
|
72
72
|
|
73
73
|
puts Log.color(:magenta, "File") << ": " << step.path
|
74
|
-
puts Log.color(:magenta, "Status") << ": " << status_msg(status)
|
74
|
+
puts Log.color(:magenta, "Status") << ": " << status_msg(status) << ((step.aborted? || step.error?) && step.recoverable_error? ? " (recoverable)" : "" )
|
75
75
|
puts Log.color(:magenta, "Pid") << ": " << pid_msg(pid, status.to_s == "done")
|
76
76
|
puts Log.color(:magenta, "Time") << ": " << time.to_i.to_s << " sec." if time
|
77
77
|
puts Log.color(:magenta, "Total time") << ": " << total_time.to_i.to_s << " sec." if time
|
@@ -62,7 +62,7 @@ def report(step, offset = 0)
|
|
62
62
|
info = step.info || {}
|
63
63
|
path = step.path
|
64
64
|
status = info[:status] || :missing
|
65
|
-
status =
|
65
|
+
status = "remote" if Open.remote?(path)
|
66
66
|
name = info[:name] || File.basename(path)
|
67
67
|
status = :unsync if status == :done and not File.exist? path
|
68
68
|
str = " " * offset
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbbt-util
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.21.
|
4
|
+
version: 5.21.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -484,82 +484,82 @@ signing_key:
|
|
484
484
|
specification_version: 4
|
485
485
|
summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
|
486
486
|
test_files:
|
487
|
-
- test/
|
487
|
+
- test/test_helper.rb
|
488
488
|
- test/rbbt/resource/test_path.rb
|
489
|
-
- test/rbbt/
|
490
|
-
- test/rbbt/
|
491
|
-
- test/rbbt/
|
492
|
-
- test/rbbt/
|
493
|
-
- test/rbbt/
|
494
|
-
- test/rbbt/util/
|
489
|
+
- test/rbbt/association/test_item.rb
|
490
|
+
- test/rbbt/association/test_database.rb
|
491
|
+
- test/rbbt/association/test_open.rb
|
492
|
+
- test/rbbt/association/test_index.rb
|
493
|
+
- test/rbbt/association/test_util.rb
|
494
|
+
- test/rbbt/util/test_concurrency.rb
|
495
495
|
- test/rbbt/util/test_log.rb
|
496
|
+
- test/rbbt/util/test_chain_methods.rb
|
497
|
+
- test/rbbt/util/test_simpleopt.rb
|
498
|
+
- test/rbbt/util/simpleopt/test_parse.rb
|
499
|
+
- test/rbbt/util/simpleopt/test_get.rb
|
500
|
+
- test/rbbt/util/simpleopt/test_setup.rb
|
501
|
+
- test/rbbt/util/test_cmd.rb
|
502
|
+
- test/rbbt/util/test_semaphore.rb
|
503
|
+
- test/rbbt/util/concurrency/test_threads.rb
|
504
|
+
- test/rbbt/util/concurrency/processes/test_socket.rb
|
505
|
+
- test/rbbt/util/concurrency/test_processes.rb
|
506
|
+
- test/rbbt/util/test_tmpfile.rb
|
496
507
|
- test/rbbt/util/test_open.rb
|
508
|
+
- test/rbbt/util/test_filecache.rb
|
509
|
+
- test/rbbt/util/R/test_eval.rb
|
510
|
+
- test/rbbt/util/R/test_model.rb
|
511
|
+
- test/rbbt/util/test_simpleDSL.rb
|
512
|
+
- test/rbbt/util/log/test_progress.rb
|
513
|
+
- test/rbbt/util/test_colorize.rb
|
514
|
+
- test/rbbt/util/test_R.rb
|
497
515
|
- test/rbbt/util/misc/test_lock.rb
|
498
|
-
- test/rbbt/util/misc/test_multipart_payload.rb
|
499
|
-
- test/rbbt/util/misc/test_bgzf.rb
|
500
516
|
- test/rbbt/util/misc/test_pipes.rb
|
517
|
+
- test/rbbt/util/misc/test_bgzf.rb
|
501
518
|
- test/rbbt/util/misc/test_omics.rb
|
502
|
-
- test/rbbt/util/
|
503
|
-
- test/rbbt/util/test_R.rb
|
504
|
-
- test/rbbt/util/log/test_progress.rb
|
505
|
-
- test/rbbt/util/test_colorize.rb
|
506
|
-
- test/rbbt/util/test_simpleopt.rb
|
519
|
+
- test/rbbt/util/misc/test_multipart_payload.rb
|
507
520
|
- test/rbbt/util/test_excel2tsv.rb
|
508
|
-
- test/rbbt/util/test_filecache.rb
|
509
|
-
- test/rbbt/util/concurrency/test_processes.rb
|
510
|
-
- test/rbbt/util/concurrency/test_threads.rb
|
511
|
-
- test/rbbt/util/concurrency/processes/test_socket.rb
|
512
|
-
- test/rbbt/util/test_semaphore.rb
|
513
521
|
- test/rbbt/util/test_misc.rb
|
514
|
-
- test/rbbt/util/test_tmpfile.rb
|
515
|
-
- test/rbbt/util/R/test_model.rb
|
516
|
-
- test/rbbt/util/R/test_eval.rb
|
517
|
-
- test/rbbt/test_packed_index.rb
|
518
|
-
- test/rbbt/entity/test_identifiers.rb
|
519
|
-
- test/rbbt/test_association.rb
|
520
|
-
- test/rbbt/knowledge_base/test_traverse.rb
|
521
|
-
- test/rbbt/knowledge_base/test_registry.rb
|
522
|
-
- test/rbbt/knowledge_base/test_entity.rb
|
523
|
-
- test/rbbt/knowledge_base/test_enrichment.rb
|
524
|
-
- test/rbbt/knowledge_base/test_syndicate.rb
|
525
|
-
- test/rbbt/knowledge_base/test_query.rb
|
526
|
-
- test/rbbt/test_resource.rb
|
527
522
|
- test/rbbt/test_entity.rb
|
528
|
-
- test/rbbt/test_knowledge_base.rb
|
529
|
-
- test/rbbt/annotations/test_util.rb
|
530
|
-
- test/rbbt/association/test_index.rb
|
531
|
-
- test/rbbt/association/test_item.rb
|
532
|
-
- test/rbbt/association/test_open.rb
|
533
|
-
- test/rbbt/association/test_util.rb
|
534
|
-
- test/rbbt/association/test_database.rb
|
535
|
-
- test/rbbt/test_tsv.rb
|
536
523
|
- test/rbbt/workflow/step/test_dependencies.rb
|
537
|
-
- test/rbbt/workflow/test_task.rb
|
538
|
-
- test/rbbt/workflow/test_step.rb
|
539
524
|
- test/rbbt/workflow/test_doc.rb
|
540
|
-
- test/rbbt/
|
541
|
-
- test/rbbt/
|
542
|
-
- test/rbbt/
|
543
|
-
- test/rbbt/
|
544
|
-
- test/rbbt/
|
545
|
-
- test/rbbt/
|
546
|
-
- test/rbbt/persist/tsv/test_sharder.rb
|
547
|
-
- test/rbbt/persist/tsv/test_cdb.rb
|
548
|
-
- test/rbbt/persist/tsv/test_tokyocabinet.rb
|
549
|
-
- test/rbbt/persist/tsv/test_leveldb.rb
|
550
|
-
- test/rbbt/tsv/test_field_index.rb
|
525
|
+
- test/rbbt/workflow/test_step.rb
|
526
|
+
- test/rbbt/workflow/test_task.rb
|
527
|
+
- test/rbbt/test_association.rb
|
528
|
+
- test/rbbt/test_knowledge_base.rb
|
529
|
+
- test/rbbt/tsv/parallel/test_traverse.rb
|
530
|
+
- test/rbbt/tsv/parallel/test_through.rb
|
551
531
|
- test/rbbt/tsv/test_parallel.rb
|
552
|
-
- test/rbbt/tsv/
|
553
|
-
- test/rbbt/tsv/test_matrix.rb
|
532
|
+
- test/rbbt/tsv/test_accessor.rb
|
554
533
|
- test/rbbt/tsv/test_change_id.rb
|
555
|
-
- test/rbbt/tsv/test_parser.rb
|
556
534
|
- test/rbbt/tsv/test_stream.rb
|
557
|
-
- test/rbbt/tsv/test_util.rb
|
558
|
-
- test/rbbt/tsv/test_accessor.rb
|
559
535
|
- test/rbbt/tsv/test_filter.rb
|
536
|
+
- test/rbbt/tsv/test_matrix.rb
|
560
537
|
- test/rbbt/tsv/test_attach.rb
|
561
538
|
- test/rbbt/tsv/test_manipulate.rb
|
562
|
-
- test/rbbt/tsv/
|
563
|
-
- test/rbbt/tsv/
|
539
|
+
- test/rbbt/tsv/test_field_index.rb
|
540
|
+
- test/rbbt/tsv/test_index.rb
|
541
|
+
- test/rbbt/tsv/test_util.rb
|
542
|
+
- test/rbbt/tsv/test_parser.rb
|
543
|
+
- test/rbbt/test_packed_index.rb
|
544
|
+
- test/rbbt/test_persist.rb
|
564
545
|
- test/rbbt/test_fix_width_table.rb
|
565
|
-
- test/
|
546
|
+
- test/rbbt/knowledge_base/test_traverse.rb
|
547
|
+
- test/rbbt/knowledge_base/test_entity.rb
|
548
|
+
- test/rbbt/knowledge_base/test_query.rb
|
549
|
+
- test/rbbt/knowledge_base/test_enrichment.rb
|
550
|
+
- test/rbbt/knowledge_base/test_syndicate.rb
|
551
|
+
- test/rbbt/knowledge_base/test_registry.rb
|
552
|
+
- test/rbbt/entity/test_identifiers.rb
|
553
|
+
- test/rbbt/test_monitor.rb
|
554
|
+
- test/rbbt/test_workflow.rb
|
555
|
+
- test/rbbt/test_annotations.rb
|
556
|
+
- test/rbbt/annotations/test_util.rb
|
557
|
+
- test/rbbt/test_resource.rb
|
558
|
+
- test/rbbt/persist/tsv/test_tokyocabinet.rb
|
559
|
+
- test/rbbt/persist/tsv/test_kyotocabinet.rb
|
560
|
+
- test/rbbt/persist/tsv/test_lmdb.rb
|
561
|
+
- test/rbbt/persist/tsv/test_leveldb.rb
|
562
|
+
- test/rbbt/persist/tsv/test_cdb.rb
|
563
|
+
- test/rbbt/persist/tsv/test_sharder.rb
|
564
|
+
- test/rbbt/persist/test_tsv.rb
|
565
|
+
- test/rbbt/test_tsv.rb
|