rbbt-util 5.13.26 → 5.13.27

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: 109a367647ca3e97bdd9cd9c7951f1dea64045d5
4
- data.tar.gz: 0fc762047146427ce7dd94eddb4a8b7a05616cda
3
+ metadata.gz: c5b4e97dff70829b6c281c60b2ab9ef251448997
4
+ data.tar.gz: 7ed1a51ccbaad554e8240cdfc155eefcd0113637
5
5
  SHA512:
6
- metadata.gz: 8be51c3acb036f80bba3c2cb9082244eecb1dc06892da9322ff8b1d813f99b2233bb34176590ae671a3632d031cc2c6220568f19829c4c9701907c7ec5bf0d76
7
- data.tar.gz: 55a3431a1e466e2b0aeb7d742592d9a24f9a69c1c4c15697c33b675dd4cd87c3f981627c476ef38adb85100a6b811d0329bd784a31c7faa96461cd0dfd541c57
6
+ metadata.gz: f91cf30ebefac18ff92fd44950744d83e083a50a85e4451104f7b664bee9a1863ed8c43c95d9f0a9863e4b2ff61e92f5eb963816eff2ae25be0b6cc3f8fa7752
7
+ data.tar.gz: 08e361e740c52d30de3711cc142b87ebd2692e357edd3fccca917b2973b7d25dbb16a4a3d5a4db2f02180bd028b413499a775d89f27fc69069366c0a663230b0
data/lib/rbbt/monitor.rb CHANGED
@@ -76,7 +76,12 @@ module Rbbt
76
76
  end
77
77
  info.values_at "pid", "ppid", "time"
78
78
  rescue Exception
79
- [nil, nil, File.atime(lock)]
79
+ time = begin
80
+ File.atime(lock)
81
+ rescue Exception
82
+ Time.now
83
+ end
84
+ [nil, nil, time]
80
85
  end
81
86
  end
82
87
 
@@ -4,6 +4,8 @@ module TSV
4
4
 
5
5
  def self.obj_stream(obj)
6
6
  case obj
7
+ when nil
8
+ nil
7
9
  when (defined? Step and Step)
8
10
  obj.result
9
11
  when IO, File
@@ -102,7 +102,7 @@ class RbbtProcessQueue
102
102
  end
103
103
 
104
104
  def clean
105
- if @process_monitor.alive? or @callback_thread.alive?
105
+ if (@process_monitor and @process_monitor.alive?) or (@callback_thread and @callback_thread.alive?)
106
106
  self.abort
107
107
  else
108
108
  self.join
@@ -111,8 +111,8 @@ class RbbtProcessQueue
111
111
 
112
112
  def abort
113
113
  begin
114
- @process_monitor.raise(Aborted.new); @process_monitor.join if @process_monitor and @process_monitor.alive?
115
- @callback_thread.raise(Aborted.new); @callback_thread.join if @callback_thread and @callback_thread.alive?
114
+ (@process_monitor.raise(Aborted.new); @process_monitor.join) if @process_monitor and @process_monitor.alive?
115
+ (@callback_thread.raise(Aborted.new); @callback_thread.join) if @callback_thread and @callback_thread.alive?
116
116
  ensure
117
117
  join
118
118
  end
@@ -70,7 +70,7 @@ module Log
70
70
  eta = (@max - @ticks) / (@ticks/used)
71
71
  end
72
72
 
73
- used = [used/3600, used/60 % 60, used % 60].map{|t| "%02i" % t }.join(':')
73
+ used = Misc.format_seconds(used)
74
74
  eta = [eta/3600, eta/60 % 60, eta % 60].map{|t| "%02i" % t }.join(':')
75
75
 
76
76
  indicator << " #{Log.color :yellow, used} used #{Log.color :yellow, eta} left"
@@ -96,7 +96,7 @@ module ConcurrentStream
96
96
  @aborted = false if t == Thread.current
97
97
  next if t == Thread.current
98
98
  Log.medium "Aborting thread #{t.inspect}"
99
- t.raise Aborted.new "From step: #{path}"
99
+ t.raise Aborted.new
100
100
  end if @threads
101
101
 
102
102
  sleeped = false
@@ -18,6 +18,13 @@ module Misc
18
18
  [colors, used]
19
19
  end
20
20
 
21
+ def self.format_seconds(time, extended = false)
22
+ seconds = time.to_i
23
+ str = [seconds/3600, seconds/60 % 60, seconds % 60].map{|t| "%02i" % t }.join(':')
24
+ str << ".%02i" % ((time - seconds) * 100) if extended
25
+ str
26
+ end
27
+
21
28
  def self.format_paragraph(text, size = 80, indent = 0, offset = 0)
22
29
  i = 0
23
30
  re = /((?:\n\s*\n\s*)|(?:\n\s*(?=\*)))/
@@ -1,6 +1,11 @@
1
- Lockfile.refresh = 5 * 60 #if ENV["RBBT_NO_LOCKFILE_REFRESH"] == "true"
2
- Lockfile.max_age = 60 * 60 * 5
3
- Lockfile.refresh=false
1
+ if ENV["RBBT_NO_LOCKFILE_REFRESH"] == "true"
2
+ Lockfile.refresh = false
3
+ Lockfile.max_age = 60 * 60 * 5
4
+ else
5
+ Lockfile.refresh = 3
6
+ Lockfile.max_age = 10
7
+ Lockfile.suspend = 3
8
+ end
4
9
 
5
10
  module Misc
6
11
 
@@ -29,7 +29,7 @@ if locks.any?
29
29
  pid, ppid, time = Rbbt.load_lock(lock)
30
30
  if not Misc.pid_exists? pid
31
31
  puts " Removing #{ lock }"
32
- FileUtils.rm lock
32
+ FileUtils.rm lock if File.exists? lock
33
33
  end
34
34
  end
35
35
  puts
@@ -42,8 +42,8 @@ if persists.any?
42
42
  pid, ppid, time = Rbbt.load_lock(lf)
43
43
  if not Misc.pid_exists? pid
44
44
  puts " Removing #{ persist }"
45
- FileUtils.rm persists
46
- FileUtils.rm lf
45
+ FileUtils.rm persists if File.exists? persists
46
+ FileUtils.rm lf if File.exists? lf
47
47
  end
48
48
  end
49
49
  puts
@@ -56,8 +56,8 @@ if sensiblewrites.any?
56
56
  pid, ppid, time = Rbbt.load_lock(lf)
57
57
  if not Misc.pid_exists? pid
58
58
  puts " Removing #{ sensiblewrite }"
59
- FileUtils.rm sensiblewrite
60
- FileUtils.rm lf
59
+ FileUtils.rm sensiblewrite if File.exists? sensiblewrite
60
+ FileUtils.rm lf if File.exists? lf
61
61
  end
62
62
  end
63
63
  puts
@@ -69,10 +69,10 @@ puts Log.color(:magenta, "# Workflows:")
69
69
  puts
70
70
  jobs.each do |workflow, tasks|
71
71
  tasks.each do |task, jobs|
72
- puts "* " << Log.color(:magenta, workflow) << "#" << Log.color(:yellow, task) << ": #{jobs.length}"
73
72
  done = []
74
73
  other = {}
75
74
  jobs.each do |file,h|
75
+ #puts "* " << Log.color(:magenta, workflow) << "#" << Log.color(:yellow, task) << ": #{jobs.length}"
76
76
  status = h[:status]
77
77
  if h[:status] == :done
78
78
  done << file
@@ -85,9 +85,9 @@ jobs.each do |workflow, tasks|
85
85
  list.each do |f,p|
86
86
  if not Misc.pid_exists?(p) or status.to_s =~ /error|aborted|missing/
87
87
  puts " Removing #{ f }"
88
- FileUtils.rm_rf f
89
- FileUtils.rm_rf f + '.info'
90
- FileUtils.rm_rf f + '.files'
88
+ FileUtils.rm_rf f if File.exists? f
89
+ FileUtils.rm_rf f + '.info' if File.exists? f + '.info'
90
+ FileUtils.rm_rf f + '.files' if File.exists? f + '.files'
91
91
  end
92
92
  end
93
93
  end
@@ -13,18 +13,20 @@ Report the status of the system
13
13
 
14
14
  $ rbbt system status
15
15
 
16
+ -u--uncomplete Print only uncompleted or error jobs
16
17
  -h--help Print this help
17
18
  EOF
18
19
  rbbt_usage and exit 0 if options[:help]
19
20
 
21
+ uncomplete = options.delete :uncomplete
20
22
 
21
23
  def pid_msg(pid)
22
- color = if Misc.pid_exists? pid
24
+ color = if pid and Misc.pid_exists? pid
23
25
  :green
24
26
  else
25
27
  :red
26
28
  end
27
- Log.color(color, pid)
29
+ Log.color(color, pid || "missing")
28
30
  end
29
31
 
30
32
  def status_msg(status)
@@ -42,7 +44,7 @@ def status_msg(status)
42
44
  nil
43
45
  end
44
46
  end
45
- Log.color(color, status)
47
+ Log.color(color, status.to_s)
46
48
  end
47
49
 
48
50
  locks = Rbbt.locks
@@ -53,38 +55,39 @@ puts Log.color(:magenta, "# System report")
53
55
  puts
54
56
  if locks.any?
55
57
  puts Log.color(:magenta, "Locks:")
56
- locks.each do |lock|
58
+ locks.sort_by{|f| File.exists?(f) ? File.ctime(f) : Time.now}.each do |lock|
57
59
  pid, ppid, time = Rbbt.load_lock(lock)
58
- time ||= File.atime lock
59
- puts " " << lock + Log.color(:blue, " -- time: #{Time.now - time}; ppid: #{ppid}; pid: #{pid_msg pid}")
60
+ time = File.exists?(lock) ? File.ctime(lock) : Time.now
61
+ puts " " << lock + Log.color(:blue, " -- time: #{Misc.format_seconds(Time.now - time)}; ppid: #{ppid}; pid: #{pid_msg pid}")
60
62
  end
61
63
  puts
62
64
  end
63
65
 
64
66
  if persists.any?
65
67
  puts Log.color(:magenta, "Persist:")
66
- persists.each do |persist|
67
- puts " " << persist
68
+ persists.sort_by{|f| File.exists?(f) ? File.ctime(f) : Time.now}.each do |persist|
69
+ time = File.exists?(persist) ? File.ctime(persist) : Time.now
70
+ puts " " << persist + Log.color(:blue, " -- time: #{Misc.format_seconds(Time.now - time)})")
68
71
  end
69
72
  puts
70
73
  end
71
74
 
72
75
  if sensiblewrites.any?
73
76
  puts Log.color(:magenta, "Writing:")
74
- sensiblewrites.each do |sensiblewrite|
77
+ sensiblewrites.sort_by{|f| File.exists?(f) ? File.ctime(f) : Time.now}.each do |sensiblewrite|
75
78
  pid, ppid, time = Rbbt.load_lock(sensiblewrite + '.lock')
76
- puts " " << sensiblewrite + Log.color(:blue, " -- time: #{Time.now - time}; ppid: #{ppid}; pid: #{pid_msg pid}")
79
+ time = File.exists?(sensiblewrite) ? File.ctime(sensiblewrite) : Time.now
80
+ puts " " << sensiblewrite + Log.color(:blue, " -- time: #{Misc.format_seconds(Time.now - time)}; ppid: #{ppid}; pid: #{pid_msg pid}")
77
81
  end
78
82
  puts
79
83
  end
80
84
 
81
85
  jobs = Rbbt.jobs
82
86
 
83
- puts Log.color(:magenta, "# Workflows:")
87
+ puts Log.color(:magenta, "# Workflows")
84
88
  puts
85
89
  jobs.each do |workflow, tasks|
86
90
  tasks.each do |task, jobs|
87
- puts "* " << Log.color(:magenta, workflow) << "#" << Log.color(:yellow, task) << ": "
88
91
  done = []
89
92
  other = {}
90
93
  jobs.each do |file,h|
@@ -96,9 +99,11 @@ jobs.each do |workflow, tasks|
96
99
  other[status||"missing"] << [file, h[:pid]]
97
100
  end
98
101
  end
99
- puts " " << Log.color(:green, "done") << ": " << done.length.to_s
102
+ next if uncomplete and other.empty?
103
+ puts "* " << Log.color(:magenta, workflow) << "#" << Log.color(:yellow, task) << ": " << Log.color(:green, "done") << " " << done.length.to_s
100
104
  other.each do |status, list|
101
- puts " " << status_msg(status) << ": " << list.collect{|f,p| p.nil? ? f : f + " (#{pid_msg p})"} * ", "
105
+ files_txt = list.collect{|f,p| p.nil? ? f : (f + " (#{pid_msg p})") }
106
+ puts " " << status_msg(status) << ": " << (files_txt * ", ")
102
107
  end
103
108
  end
104
109
  end
@@ -0,0 +1,31 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')
2
+
3
+ require 'rbbt-util'
4
+ require 'rbbt/util/misc/lock'
5
+
6
+ class TestLock < Test::Unit::TestCase
7
+ def __test_stress
8
+ size = 1000000
9
+ num = 50
10
+ cpus = 200
11
+ TmpFile.with_file do |dir|
12
+ TSV.traverse (0..size).to_a, :cpus => cpus, :type => :array, :bar => true do |i|
13
+ begin
14
+ v = rand(num)
15
+ file = File.join(dir, "file-" << v.to_s)
16
+ Persist.persist("foo", :string, :file => file, :update => true) do
17
+ Process.pid.to_s
18
+ end
19
+
20
+ txt = `ls -la /proc/#{Process.pid}/fd |grep deleted`
21
+ Open.write(file, txt)
22
+ puts [Process.pid, txt.split("\n").length] * ": "
23
+ rescue Exception
24
+ Log.exception $!
25
+ raise $!
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
@@ -6,7 +6,13 @@ require 'rbbt/entity'
6
6
 
7
7
  class TestMisc < Test::Unit::TestCase
8
8
 
9
- def _test_format_paragraph
9
+ def test_format_seconds
10
+ t = 61.3232
11
+ assert_equal "00:01:01", Misc.format_seconds(t)
12
+ assert_equal "00:01:01.32", Misc.format_seconds(t, true)
13
+ end
14
+
15
+ def test_format_paragraph
10
16
  p = <<-EOF
11
17
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
12
18
  incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
@@ -26,7 +32,7 @@ in culpa qui officia deserunt mollit anim id est laborum.
26
32
  assert Misc.format_paragraph(p, 70, 10, 5) =~ /\n\s*\* two/sm
27
33
  end
28
34
 
29
- def _test_format_dl
35
+ def test_format_dl
30
36
  p1 = <<-EOF
31
37
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
32
38
  incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
@@ -56,13 +62,13 @@ eum fugiat quo voluptas nulla pariatur?"
56
62
  assert Misc.format_definition_list({:paragraph_first => p1, :paragraph_second => p2}) =~ / /
57
63
  end
58
64
 
59
- def _test_parse_cmd_params
65
+ def test_parse_cmd_params
60
66
  assert_equal ["workflow", "task", "Translation", "translate", "-f", "Associated Gene Name", "-l", "-"],
61
67
  Misc.parse_cmd_params("workflow task Translation translate -f 'Associated Gene Name' -l -")
62
68
  end
63
69
 
64
70
 
65
- def _test_fixutf8
71
+ def test_fixutf8
66
72
  string = "abc\xffdef"
67
73
  string = string.force_encoding("UTF-8") if string.respond_to? :force_encoding
68
74
  assert(! string.valid_encoding?) if string.respond_to? :valid_encoding?
@@ -71,37 +77,37 @@ eum fugiat quo voluptas nulla pariatur?"
71
77
  assert( Misc.fixutf8(string).valid_encoding) if string.respond_to? :valid_encoding
72
78
  end
73
79
 
74
- def _test_colors_for
80
+ def test_colors_for
75
81
  colors, used = Misc.colors_for([1,2,2,1,2,1,2,2,3,3,2,3,2])
76
82
  assert_equal Misc::COLOR_LIST[1], used[2]
77
83
  end
78
84
 
79
- def _test_total_length
85
+ def test_total_length
80
86
  ranges = [(0..100), (50..150), (120..160)]
81
87
  ranges = [(0..100), (50..150), (120..160), (51..70)]
82
88
  assert_equal 161, Misc.total_length(ranges)
83
89
  end
84
90
 
85
- def _test_id_filename?
91
+ def test_id_filename?
86
92
  TmpFile.with_file("") do |file|
87
93
  assert Misc.is_filename?(file)
88
94
  assert ! Misc.is_filename?("TEST STRING")
89
95
  end
90
96
  end
91
97
 
92
- def _test_merge_sorted_arrays
98
+ def test_merge_sorted_arrays
93
99
  assert_equal [1,2,3,4], Misc.merge_sorted_arrays([1,3], [2,4])
94
100
  end
95
101
 
96
- def _test_intersect_sorted_arrays
102
+ def test_intersect_sorted_arrays
97
103
  assert_equal [2,4], Misc.intersect_sorted_arrays([1,2,3,4], [2,4])
98
104
  end
99
105
 
100
- def _test_sorted_array_matches
106
+ def test_sorted_array_matches
101
107
  assert_equal [1,3], Misc.sorted_array_hits(%w(a b c d e), %w(b d))
102
108
  end
103
109
 
104
- def _test_binary_include?
110
+ def test_binary_include?
105
111
  a = %w(a b c d e).sort
106
112
  assert Misc.binary_include?(a, "a")
107
113
  assert(!Misc.binary_include?(a, "z"))
@@ -110,12 +116,12 @@ eum fugiat quo voluptas nulla pariatur?"
110
116
  assert(Misc.binary_include?(a, "d"))
111
117
  end
112
118
 
113
- def _test_process_to_hash
119
+ def test_process_to_hash
114
120
  list = [1,2,3,4]
115
121
  assert_equal 4, Misc.process_to_hash(list){|l| l.collect{|e| e * 2}}[2]
116
122
  end
117
123
 
118
- def _test_pipe_fork
124
+ def test_pipe_fork
119
125
  sout, sin = Misc.pipe
120
126
  pid = Process.fork do
121
127
  Misc.purge_pipes(sin)
@@ -127,7 +133,7 @@ eum fugiat quo voluptas nulla pariatur?"
127
133
  Process.kill :INT, pid
128
134
  end
129
135
 
130
- def _test_open_pipe
136
+ def test_open_pipe
131
137
  t = 5
132
138
  stream = Misc.open_pipe do |sin|
133
139
  t.times do |i|
@@ -148,7 +154,7 @@ eum fugiat quo voluptas nulla pariatur?"
148
154
  assert_equal (0..t-1).to_a.collect{|i| "LINE #{ i }"}, lines
149
155
  end
150
156
 
151
- def _test_open_pipe_fork
157
+ def test_open_pipe_fork
152
158
  t = 5
153
159
  stream = Misc.open_pipe(true) do |sin|
154
160
  t.times do |i|
@@ -169,7 +175,7 @@ eum fugiat quo voluptas nulla pariatur?"
169
175
  assert_equal (0..t-1).to_a.collect{|i| "LINE #{ i }"}, lines
170
176
  end
171
177
 
172
- def _test_open_pipe_fork_cascade
178
+ def test_open_pipe_fork_cascade
173
179
  t = 500
174
180
  sleep_time = 2.0 / t
175
181
  time = Time.now
@@ -205,7 +211,7 @@ eum fugiat quo voluptas nulla pariatur?"
205
211
  assert_equal (0..t-1).to_a.collect{|i| "LINE #{ i }".reverse.downcase}, lines
206
212
  end
207
213
 
208
- def _test_tee_stream
214
+ def test_tee_stream
209
215
  t = 500
210
216
  sleep_time = 2.0 / t
211
217
  time = Time.now
@@ -255,7 +261,7 @@ eum fugiat quo voluptas nulla pariatur?"
255
261
  end
256
262
 
257
263
 
258
- def _test_string2hash
264
+ def test_string2hash
259
265
  assert(Misc.string2hash("--user-agent=firefox").include? "--user-agent")
260
266
  assert_equal(true, Misc.string2hash(":true")[:true])
261
267
  assert_equal(true, Misc.string2hash("true")["true"])
@@ -266,16 +272,16 @@ eum fugiat quo voluptas nulla pariatur?"
266
272
  assert_equal(:j, Misc.string2hash("a=b#c=d#:h=:j")[:h])
267
273
  end
268
274
 
269
- def _test_named_array
275
+ def test_named_array
270
276
  a = NamedArray.setup([1,2,3,4], %w(a b c d))
271
277
  assert_equal(1, a['a'])
272
278
  end
273
279
 
274
- def _test_path_relative_to
280
+ def test_path_relative_to
275
281
  assert_equal "test/foo", Misc.path_relative_to('/test', '/test/test/foo')
276
282
  end
277
283
 
278
- def _test_hash2string
284
+ def test_hash2string
279
285
  hash = {}
280
286
  assert_equal hash, Misc.string2hash(Misc.hash2string(hash))
281
287
 
@@ -293,14 +299,14 @@ eum fugiat quo voluptas nulla pariatur?"
293
299
 
294
300
  end
295
301
 
296
- def _test_merge
302
+ def test_merge
297
303
  a = [[1],[2]]
298
304
  a = NamedArray.setup a, %w(1 2)
299
305
  a.merge [3,4]
300
306
  assert_equal [1,3], a[0]
301
307
  end
302
308
 
303
- def _test_indiferent_hash
309
+ def test_indiferent_hash
304
310
  a = {:a => 1, "b" => 2}
305
311
  a.extend IndiferentHash
306
312
 
@@ -310,7 +316,7 @@ eum fugiat quo voluptas nulla pariatur?"
310
316
  assert_equal 2, a[:b]
311
317
  end
312
318
 
313
- def _test_lockfile
319
+ def test_lockfile
314
320
 
315
321
  TmpFile.with_file do |tmpfile|
316
322
  pids = []
@@ -334,7 +340,7 @@ eum fugiat quo voluptas nulla pariatur?"
334
340
  end
335
341
  end
336
342
 
337
- def _test_positions2hash
343
+ def test_positions2hash
338
344
  inputs = Misc.positional2hash([:one, :two, :three], 1, :two => 2, :four => 4)
339
345
  assert_equal 1, inputs[:one]
340
346
  assert_equal 2, inputs[:two]
@@ -342,12 +348,12 @@ eum fugiat quo voluptas nulla pariatur?"
342
348
  assert_equal nil, inputs[:four]
343
349
  end
344
350
 
345
- def _test_mean
351
+ def test_mean
346
352
  assert_equal 2, Misc.mean([1,2,3])
347
353
  assert_equal 3, Misc.mean([1,2,3,4,5])
348
354
  end
349
355
 
350
- def _test_zip_fields
356
+ def test_zip_fields
351
357
  current = [[:a,1], [:b,2]]
352
358
  assert_equal [[:a, :b],[1,2]], Misc.zip_fields(current)
353
359
  assert_equal current, Misc.zip_fields(Misc.zip_fields(current))
@@ -359,7 +365,7 @@ eum fugiat quo voluptas nulla pariatur?"
359
365
  assert_equal current, Misc.zip_fields(Misc.zip_fields(current)).collect{|v| v.compact }
360
366
  end
361
367
 
362
- def _test_add_zipped
368
+ def test_add_zipped
363
369
  current = [[:a,1], [:b,2]]
364
370
  new = %w(A B)
365
371
  Misc.append_zipped current, new
@@ -370,20 +376,20 @@ eum fugiat quo voluptas nulla pariatur?"
370
376
  assert_equal Math.sqrt(2), Misc.sd([1,3])
371
377
  end
372
378
 
373
- def _test_divide
379
+ def test_divide
374
380
  assert_equal 2, Misc.divide(%w(1 2 3 4 5 6 7 8 9),2).length
375
381
  end
376
382
 
377
- def _test_ordered_divide
383
+ def test_ordered_divide
378
384
  assert_equal 5, Misc.ordered_divide(%w(1 2 3 4 5 6 7 8 9),2).length
379
385
  end
380
386
 
381
- def _test_collapse_ranges
387
+ def test_collapse_ranges
382
388
  ranges = [(0..100), (50..150), (51..61),(200..250), (300..324),(320..350)]
383
389
  assert_equal [(0..150),(200..250), (300..350)], Misc.collapse_ranges(ranges)
384
390
  end
385
391
 
386
- def _test_humanize
392
+ def test_humanize
387
393
  str1 = "test_string"
388
394
  str2 = "TEST_string"
389
395
  str3 = "test"
@@ -395,22 +401,22 @@ eum fugiat quo voluptas nulla pariatur?"
395
401
  assert_equal "mutation_enrichment", Misc.snake_case("MutationEnrichment")
396
402
  end
397
403
 
398
- def _test_snake_case
404
+ def test_snake_case
399
405
  str1 = "ACRONIMTest"
400
406
  str2 = "ACRONIM_test"
401
407
  assert_equal "ACRONIM_test", Misc.snake_case(str1)
402
408
  assert_equal "ACRONIM_test", Misc.snake_case(str2)
403
409
  end
404
410
 
405
- def _test_correct_vcf_mutations
411
+ def test_correct_vcf_mutations
406
412
  assert_equal [737407, ["-----", "-----G", "-----GTTAAT"]], Misc.correct_vcf_mutation(737406, "GTTAAT", "G,GG,GGTTAAT")
407
413
  end
408
414
 
409
- def _test_fingerprint
415
+ def test_fingerprint
410
416
  assert_equal '{a=>1}', Misc.fingerprint({:a => 1})
411
417
  end
412
418
 
413
- def _test_tarize
419
+ def test_tarize
414
420
  path = File.expand_path('/home/mvazquezg/git/rbbt-util/lib')
415
421
  stream = Misc.tarize(path)
416
422
  TmpFile.with_file do |res|
@@ -420,7 +426,7 @@ eum fugiat quo voluptas nulla pariatur?"
420
426
  end
421
427
  end
422
428
 
423
- def _test_camel_case
429
+ def test_camel_case
424
430
  assert_equal "DbSNP", Misc.camel_case("db_SNP")
425
431
  assert_equal "D3Js", Misc.camel_case("D3Js")
426
432
  assert_equal "Structure", Misc.camel_case("Structure")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.13.26
4
+ version: 5.13.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
@@ -313,6 +313,7 @@ files:
313
313
  - test/rbbt/util/concurrency/test_processes.rb
314
314
  - test/rbbt/util/concurrency/test_threads.rb
315
315
  - test/rbbt/util/log/test_progress.rb
316
+ - test/rbbt/util/misc/test_lock.rb
316
317
  - test/rbbt/util/misc/test_pipes.rb
317
318
  - test/rbbt/util/simpleopt/test_get.rb
318
319
  - test/rbbt/util/simpleopt/test_parse.rb
@@ -370,6 +371,7 @@ test_files:
370
371
  - test/rbbt/util/test_simpleDSL.rb
371
372
  - test/rbbt/util/test_log.rb
372
373
  - test/rbbt/util/test_open.rb
374
+ - test/rbbt/util/misc/test_lock.rb
373
375
  - test/rbbt/util/misc/test_pipes.rb
374
376
  - test/rbbt/util/test_concurrency.rb
375
377
  - test/rbbt/util/test_R.rb