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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 641642d8cd4871a267b75c1d4c9e41eb0ff5c81b
4
- data.tar.gz: 28b2ec23f29f39f04c618277058d7a691c17bc4c
3
+ metadata.gz: '08fc0e36be76ddc12da08a71a3866246380800e5'
4
+ data.tar.gz: 7e146e65ad2c37c8563b9d09b4d05f64f2cf467a
5
5
  SHA512:
6
- metadata.gz: 28bb8d81971d76843af4e9f38b20a31bb66c5bead0b6ecd7967711207ac67d69e723bf14d51e2dbfc454804e073d614f89bbaae5026008facdd93d4352b9cc42
7
- data.tar.gz: 88998bb05a0aa162e8cf6fb10a22fec38f4c78a8afaa83a2277d91060315346d55e46ce298e98c24862786e7e85020372940d7a9310f8a92822f670ee788cbbf
6
+ metadata.gz: 83141c8792d440fd891dd6a8ced6328cf92bd253545e8722c8cfc622a46071095b13a6eed0ce163f863aa5c8f09a3d1ba5e82c47b33f594dd5b692f3a58f6a6a
7
+ data.tar.gz: b2e711647c50de9ea09686872a35f23be5cb82fe1801b6b97942d2ad0cab0a17aa96dbf2e65d4f836d860438c6b892217a01e0b669bb2afd7f2848c6880ecd9e
@@ -11,8 +11,6 @@ module Entity
11
11
  base.annotation :format
12
12
  base.annotation :organism
13
13
 
14
-
15
-
16
14
  class << base
17
15
  attr_accessor :identifier_files, :formats, :default_format, :name_format, :description_format
18
16
  end
@@ -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 = WorkflowRESTClient.get_json(File.join(@url, '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
- nil
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
- init_job(nil, params)
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
@@ -122,6 +122,8 @@ module TSV
122
122
  stream
123
123
  else
124
124
  file.join
125
+ raise "Aborted stream from Step #{file.path}" if file.aborted?
126
+ raise "Exception in stream from Step #{file.path}: #{file.messages.last}" if file.error?
125
127
  get_stream(file.path)
126
128
  end
127
129
  end
@@ -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
- return nil if not Open.exists? pid_file
347
- return nil if info[:pid].nil?
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
- @aborted || status == :aborted
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 (job.done? and not job.dirty?) or
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
- if job.error? or job.aborted? or (job.started? and not job.running? and not job.error?)
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 job.done? or job.started?
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 producing #{dep.path}: #{dep.messages.last}" if dep.error? or dep.aborted?
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
- dep.abort unless dep.done? or dep.aborted?
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 defined? @forked and @forked and running?
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
@@ -65,6 +65,9 @@ load_file Rbbt.etc['app.d/post.rb'].find_all
65
65
  #{{{ PRELOAD
66
66
  load_file Rbbt.etc['app.d/preload.rb'].find_all
67
67
 
68
+ #{{{ SINATRA
69
+ load_file Rbbt.lib['sinatra.rb'].find_all
70
+
68
71
  #{{{ RUN
69
72
  $title = app_name
70
73
  require 'rack'
@@ -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 = :remote if Open.remote?(path)
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.5
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-01 00:00:00.000000000 Z
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/rbbt/test_workflow.rb
487
+ - test/test_helper.rb
488
488
  - test/rbbt/resource/test_path.rb
489
- - test/rbbt/util/test_cmd.rb
490
- - test/rbbt/util/simpleopt/test_setup.rb
491
- - test/rbbt/util/simpleopt/test_get.rb
492
- - test/rbbt/util/simpleopt/test_parse.rb
493
- - test/rbbt/util/test_chain_methods.rb
494
- - test/rbbt/util/test_simpleDSL.rb
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/test_concurrency.rb
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/test_monitor.rb
541
- - test/rbbt/test_persist.rb
542
- - test/rbbt/test_annotations.rb
543
- - test/rbbt/persist/test_tsv.rb
544
- - test/rbbt/persist/tsv/test_lmdb.rb
545
- - test/rbbt/persist/tsv/test_kyotocabinet.rb
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/test_index.rb
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/parallel/test_through.rb
563
- - test/rbbt/tsv/parallel/test_traverse.rb
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/test_helper.rb
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