rbbt-util 5.42.0 → 5.44.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rbbt/annotations/util.rb +1 -1
  3. data/lib/rbbt/association/database.rb +2 -1
  4. data/lib/rbbt/association/index.rb +1 -0
  5. data/lib/rbbt/association/util.rb +14 -4
  6. data/lib/rbbt/entity.rb +6 -5
  7. data/lib/rbbt/hpc/batch.rb +19 -17
  8. data/lib/rbbt/hpc/orchestrate/batches.rb +1 -1
  9. data/lib/rbbt/hpc/orchestrate/chains.rb +3 -4
  10. data/lib/rbbt/knowledge_base/traverse.rb +24 -16
  11. data/lib/rbbt/persist/tsv/tokyocabinet.rb +1 -1
  12. data/lib/rbbt/resource/path.rb +7 -2
  13. data/lib/rbbt/resource.rb +1 -1
  14. data/lib/rbbt/tsv/accessor.rb +6 -11
  15. data/lib/rbbt/tsv/dumper.rb +21 -10
  16. data/lib/rbbt/tsv/index.rb +2 -1
  17. data/lib/rbbt/tsv/parallel/traverse.rb +44 -0
  18. data/lib/rbbt/tsv/parser.rb +7 -6
  19. data/lib/rbbt/tsv/serializers.rb +1 -1
  20. data/lib/rbbt/tsv/util.rb +12 -0
  21. data/lib/rbbt/util/log/progress.rb +1 -1
  22. data/lib/rbbt/util/misc/bgzf.rb +5 -4
  23. data/lib/rbbt/util/misc/development.rb +4 -4
  24. data/lib/rbbt/util/misc/math.rb +0 -1
  25. data/lib/rbbt/util/misc.rb +1 -1
  26. data/lib/rbbt/util/open.rb +1 -1
  27. data/lib/rbbt/workflow/remote_workflow/driver/rest.rb +8 -3
  28. data/lib/rbbt/workflow/remote_workflow/remote_step.rb +4 -0
  29. data/lib/rbbt/workflow/step/info.rb +1 -0
  30. data/lib/rbbt/workflow/step.rb +2 -1
  31. data/lib/rbbt/workflow/util/trace.rb +2 -2
  32. data/lib/rbbt/workflow.rb +2 -2
  33. data/python/rbbt/__init__.py +2 -2
  34. data/share/rbbt_commands/workflow/task +1 -1
  35. metadata +4 -220
  36. data/test/rbbt/annotations/test_util.rb +0 -43
  37. data/test/rbbt/association/test_database.rb +0 -89
  38. data/test/rbbt/association/test_index.rb +0 -127
  39. data/test/rbbt/association/test_item.rb +0 -15
  40. data/test/rbbt/association/test_open.rb +0 -63
  41. data/test/rbbt/association/test_util.rb +0 -108
  42. data/test/rbbt/entity/test_identifiers.rb +0 -74
  43. data/test/rbbt/hpc/orchestrate/test_batches.rb +0 -113
  44. data/test/rbbt/hpc/orchestrate/test_chains.rb +0 -139
  45. data/test/rbbt/hpc/orchestrate/test_rules.rb +0 -92
  46. data/test/rbbt/hpc/test_batch.rb +0 -68
  47. data/test/rbbt/hpc/test_orchestrate.rb +0 -144
  48. data/test/rbbt/hpc/test_pbs.rb +0 -43
  49. data/test/rbbt/hpc/test_slurm.rb +0 -32
  50. data/test/rbbt/knowledge_base/test_enrichment.rb +0 -48
  51. data/test/rbbt/knowledge_base/test_entity.rb +0 -42
  52. data/test/rbbt/knowledge_base/test_query.rb +0 -46
  53. data/test/rbbt/knowledge_base/test_registry.rb +0 -81
  54. data/test/rbbt/knowledge_base/test_syndicate.rb +0 -48
  55. data/test/rbbt/knowledge_base/test_traverse.rb +0 -85
  56. data/test/rbbt/persist/test_tsv.rb +0 -88
  57. data/test/rbbt/persist/tsv/test_cdb.rb +0 -18
  58. data/test/rbbt/persist/tsv/test_kyotocabinet.rb +0 -27
  59. data/test/rbbt/persist/tsv/test_leveldb.rb +0 -18
  60. data/test/rbbt/persist/tsv/test_lmdb.rb +0 -18
  61. data/test/rbbt/persist/tsv/test_sharder.rb +0 -164
  62. data/test/rbbt/persist/tsv/test_tokyocabinet.rb +0 -262
  63. data/test/rbbt/resource/test_path.rb +0 -49
  64. data/test/rbbt/test_annotations.rb +0 -167
  65. data/test/rbbt/test_association.rb +0 -103
  66. data/test/rbbt/test_entity.rb +0 -249
  67. data/test/rbbt/test_fix_width_table.rb +0 -135
  68. data/test/rbbt/test_hpc.rb +0 -16
  69. data/test/rbbt/test_knowledge_base.rb +0 -149
  70. data/test/rbbt/test_monitor.rb +0 -11
  71. data/test/rbbt/test_packed_index.rb +0 -68
  72. data/test/rbbt/test_persist.rb +0 -85
  73. data/test/rbbt/test_resource.rb +0 -110
  74. data/test/rbbt/test_tsv.rb +0 -669
  75. data/test/rbbt/test_workflow.rb +0 -604
  76. data/test/rbbt/tsv/parallel/test_through.rb +0 -40
  77. data/test/rbbt/tsv/parallel/test_traverse.rb +0 -456
  78. data/test/rbbt/tsv/test_accessor.rb +0 -315
  79. data/test/rbbt/tsv/test_attach.rb +0 -718
  80. data/test/rbbt/tsv/test_change_id.rb +0 -61
  81. data/test/rbbt/tsv/test_csv.rb +0 -49
  82. data/test/rbbt/tsv/test_excel.rb +0 -171
  83. data/test/rbbt/tsv/test_field_index.rb +0 -19
  84. data/test/rbbt/tsv/test_filter.rb +0 -187
  85. data/test/rbbt/tsv/test_index.rb +0 -302
  86. data/test/rbbt/tsv/test_manipulate.rb +0 -337
  87. data/test/rbbt/tsv/test_marshal.rb +0 -24
  88. data/test/rbbt/tsv/test_matrix.rb +0 -20
  89. data/test/rbbt/tsv/test_parallel.rb +0 -7
  90. data/test/rbbt/tsv/test_parser.rb +0 -101
  91. data/test/rbbt/tsv/test_stream.rb +0 -253
  92. data/test/rbbt/tsv/test_util.rb +0 -52
  93. data/test/rbbt/util/R/test_eval.rb +0 -43
  94. data/test/rbbt/util/R/test_model.rb +0 -130
  95. data/test/rbbt/util/R/test_plot.rb +0 -38
  96. data/test/rbbt/util/concurrency/processes/test_socket.rb +0 -70
  97. data/test/rbbt/util/concurrency/test_processes.rb +0 -192
  98. data/test/rbbt/util/concurrency/test_threads.rb +0 -40
  99. data/test/rbbt/util/log/test_progress.rb +0 -111
  100. data/test/rbbt/util/misc/test_bgzf.rb +0 -48
  101. data/test/rbbt/util/misc/test_communication.rb +0 -11
  102. data/test/rbbt/util/misc/test_development.rb +0 -26
  103. data/test/rbbt/util/misc/test_format.rb +0 -10
  104. data/test/rbbt/util/misc/test_indiferent_hash.rb +0 -14
  105. data/test/rbbt/util/misc/test_lock.rb +0 -77
  106. data/test/rbbt/util/misc/test_multipart_payload.rb +0 -202
  107. data/test/rbbt/util/misc/test_omics.rb +0 -116
  108. data/test/rbbt/util/misc/test_pipes.rb +0 -343
  109. data/test/rbbt/util/misc/test_serialize.rb +0 -24
  110. data/test/rbbt/util/python/test_util.rb +0 -25
  111. data/test/rbbt/util/simpleopt/test_get.rb +0 -12
  112. data/test/rbbt/util/simpleopt/test_parse.rb +0 -10
  113. data/test/rbbt/util/simpleopt/test_setup.rb +0 -76
  114. data/test/rbbt/util/test_R.rb +0 -37
  115. data/test/rbbt/util/test_chain_methods.rb +0 -22
  116. data/test/rbbt/util/test_cmd.rb +0 -87
  117. data/test/rbbt/util/test_colorize.rb +0 -22
  118. data/test/rbbt/util/test_concurrency.rb +0 -6
  119. data/test/rbbt/util/test_config.rb +0 -69
  120. data/test/rbbt/util/test_excel2tsv.rb +0 -10
  121. data/test/rbbt/util/test_filecache.rb +0 -36
  122. data/test/rbbt/util/test_log.rb +0 -52
  123. data/test/rbbt/util/test_migrate.rb +0 -36
  124. data/test/rbbt/util/test_misc.rb +0 -723
  125. data/test/rbbt/util/test_open.rb +0 -200
  126. data/test/rbbt/util/test_procpath.rb +0 -23
  127. data/test/rbbt/util/test_python.rb +0 -140
  128. data/test/rbbt/util/test_semaphore.rb +0 -36
  129. data/test/rbbt/util/test_simpleDSL.rb +0 -55
  130. data/test/rbbt/util/test_simpleopt.rb +0 -11
  131. data/test/rbbt/util/test_ssh.rb +0 -10
  132. data/test/rbbt/util/test_tmpfile.rb +0 -32
  133. data/test/rbbt/workflow/step/test_dependencies.rb +0 -299
  134. data/test/rbbt/workflow/step/test_save_load_inputs.rb +0 -136
  135. data/test/rbbt/workflow/test_doc.rb +0 -30
  136. data/test/rbbt/workflow/test_remote_workflow.rb +0 -98
  137. data/test/rbbt/workflow/test_schedule.rb +0 -0
  138. data/test/rbbt/workflow/test_step.rb +0 -231
  139. data/test/rbbt/workflow/test_task.rb +0 -85
  140. data/test/rbbt/workflow/util/test_archive.rb +0 -31
  141. data/test/rbbt/workflow/util/test_data.rb +0 -67
  142. data/test/rbbt/workflow/util/test_orchestrator.rb +0 -273
  143. data/test/test_helper.rb +0 -90
@@ -1,604 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
- require 'rbbt/workflow'
3
- require 'rbbt/util/tmpfile'
4
- require 'test/unit'
5
-
6
- module TestWF
7
- extend Workflow
8
-
9
- helper :user do
10
- "User"
11
- end
12
-
13
- task :user => :string do
14
- user
15
- end
16
-
17
- str = "TEST"
18
- task :str => :string do
19
- str
20
- end
21
-
22
- dep :str
23
- task :reverse => :string do
24
- step(:str).load.reverse
25
- end
26
-
27
- dep :str
28
- task :downcase => :string do
29
- step(:str).load.downcase
30
- end
31
-
32
- dep :str
33
- input :times, :integer, "Times to repeat"
34
- task :repeat => :string do |times|
35
- [step(:str).load] * times * "\n"
36
- end
37
-
38
- input :number, :float, "Number to doble"
39
- def self.double(number)
40
- 2 * number
41
- end
42
- task :double => :float
43
-
44
- desc <<-EOT
45
- Returns numer * 2 lines containing TEST
46
- EOT
47
- dep :str
48
- dep :double
49
- task :repeat2 => :string do
50
- [step(:str).load] * step(:double).load * "\n"
51
- end
52
-
53
- dep :str, :repeat, :repeat2
54
- task :double_dep => :array do
55
- [] << step(:str).load << step(:repeat).load << step(:repeat2).load
56
- end
57
-
58
- export_synchronous :double
59
- export_asynchronous :repeat2
60
-
61
- input :letter, :string, "Letter", "D"
62
- task :letter => :string do |l|
63
- l
64
- end
65
-
66
- dep :letter
67
- task :letter_repeat => :string do |l|
68
- ([step(:letter).load] * 2) * ""
69
- end
70
-
71
- dep :letter
72
- dep :letter_repeat, :letter => "A"
73
- task :two_letters => :string do
74
- dependencies.collect{|d| d.load } * ":"
75
- end
76
-
77
- task :stream => :array do
78
- Misc.open_pipe do |sin|
79
- 5.times do |i|
80
- sin.puts "line #{ i }"
81
- sleep 1
82
- end
83
- end
84
- end
85
-
86
- dep :stream
87
- task :stream2 => :array do
88
- TSV.get_stream step(:stream)
89
- end
90
-
91
- input :name, :string, "Name"
92
- task :input_dep => :text do |name|
93
- <<-EOF
94
- Hi #{name}:
95
- This is the input text
96
- for this dependency
97
- EOF
98
- end
99
-
100
- input :text, :text, "Input text"
101
- task :reverse_input_text => :text do |text|
102
- text.reverse
103
- end
104
-
105
- dep :input_dep
106
- dep :reverse_input_text, :text => :input_dep
107
- task :send_input_dep_to_reverse => :text do
108
- TSV.get_stream step(:reverse_input_text)
109
- end
110
-
111
- input :i, :string, "Input", "A"
112
- task :t1 => :string do |i|
113
- i
114
- end
115
-
116
- input :i, :string, "Input", "B"
117
- task :t2 => :string do |i|
118
- i
119
- end
120
-
121
- dep :t1, :i => "C"
122
- dep :t2
123
- task :t3 => :string do |i|
124
- step(:t1).load + step(:t2).load
125
- end
126
-
127
- input :name, :string, "Name", nil, :jobname => true
128
- task :call_name => :string do |name|
129
- "Hi #{name}"
130
- end
131
-
132
- input :num, :integer
133
- task :odd => :integer do |num|
134
- raise ParameterException, "Not odd" if num % 2 == 0
135
- num
136
- end
137
-
138
- dep :odd, :num => 10, :compute => :canfail
139
- dep :odd, :num => 11, :compute => :canfail
140
- dep :odd, :num => 12, :compute => :canfail
141
- dep :odd, :num => 13, :compute => :canfail
142
- task :sum_odds => :integer do
143
- dependencies.inject(0) do |acc, dep|
144
- acc += dep.load unless dep.error?
145
- acc
146
- end
147
- end
148
-
149
- dep :sum_odds
150
- task :sum_odds_str => :string do
151
- "Sum odds: " << step(:sum_odds).load.to_s
152
- end
153
-
154
- input :file, :file, "Save file"
155
- task :reverse_file => :text do |file|
156
- Open.read(file).reverse
157
- end
158
-
159
- task :create_file => :text do |file|
160
- Open.write(file('a'), "A")
161
- Open.write(file('b'), "B")
162
- "DONE"
163
- end
164
-
165
- dep_task :reverse_step_file, TestWF, :reverse_file do |jobname, options, dependencies|
166
- dep = dependencies.flatten.first
167
- end
168
-
169
- task :overr_orig => :string do
170
- "over"
171
- end
172
-
173
- task :overr_alt => :string do
174
- "alt"
175
- end
176
-
177
- dep :overr_orig
178
- task :overr_target => :string do
179
- step(:overr_orig).load.reverse
180
- end
181
-
182
- dep :overr_alt, :not_overriden => true
183
- dep :overr_target, "TestWF#overr_orig" => :overr_alt, :not_overriden => true
184
- task :overr_action => :string do
185
- step(:overr_target).load.upcase
186
- end
187
-
188
-
189
- dep :overr_alt, :not_overriden => true
190
- dep :overr_target, "TestWF#overr_orig" => :overr_alt
191
- task :overr_action2 => :string do
192
- step(:overr_target).load.upcase
193
- end
194
-
195
-
196
- end
197
-
198
- TestWF.workdir = Rbbt.tmp.test.jobs.TestWF
199
-
200
- class TestWorkflow < Test::Unit::TestCase
201
-
202
-
203
- def test_repo_marshal
204
- TmpFile.with_file do |tmpdir|
205
- tmpdir = Rbbt.tmp.repo_dir.find
206
- repo = File.join(tmpdir, 'repo')
207
-
208
- filename = 'file'
209
- Open.repository_dirs.push(repo)
210
-
211
- job = TestWF.job(:call_name, "Miguel")
212
- job.run
213
-
214
- obj = job.info
215
- Open.write(File.join(repo, filename), Marshal.dump(obj))
216
- new =Open.open(File.join(repo, filename)) do |f|
217
- Marshal.load(f)
218
- end
219
-
220
- assert_equal new, obj
221
- end
222
-
223
- end
224
-
225
- def test_in_repo
226
- job = TestWF.job(:call_name, "Miguel")
227
- assert_equal "Hi Miguel", job.run
228
- assert_equal "Miguel", job.clean_name
229
- end
230
-
231
- def test_as_jobname
232
- job = TestWF.job(:call_name, "Miguel")
233
- assert_equal "Hi Miguel", job.run
234
- assert_equal "Miguel", job.clean_name
235
-
236
- job = TestWF.job(:call_name, nil, :name => "Miguel")
237
- assert_equal "Hi Miguel", job.run
238
- assert_equal "Miguel", job.clean_name
239
- end
240
-
241
- def test_update_on_input_dependency_update
242
- Open.repository_dirs << File.join(ENV["HOME"],".rbbt/tmp/test/workflow")
243
- Misc.with_env "RBBT_UPDATE", "true" do
244
- send_input_dep_to_reverse_job = TestWF.job(:send_input_dep_to_reverse, nil, :name => "Miguel")
245
- send_input_dep_to_reverse_job.clean
246
- send_input_dep_to_reverse_job.run
247
-
248
- input_dep_job = send_input_dep_to_reverse_job.step(:input_dep)
249
- mtime_orig = Open.mtime send_input_dep_to_reverse_job.step(:reverse_input_text).path
250
-
251
- sleep 2
252
- input_dep_job.clean
253
- input_dep_job.run
254
- send_input_dep_to_reverse_job = TestWF.job(:send_input_dep_to_reverse, nil, :name => "Miguel")
255
-
256
- send_input_dep_to_reverse_job.run
257
- mtime_new = Open.mtime send_input_dep_to_reverse_job.step(:reverse_input_text).path
258
- assert mtime_orig < mtime_new
259
- end
260
- end
261
-
262
- def test_helper
263
- assert_equal "User", TestWF.job(:user, "Default", :number => 3).run
264
- end
265
-
266
- def test_job
267
- str = "TEST"
268
- job = TestWF.job(:repeat2, "Default", :number => 3).clean.fork
269
- while not job.done?
270
- sleep 1
271
- end
272
-
273
- raise job.messages.last if job.error?
274
-
275
- assert_equal ["TEST"] * 6 * "\n", job.load
276
- end
277
-
278
- def test_with_subdir
279
- str = "TEST"
280
- job = TestWF.job(:repeat2, "Default", :number => 3).fork
281
- while not job.done?
282
- sleep 1
283
- end
284
-
285
- raise job.messages.last if job.error?
286
-
287
- assert_equal ["TEST"] * 6 * "\n", job.load
288
- end
289
-
290
- def test_search
291
- str = "TEST"
292
- TestWF.jobs(:repeat2).each do |name|
293
- TestWF.load_name(:repeat2, name).clean
294
- end
295
- job1 = TestWF.job(:repeat2, "subdir/Default", :number => 3).clean.fork
296
- job2 = TestWF.job(:repeat2, "subdir/Other", :number => 3).clean.fork
297
- job3 = TestWF.job(:repeat2, "Default", :number => 3).clean.fork
298
-
299
- while not job1.done? and not job2.done? and not job3.done?
300
- sleep 1
301
- end
302
-
303
- assert_equal [job1.name, job2.name].sort, TestWF.jobs(:repeat2, "subdir/").sort
304
- assert_equal [job1.name].sort, TestWF.jobs(:repeat2, "subdir/Default")
305
- assert TestWF.jobs(:repeat2).include?(job1.name)
306
- assert TestWF.jobs(:repeat2).include?(job2.name)
307
- assert TestWF.jobs(:repeat2).include?(job3.name)
308
- assert TestWF.load_name(:repeat2, job3.name).done?
309
- assert_equal "TEST\nTEST\nTEST\nTEST\nTEST\nTEST", TestWF.load_name(:repeat2, TestWF.jobs(:repeat2).first).load
310
- end
311
-
312
- def test_double_dep
313
- assert_equal ["TEST", "TEST\nTEST", "TEST\nTEST\nTEST\nTEST"], TestWF.job(:double_dep, "foo", :times => 2, :number => 2).clean.run
314
- end
315
-
316
- def test_object_workflow
317
- a = ""
318
- a.extend Workflow
319
- a.task :foo => :string do
320
- "bar"
321
- end
322
-
323
- job = a.job(:foo)
324
- assert_equal 'bar', job.exec
325
- end
326
-
327
- def test_letter
328
- assert_equal "D", TestWF.job(:letter).run
329
- assert_equal "B", TestWF.job(:letter, nil, :letter => "B").run
330
- assert_equal "BB", TestWF.job(:letter_repeat, nil, :letter => "B").run
331
- job = TestWF.job(:two_letters, nil, :letter => "V")
332
- assert_equal "V:AA", job.run
333
- end
334
-
335
- def test_override_dep
336
- TmpFile.with_file("OTHER", false) do |file|
337
- assert TestWF.job(:repeat2, nil, :number => 3, "TestWF#str" => file).clean.run.include? "OTHER"
338
- end
339
- end
340
-
341
- def __test_stream
342
- io = TestWF.job(:stream).run(:stream)
343
- Misc.consume_stream(TSV.get_stream(io), false, STDOUT)
344
- nil
345
- end
346
-
347
- def __test_fork_stream
348
- job = TestWF.job(:stream)
349
- job.clean
350
- io = job.fork(:stream)
351
- Misc.consume_stream(TSV.get_stream(io), false, STDOUT)
352
- nil
353
- end
354
-
355
- def test_stream_order
356
-
357
- Log.with_severity 0 do
358
- job = TestWF.job(:stream2)
359
- job.recursive_clean
360
- job.produce
361
-
362
- end
363
- end
364
-
365
- def test_rec_input_use
366
- assert TestWF.rec_input_use(:double_dep).include?(:times)
367
- assert TestWF.rec_input_use(:double_dep)[:times].include?(TestWF)
368
- assert TestWF.rec_input_use(:double_dep)[:times][TestWF].include?(:repeat)
369
- end
370
-
371
- def test_shared_inputs
372
- assert_equal "CB", TestWF.job(:t3).run
373
- assert_equal "CB", TestWF.job(:t3).run
374
- end
375
-
376
- def test_transplant
377
- listed = '/home/user/.rbbt/var/jobs/TestWF/task1/Default'
378
- real = '/usr/local/var/rbbt/jobs/TestWF/task1/Default'
379
- other = '/home/user/.rbbt/var/jobs/TestWF/task2/Default'
380
- real_other = '/usr/local/var/rbbt/jobs/TestWF/task2/Default'
381
-
382
- assert_equal real_other, Workflow.transplant(listed, real, other)
383
- assert_equal real_other, Workflow.transplant(nil, real, other)
384
- end
385
-
386
- def test_relocate
387
- TmpFile.with_file do |tmpdir|
388
- listed = File.join(tmpdir, '/home/user/.rbbt/var/jobs/TestWF/task1/Default')
389
- real = File.join(tmpdir, '/usr/local/var/rbbt/jobs/TestWF/task1/Default')
390
- other = File.join(tmpdir, '/home/user/.rbbt/var/jobs/TestWF/task2/Default')
391
- real_other = File.join(tmpdir, '/usr/local/var/rbbt/jobs/TestWF/task2/Default')
392
-
393
- Open.write(real_other,'')
394
- assert_equal real_other, Workflow.relocate(real, other)
395
- assert_equal real_other, Workflow.relocate(real, other)
396
- end
397
- end
398
-
399
- def test_relocate_alt
400
- TmpFile.with_file do |tmpdir|
401
- listed = File.join(tmpdir, '/scratch/tmp/rbbt/.rbbt/var/jobs/Study/sample_gene_cnvs_focal/Bladder-TCC')
402
- real = File.join(tmpdir, '/home/bsc26/bsc26892/.rbbt/var/jobs/Study/sample_gene_cnvs_focal/Bladder-TCC')
403
- other = File.join(tmpdir, '/scratch/tmp/rbbt/scratch/bsc26892/rbbt/var/jobs/Sample/gene_cnv_status_focal/PCAWG')
404
- real_other = File.join(tmpdir, '/home/bsc26/bsc26892/.rbbt/var/jobs/Sample/gene_cnv_status_focal/PCAWG')
405
- Open.write(real_other,'')
406
-
407
- assert_equal real_other, Workflow.relocate(real, other)
408
- end
409
- end
410
-
411
- def test_delete_dep
412
- job = TestWF.job(:t3).recursive_clean
413
- job.run
414
- Misc.with_env "RBBT_UPDATE", 'true' do
415
- assert job.checks.select{|d| d.task_name.to_s == "t1" }.any?
416
- #job = TestWF.job(:t3)
417
- #job.step(:t1).clean
418
- #assert job.checks.select{|d| d.task_name.to_s == "t1" }.empty?
419
- job = TestWF.job(:t3).recursive_clean
420
- job.run
421
- assert job.checks.select{|d| d.task_name.to_s == "t1" }.any?
422
- job = TestWF.job(:t3)
423
- sleep 1
424
- Open.touch job.step(:t1).path
425
- Misc.with_env "RBBT_UPDATE", "false" do
426
- assert job.updated?
427
- end
428
- Misc.with_env "RBBT_UPDATE", "true" do
429
- assert ! job.updated?
430
- end
431
- end
432
- end
433
-
434
- def test_canfail
435
- job = TestWF.job(:sum_odds)
436
- assert_equal 24, job.run
437
-
438
- job = TestWF.job(:sum_odds_str)
439
- job.recursive_clean
440
- assert_equal "Sum odds: 24", job.run
441
- end
442
-
443
- def test_save_inputs
444
- TmpFile.with_file("Hi") do |file|
445
- job = TestWF.job(:reverse_file, nil, :file => file)
446
- TmpFile.with_file do |dir|
447
- Path.setup(dir)
448
- Step.save_job_inputs(job, dir)
449
- assert_equal Dir.glob(dir + "/*"), [dir.file.find + '.as_path']
450
- end
451
- end
452
-
453
- job = TestWF.job(:reverse_file, nil, :file => "code")
454
- TmpFile.with_file do |dir|
455
- Path.setup(dir)
456
- Step.save_job_inputs(job, dir)
457
- assert_equal Dir.glob(dir + "/*"), [dir.file.find + '.as_path']
458
- inputs = Workflow.load_inputs(dir, [:file], :file => :file)
459
- assert_equal inputs, {:file => 'code'}
460
- end
461
-
462
- end
463
-
464
- def test_archive
465
- job = TmpFile.with_file("Hi") do |file|
466
- job = TestWF.job(:reverse_file, nil, :file => file)
467
- job.run
468
- job
469
- end
470
- TmpFile.with_file nil, true, :extension => 'tar.gz' do |targz|
471
- Step.archive([job], targz)
472
- TmpFile.with_file do |dir|
473
- dir = Path.setup(dir)
474
- Misc.untar targz, dir
475
- assert dir.glob("**/*").collect{|f| File.basename(f)}.include? job.name
476
- end
477
- end
478
- end
479
-
480
- def test_input_step_file_check
481
- job = TestWF.job(:t3).recursive_clean
482
- job.run
483
- Misc.with_env "RBBT_UPDATE", 'true' do
484
- assert job.checks.select{|d| d.task_name.to_s == "t1" }.any?
485
- #job = TestWF.job(:t3)
486
- #job.step(:t1).clean
487
- #assert job.checks.select{|d| d.task_name.to_s == "t1" }.empty?
488
- job = TestWF.job(:t3).recursive_clean
489
- job.run
490
- assert job.checks.select{|d| d.task_name.to_s == "t1" }.any?
491
- job = TestWF.job(:t3)
492
- sleep 1
493
- Open.touch job.step(:t1).path
494
- Misc.with_env "RBBT_UPDATE", "false" do
495
- assert job.updated?
496
- end
497
- Misc.with_env "RBBT_UPDATE", "true" do
498
- assert ! job.updated?
499
- end
500
- end
501
- end
502
-
503
- def test_overriden
504
- job = TestWF.job(:overr_action)
505
- job.recursive_clean
506
- assert_equal "TLA", job.run
507
-
508
- assert Symbol === job.step(:overr_orig).overriden
509
- assert TrueClass === job.step(:overr_target).overriden
510
- assert ! job.overriden
511
-
512
- job = TestWF.job(:overr_action2)
513
- assert_equal "TLA", job.run
514
- assert job.overriden
515
- end
516
-
517
- def test_anonymous_workflow
518
- workflow = Module.new
519
- workflow.extend Workflow
520
- workflow.define_singleton_method(:to_s){"TestWorkflow"}
521
-
522
- assert_equal "TestWorkflow", workflow.to_s
523
-
524
- t1 = workflow.task :s1 => :string do
525
- task_name.to_s
526
- end
527
-
528
- workflow.dep :s1
529
- t2 = workflow.task :s2 => :string do
530
- task_name.to_s
531
- end
532
-
533
- workflow.dep :s2
534
- t3 = workflow.task :s3 => :string do
535
- task_name.to_s
536
- end
537
-
538
- assert_equal "s3", workflow.job(:s3).run
539
- end
540
-
541
- def test_low_level_step
542
- Log.with_severity 0 do
543
- TmpFile.with_file do |tmpdir|
544
- Path.setup tmpdir
545
-
546
- s1 = Step.new tmpdir.s1 do "s1" end
547
- s1.task_name = "s1"
548
-
549
- # run clean run
550
- assert_equal "s1", s1.run
551
- s1.clean
552
- assert_equal "s1", s1.run
553
- assert_equal "s1", s1.run
554
-
555
- # is persisted because it raises RbbtException
556
- s1.task = proc do raise RbbtException end
557
- assert_equal "s1", s1.run
558
- s1.clean
559
- assert_raises RbbtException do s1.run end
560
- assert RbbtException === s1.get_exception
561
- assert s1.error?
562
-
563
- s1.recursive_clean
564
- s1.task = proc do "s1" end
565
-
566
- # add dependencies
567
- s2 = Step.new tmpdir.s2 do
568
- step(:s1).load + " -> s2"
569
- end
570
- s2.task_name = "s2"
571
- s2.dependencies << s1
572
-
573
- s3 = Step.new tmpdir.s3 do
574
- step(:s2).load + " -> s3"
575
- end
576
- s3.task_name = "s3"
577
- s3.dependencies << s2
578
-
579
- assert_equal "s1 -> s2", s2.run
580
- assert_equal "s1 -> s2 -> s3", s3.run
581
-
582
- # Test recusive behaviour
583
- s1.task = proc do raise RbbtException end
584
- ComputeDependency.setup(s1, :produce)
585
- s1.clean
586
- s3.clean
587
- s3.run
588
- assert_equal "s1 -> s2 -> s3", s3.run
589
-
590
- s1.task = proc do raise RbbtException end
591
- ComputeDependency.setup(s1, :produce)
592
- s3.recursive_clean
593
- assert_raises RbbtException do s3.run end
594
-
595
- s1.task = proc{|v| v }
596
- s1.inputs = ["test"]
597
- assert_equal "test", s1.run
598
- s3.recursive_clean
599
- assert_equal "test -> s2 -> s3", s3.run
600
- end
601
- end
602
- end
603
-
604
- end
@@ -1,40 +0,0 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')
2
- require 'rbbt/tsv'
3
- require 'rbbt/tsv/parallel'
4
-
5
- class TestTSVParallelThrough < Test::Unit::TestCase
6
-
7
- def test_pthrough
8
- tsv = datafile_test('identifiers').tsv :unnamed => true, :persist => false, :fields => ["Associated Gene Name"]
9
-
10
- h = {}
11
- tsv.monitor = true
12
- tsv.unnamed = true
13
- tsv.pthrough do |k,v|
14
- h[k] = v.first
15
- end
16
-
17
- assert_equal tsv.size, h.size
18
- assert_equal tsv.keys.sort, h.keys.sort
19
- end
20
-
21
-
22
- def test_ppthrough
23
- tsv = datafile_test('identifiers').tsv :unnamed => true, :persist => false, :fields => ["Associated Gene Name"]
24
-
25
- h = {}
26
-
27
- tsv.ppthrough_callback do |k,v|
28
- h[k] = v
29
- end
30
-
31
- tsv.unnamed = true
32
- tsv.monitor = true
33
- tsv.ppthrough(3) do |k,v|
34
- [k,v.first]
35
- end
36
-
37
- assert_equal tsv.size, h.size
38
- assert_equal tsv.keys.sort, h.keys.sort
39
- end
40
- end