rbbt-util 5.20.2 → 5.20.3

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.
@@ -133,6 +133,41 @@ row1 A B C
133
133
  end
134
134
  end
135
135
 
136
+ def test_dup_stream_multiple
137
+ text =<<-EOF
138
+ row2 AA BB CC
139
+ row3 AAA BBB CCC
140
+ row1 A B C
141
+ EOF
142
+ Log.severity = 0
143
+
144
+ text = text * 10000
145
+ num = 5
146
+ str_io = StringIO.new
147
+ strs = []
148
+ num.times{ strs << StringIO.new }
149
+ TmpFile.with_file(text) do |tmp|
150
+ io = Open.open(tmp)
151
+ copies = Misc.dup_stream_multiple(io, num)
152
+
153
+
154
+ copies.each_with_index do |cio,i|
155
+ cio.add_callback do
156
+ str = strs[i]
157
+ str.rewind
158
+ assert_equal text, str.read
159
+ end
160
+ Misc.consume_stream cio, true, strs[i], false
161
+ end
162
+
163
+
164
+ Misc.consume_stream io, false, str_io, false
165
+ str_io.rewind
166
+ assert_equal text, str_io.read
167
+
168
+ end
169
+ end
170
+
136
171
  def test_remove_lines
137
172
  text1 =<<-EOF
138
173
  line1
@@ -176,4 +211,23 @@ line1
176
211
  end
177
212
  end
178
213
  end
214
+
215
+ def test_consume_into_string_io
216
+ text =<<-EOF
217
+ line1
218
+ line2
219
+ line3
220
+ line4
221
+ EOF
222
+
223
+ TmpFile.with_file(text) do |file|
224
+ out = StringIO.new
225
+ io = Open.open(file)
226
+ Misc.consume_stream(io, false, out, false)
227
+ out.rewind
228
+ assert_equal text, out.read
229
+ end
230
+
231
+
232
+ end
179
233
  end
@@ -0,0 +1,206 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')
2
+ require 'rbbt/workflow'
3
+
4
+ module DepWorkflow
5
+ extend Workflow
6
+
7
+ input :input_file, :file, "Input file", nil, :stream => true
8
+ task :task1 => :array do |input_file|
9
+ TSV.traverse input_file, :type => :array, :into => :stream, :bar => "Task1" do |line|
10
+ line + "\t" << "Task1"
11
+ end
12
+ end
13
+
14
+ dep :task1
15
+ task :task2 => :array do
16
+ TSV.traverse step(:task1), :type => :array, :into => :stream, :bar => "Task2" do |line|
17
+ line + "\t" << "Task2"
18
+ end
19
+ end
20
+
21
+ dep :task1
22
+ task :task3 => :array do
23
+ TSV.traverse step(:task1), :type => :array, :into => :stream, :bar => "Task3" do |line|
24
+ line + "\t" << "Task3"
25
+ end
26
+ end
27
+
28
+ dep :task2
29
+ dep :task3
30
+ task :task4 => :array do
31
+ s1 = TSV.get_stream step(:task2)
32
+ s2 = TSV.get_stream step(:task3)
33
+ Misc.paste_streams([s1, s2])
34
+ end
35
+
36
+ dep :task4
37
+ task :task5 => :array do
38
+ TSV.traverse step(:task4), :type => :array, :into => :stream, :bar => "Task5" do |line|
39
+ line + "\t" << "Task5"
40
+ end
41
+ end
42
+
43
+ dep :task2
44
+ dep :task5
45
+ task :task6 => :array do
46
+ s1 = TSV.get_stream step(:task2)
47
+ s2 = TSV.get_stream step(:task5)
48
+ Misc.paste_streams([s1, s2])
49
+ end
50
+
51
+ input :stream_file, :file, "Streamed file", nil, :stream => true
52
+ task :task7 => :array do |file|
53
+ TSV.traverse file, :type => :array, :into => :stream, :bar => "Task7" do |line|
54
+ line + "\t" << "Task7"
55
+ end
56
+ end
57
+
58
+ dep :task6
59
+ dep :task7, :stream_file => :task6
60
+ task :task8 => :array do
61
+ TSV.get_stream step(:task7)
62
+ end
63
+ end
64
+
65
+ module ComputeWorkflow
66
+ extend Workflow
67
+
68
+ input :input_file, :file, "Input file", nil, :stream => true
69
+ task :task1 => :array do |input_file|
70
+ TSV.traverse input_file, :type => :array, :into => :stream, :bar => "Task1" do |line|
71
+ line + "\t" << "Task1"
72
+ end
73
+ end
74
+
75
+ dep :task1, :compute => :produce
76
+ task :task2 => :array do
77
+ TSV.traverse step(:task1), :type => :array, :into => :stream, :bar => "Task2" do |line|
78
+ line + "\t" << "Task2"
79
+ end
80
+ end
81
+
82
+ end
83
+
84
+ class TestWorkflowDependency < Test::Unit::TestCase
85
+ def test_task1
86
+ size = 10000
87
+ content = (0..size).to_a.collect{|num| "Line #{num}" } * "\n"
88
+ TmpFile.with_file(content) do |input_file|
89
+ job = DepWorkflow.job(:task1, "TEST", :input_file => input_file)
90
+ io = TSV.get_stream job.run(:stream)
91
+ last_line = nil
92
+ while line = io.gets
93
+ last_line = line.strip
94
+ end
95
+ io.join
96
+
97
+ assert_equal "Line #{size}\tTask1", last_line
98
+ end
99
+ end
100
+
101
+ def test_task2
102
+ size = 10000
103
+ content = (0..size).to_a.collect{|num| "Line #{num}" } * "\n"
104
+ TmpFile.with_file(content) do |input_file|
105
+ job = DepWorkflow.job(:task2, "TEST", :input_file => input_file)
106
+ io = TSV.get_stream job.run(:stream)
107
+ last_line = nil
108
+ while line = io.gets
109
+ last_line = line.strip
110
+ end
111
+ io.join
112
+
113
+ assert_equal "Line #{size}\tTask1\tTask2", last_line
114
+ end
115
+ end
116
+
117
+ def test_task4
118
+ size = 1000
119
+ content = (0..size).to_a.collect{|num| "Line #{num}" } * "\n"
120
+ last_line = nil
121
+ TmpFile.with_file(content) do |input_file|
122
+ job = DepWorkflow.job(:task4, "TEST", :input_file => input_file)
123
+ io = TSV.get_stream job.run(:stream) while line = io.gets last_line = line.strip
124
+ end
125
+ io.join
126
+ end
127
+
128
+ assert_equal "Line #{size}\tTask1\tTask2\tTask1\tTask3", last_line
129
+ end
130
+
131
+ def test_task5
132
+ size = 1000
133
+ content = (0..size).to_a.collect{|num| "Line #{num}" } * "\n"
134
+ last_line = nil
135
+ TmpFile.with_file(content) do |input_file|
136
+ job = DepWorkflow.job(:task5, "TEST", :input_file => input_file)
137
+ io = TSV.get_stream job.run(:stream)
138
+ while line = io.gets
139
+ last_line = line.strip
140
+ end
141
+ io.join
142
+ end
143
+ assert_equal "Line #{size}\tTask1\tTask2\tTask1\tTask3\tTask5", last_line
144
+ end
145
+
146
+ def test_task6
147
+ size = 100000
148
+ content = (0..size).to_a.collect{|num| "Line #{num}" } * "\n"
149
+ last_line = nil
150
+ Log.severity = 0
151
+ TmpFile.with_file(content) do |input_file|
152
+ begin
153
+ job = DepWorkflow.job(:task6, "TEST", :input_file => input_file)
154
+ job.run(:stream)
155
+ io = TSV.get_stream job
156
+ while line = io.gets
157
+ last_line = line.strip
158
+ end
159
+ io.join
160
+ rescue Exception
161
+ job.abort
162
+ raise $!
163
+ end
164
+ end
165
+ assert_equal "Line #{size}\tTask1\tTask2\tTask1\tTask2\tTask1\tTask3\tTask5", last_line
166
+ end
167
+
168
+ def test_task8
169
+ size = 100000
170
+ content = (0..size).to_a.collect{|num| "Line #{num}" } * "\n"
171
+ last_line = nil
172
+ Log.severity = 0
173
+ TmpFile.with_file(content) do |input_file|
174
+ begin
175
+ job = DepWorkflow.job(:task8, "TEST", :input_file => input_file)
176
+ job.run(:stream)
177
+ io = TSV.get_stream job
178
+ while line = io.gets
179
+ last_line = line.strip
180
+ end
181
+ io.join
182
+ rescue Exception
183
+ job.abort
184
+ raise $!
185
+ end
186
+ end
187
+ assert_equal "Line #{size}\tTask1\tTask2\tTask1\tTask2\tTask1\tTask3\tTask5\tTask7", last_line
188
+ end
189
+
190
+ def test_compute
191
+ size = 10000
192
+ content = (0..size).to_a.collect{|num| "Line #{num}" } * "\n"
193
+ TmpFile.with_file(content) do |input_file|
194
+ job = ComputeWorkflow.job(:task2, "TEST", :input_file => input_file)
195
+ io = TSV.get_stream job.run(:stream)
196
+ last_line = nil
197
+ while line = io.gets
198
+ last_line = line.strip
199
+ end
200
+ io.join
201
+
202
+ assert_equal "Line #{size}\tTask1\tTask2", last_line
203
+ end
204
+ end
205
+ end
206
+
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.20.2
4
+ version: 5.20.3
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-05-23 00:00:00.000000000 Z
11
+ date: 2016-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -304,6 +304,7 @@ files:
304
304
  - lib/rbbt/workflow/examples.rb
305
305
  - lib/rbbt/workflow/soap.rb
306
306
  - lib/rbbt/workflow/step.rb
307
+ - lib/rbbt/workflow/step/dependencies.rb
307
308
  - lib/rbbt/workflow/step/run.rb
308
309
  - lib/rbbt/workflow/task.rb
309
310
  - lib/rbbt/workflow/usage.rb
@@ -449,6 +450,7 @@ files:
449
450
  - test/rbbt/util/test_simpleDSL.rb
450
451
  - test/rbbt/util/test_simpleopt.rb
451
452
  - test/rbbt/util/test_tmpfile.rb
453
+ - test/rbbt/workflow/step/test_dependencies.rb
452
454
  - test/rbbt/workflow/test_doc.rb
453
455
  - test/rbbt/workflow/test_step.rb
454
456
  - test/rbbt/workflow/test_task.rb
@@ -525,6 +527,7 @@ test_files:
525
527
  - test/rbbt/association/test_util.rb
526
528
  - test/rbbt/association/test_database.rb
527
529
  - test/rbbt/test_tsv.rb
530
+ - test/rbbt/workflow/step/test_dependencies.rb
528
531
  - test/rbbt/workflow/test_task.rb
529
532
  - test/rbbt/workflow/test_step.rb
530
533
  - test/rbbt/workflow/test_doc.rb