rbbt-util 5.20.2 → 5.20.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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