scout-gear 7.2.0 → 7.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.vimproject +37 -3
- data/VERSION +1 -1
- data/lib/scout/concurrent_stream.rb +9 -8
- data/lib/scout/exceptions.rb +1 -0
- data/lib/scout/log/color.rb +0 -1
- data/lib/scout/log/progress/util.rb +65 -0
- data/lib/scout/misc/helper.rb +31 -0
- data/lib/scout/misc/monitor.rb +1 -1
- data/lib/scout/misc.rb +1 -0
- data/lib/scout/open/stream.rb +21 -27
- data/lib/scout/persist.rb +42 -28
- data/lib/scout/semaphore.rb +8 -1
- data/lib/scout/tsv/dumper.rb +13 -8
- data/lib/scout/tsv/index.rb +127 -15
- data/lib/scout/tsv/open.rb +128 -0
- data/lib/scout/tsv/parser.rb +70 -43
- data/lib/scout/tsv/path.rb +4 -4
- data/lib/scout/tsv/persist/adapter.rb +52 -33
- data/lib/scout/tsv/persist/fix_width_table.rb +324 -0
- data/lib/scout/tsv/persist/serialize.rb +117 -0
- data/lib/scout/tsv/persist/tokyocabinet.rb +3 -3
- data/lib/scout/tsv/persist.rb +0 -2
- data/lib/scout/tsv/traverse.rb +130 -35
- data/lib/scout/tsv/util/filter.rb +303 -0
- data/lib/scout/tsv/util/process.rb +73 -0
- data/lib/scout/tsv/util/select.rb +220 -0
- data/lib/scout/tsv/util.rb +77 -19
- data/lib/scout/tsv.rb +2 -2
- data/lib/scout/work_queue/worker.rb +1 -1
- data/lib/scout/workflow/definition.rb +8 -0
- data/lib/scout/workflow/step/info.rb +4 -0
- data/lib/scout/workflow/step/progress.rb +14 -0
- data/lib/scout/workflow/step.rb +10 -5
- data/lib/scout/workflow/task.rb +8 -4
- data/lib/scout/workflow/usage.rb +2 -0
- data/scout-gear.gemspec +33 -10
- data/scout_commands/workflow/task +3 -2
- data/scout_commands/workflow/task_old +2 -2
- data/test/scout/open/test_stream.rb +1 -1
- data/test/scout/test_persist.rb +61 -0
- data/test/scout/test_tmpfile.rb +1 -1
- data/test/scout/test_tsv.rb +10 -1
- data/test/scout/test_work_queue.rb +1 -0
- data/test/scout/tsv/persist/test_adapter.rb +10 -0
- data/test/scout/tsv/persist/test_fix_width_table.rb +134 -0
- data/test/scout/tsv/test_index.rb +94 -2
- data/test/scout/tsv/test_open.rb +9 -0
- data/test/scout/tsv/test_parser.rb +28 -3
- data/test/scout/tsv/test_persist.rb +7 -0
- data/test/scout/tsv/test_traverse.rb +110 -3
- data/test/scout/tsv/test_util.rb +23 -0
- data/test/scout/tsv/util/test_filter.rb +188 -0
- data/test/scout/tsv/util/test_process.rb +47 -0
- data/test/scout/tsv/util/test_select.rb +44 -0
- data/test/scout/work_queue/test_worker.rb +63 -6
- data/test/scout/workflow/step/test_load.rb +3 -3
- data/test/scout/workflow/test_step.rb +10 -10
- data/test/test_helper.rb +3 -1
- metadata +19 -6
@@ -16,27 +16,84 @@ class TestQueueWorker < Test::Unit::TestCase
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
|
19
|
+
def test_semaphore_pipe
|
20
|
+
|
21
|
+
2.times do
|
22
|
+
num_lines = 10
|
23
|
+
num_workers = 100
|
21
24
|
|
22
25
|
TmpFile.with_file do |outfile|
|
23
|
-
|
26
|
+
Open.rm(outfile)
|
27
|
+
ScoutSemaphore.with_semaphore 1 do |sem|
|
24
28
|
sout = Open.open_pipe do |sin|
|
25
|
-
workers =
|
29
|
+
workers = num_workers.times.collect{ WorkQueue::Worker.new }
|
26
30
|
workers.each do |w|
|
27
31
|
w.run do
|
28
32
|
ScoutSemaphore.synchronize(sem) do
|
29
|
-
|
30
|
-
|
33
|
+
sin.puts "Start - #{Process.pid}"
|
34
|
+
num_lines.times do |i|
|
35
|
+
sin.puts "line-#{i}-#{Process.pid}"
|
31
36
|
end
|
37
|
+
sin.puts "End - #{Process.pid}"
|
32
38
|
end
|
33
39
|
end
|
34
40
|
end
|
41
|
+
sin.close
|
35
42
|
|
36
43
|
WorkQueue::Worker.join(workers)
|
37
44
|
end
|
45
|
+
|
38
46
|
Open.consume_stream(sout, false, outfile)
|
47
|
+
txt = Open.read(outfile)
|
48
|
+
pid_list = txt.split("\n")
|
49
|
+
|
50
|
+
assert_equal (num_lines + 2) * num_workers, pid_list.length
|
51
|
+
|
52
|
+
assert_nothing_raised do
|
53
|
+
seen = []
|
54
|
+
current = nil
|
55
|
+
pid_list.each do |pid|
|
56
|
+
if pid != current
|
57
|
+
raise "Out of order #{Log.fingerprint seen} #{ pid }" if seen.include? pid
|
58
|
+
end
|
59
|
+
current = pid
|
60
|
+
seen << pid
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
def test_semaphore
|
68
|
+
|
69
|
+
2.times do
|
70
|
+
num_lines = 10
|
71
|
+
num_workers = 500
|
72
|
+
|
73
|
+
TmpFile.with_file do |outfile|
|
74
|
+
Open.rm(outfile)
|
75
|
+
ScoutSemaphore.with_semaphore 1 do |sem|
|
76
|
+
workers = num_workers.times.collect{ WorkQueue::Worker.new }
|
77
|
+
Open.touch(outfile)
|
78
|
+
workers.each do |w|
|
79
|
+
w.run do
|
80
|
+
ScoutSemaphore.synchronize(sem) do
|
81
|
+
sin = Open.open(outfile, :mode => 'a')
|
82
|
+
sin.puts "Start - #{Process.pid}"
|
83
|
+
num_lines.times do |i|
|
84
|
+
sin.puts "line-#{i}-#{Process.pid}"
|
85
|
+
end
|
86
|
+
sin.puts "End - #{Process.pid}"
|
87
|
+
sin.close
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
WorkQueue::Worker.join(workers)
|
93
|
+
|
94
|
+
|
39
95
|
pid_list = Open.read(outfile).split("\n")
|
96
|
+
assert_equal (num_lines + 2) * num_workers, pid_list.length
|
40
97
|
|
41
98
|
assert_nothing_raised do
|
42
99
|
seen = []
|
@@ -41,7 +41,7 @@ class TestStepLoad < Test::Unit::TestCase
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
step2 = wf.job(:step2, :input1 => "
|
44
|
+
step2 = wf.job(:step2, nil, :input1 => "TEST_STRING")
|
45
45
|
step1 = step2.step(:step1)
|
46
46
|
|
47
47
|
step2.run
|
@@ -53,8 +53,8 @@ class TestStepLoad < Test::Unit::TestCase
|
|
53
53
|
Open.mv step1.info_file, dir.var.jobs.RelocateWorkflow.step1[File.basename(step1.info_file)]
|
54
54
|
|
55
55
|
new_step2 = Step.load(step2.path)
|
56
|
-
assert_equal "
|
57
|
-
assert_equal "
|
56
|
+
assert_equal "TEST_STRING".reverse, new_step2.load
|
57
|
+
assert_equal "TEST_STRING", new_step2.dependencies.first.load
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
@@ -27,7 +27,6 @@ class TestWorkflowStep < Test::Unit::TestCase
|
|
27
27
|
|
28
28
|
step2.dependencies = [step1]
|
29
29
|
|
30
|
-
|
31
30
|
assert_equal "12 has 2 characters", step2.run
|
32
31
|
assert_equal "12 has 2 characters", step2.run
|
33
32
|
end
|
@@ -50,7 +49,7 @@ class TestWorkflowStep < Test::Unit::TestCase
|
|
50
49
|
|
51
50
|
step2 = Step.new tmpfile.step2 do
|
52
51
|
step1 = dependencies.first
|
53
|
-
stream = step1.
|
52
|
+
stream = step1.stream
|
54
53
|
|
55
54
|
Open.open_pipe do |sin|
|
56
55
|
while line = stream.gets
|
@@ -87,7 +86,7 @@ class TestWorkflowStep < Test::Unit::TestCase
|
|
87
86
|
|
88
87
|
assert step1.path.read.end_with? "line-#{times-1}\n"
|
89
88
|
assert_equal times/2, lines.length
|
90
|
-
assert_equal times/2, step2.path.read.split("\n").length
|
89
|
+
assert_equal times/2, step2.join.path.read.split("\n").length
|
91
90
|
end
|
92
91
|
|
93
92
|
def test_streaming_duplicate
|
@@ -108,7 +107,7 @@ class TestWorkflowStep < Test::Unit::TestCase
|
|
108
107
|
|
109
108
|
step2 = Step.new tmpfile.step2 do
|
110
109
|
step1 = dependencies.first
|
111
|
-
stream = step1.
|
110
|
+
stream = step1.stream
|
112
111
|
|
113
112
|
Open.open_pipe do |sin|
|
114
113
|
while line = stream.gets
|
@@ -123,7 +122,7 @@ class TestWorkflowStep < Test::Unit::TestCase
|
|
123
122
|
|
124
123
|
step3 = Step.new tmpfile.step3 do
|
125
124
|
step1, step2 = dependencies
|
126
|
-
stream = step2.
|
125
|
+
stream = step2.stream
|
127
126
|
|
128
127
|
Open.open_pipe do |sin|
|
129
128
|
while line = stream.gets
|
@@ -164,7 +163,7 @@ class TestWorkflowStep < Test::Unit::TestCase
|
|
164
163
|
|
165
164
|
step2 = Step.new tmpfile.step2 do
|
166
165
|
step1 = dependencies.first
|
167
|
-
stream = step1.
|
166
|
+
stream = step1.stream
|
168
167
|
|
169
168
|
Open.open_pipe do |sin|
|
170
169
|
while line = stream.gets
|
@@ -179,7 +178,7 @@ class TestWorkflowStep < Test::Unit::TestCase
|
|
179
178
|
|
180
179
|
step3 = Step.new tmpfile.step3 do
|
181
180
|
step1 = dependencies.first
|
182
|
-
stream = step1.
|
181
|
+
stream = step1.stream
|
183
182
|
|
184
183
|
Open.open_pipe do |sin|
|
185
184
|
while line = stream.gets
|
@@ -199,14 +198,14 @@ class TestWorkflowStep < Test::Unit::TestCase
|
|
199
198
|
mutex = Mutex.new
|
200
199
|
Open.open_pipe do |sin|
|
201
200
|
t2 = Thread.new do
|
202
|
-
stream2 = step2.
|
201
|
+
stream2 = step2.stream
|
203
202
|
while line = stream2.gets
|
204
203
|
sin.puts line
|
205
204
|
end
|
206
205
|
end
|
207
206
|
|
208
207
|
t3 = Thread.new do
|
209
|
-
stream3 = step3.
|
208
|
+
stream3 = step3.stream
|
210
209
|
while line = stream3.gets
|
211
210
|
sin.puts line
|
212
211
|
end
|
@@ -220,12 +219,13 @@ class TestWorkflowStep < Test::Unit::TestCase
|
|
220
219
|
|
221
220
|
lines = []
|
222
221
|
io = step4.run
|
223
|
-
Log::ProgressBar.with_bar do |b|
|
222
|
+
Log::ProgressBar.with_bar severity: 0 do |b|
|
224
223
|
while line = io.gets
|
225
224
|
b.tick
|
226
225
|
lines << line.strip
|
227
226
|
end
|
228
227
|
end
|
228
|
+
io.close
|
229
229
|
|
230
230
|
assert_equal times, lines.length
|
231
231
|
end
|
data/test/test_helper.rb
CHANGED
@@ -33,12 +33,14 @@ class Test::Unit::TestCase
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def tmpdir
|
36
|
-
@tmpdir
|
36
|
+
@tmpdir ||= Path.setup('tmp/test_tmpdir').find
|
37
37
|
end
|
38
38
|
|
39
39
|
setup do
|
40
|
+
TmpFile.tmpdir = tmpdir.tmpfiles
|
40
41
|
Log::ProgressBar.default_severity = 0
|
41
42
|
Persist.cache_dir = tmpdir.var.cache
|
43
|
+
Persist::MEMORY_CACHE.clear
|
42
44
|
Open.remote_cache_dir = tmpdir.var.cache
|
43
45
|
Workflow.directory = tmpdir.var.jobs
|
44
46
|
Workflow.workflows.each{|wf| wf.directory = Workflow.directory[wf.name] }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scout-gear
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: term-ansicolor
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- lib/scout/misc/digest.rb
|
120
120
|
- lib/scout/misc/filesystem.rb
|
121
121
|
- lib/scout/misc/format.rb
|
122
|
+
- lib/scout/misc/helper.rb
|
122
123
|
- lib/scout/misc/insist.rb
|
123
124
|
- lib/scout/misc/monitor.rb
|
124
125
|
- lib/scout/misc/system.rb
|
@@ -154,13 +155,19 @@ files:
|
|
154
155
|
- lib/scout/tsv.rb
|
155
156
|
- lib/scout/tsv/dumper.rb
|
156
157
|
- lib/scout/tsv/index.rb
|
158
|
+
- lib/scout/tsv/open.rb
|
157
159
|
- lib/scout/tsv/parser.rb
|
158
160
|
- lib/scout/tsv/path.rb
|
159
161
|
- lib/scout/tsv/persist.rb
|
160
162
|
- lib/scout/tsv/persist/adapter.rb
|
163
|
+
- lib/scout/tsv/persist/fix_width_table.rb
|
164
|
+
- lib/scout/tsv/persist/serialize.rb
|
161
165
|
- lib/scout/tsv/persist/tokyocabinet.rb
|
162
166
|
- lib/scout/tsv/traverse.rb
|
163
167
|
- lib/scout/tsv/util.rb
|
168
|
+
- lib/scout/tsv/util/filter.rb
|
169
|
+
- lib/scout/tsv/util/process.rb
|
170
|
+
- lib/scout/tsv/util/select.rb
|
164
171
|
- lib/scout/work_queue.rb
|
165
172
|
- lib/scout/work_queue/socket.rb
|
166
173
|
- lib/scout/work_queue/worker.rb
|
@@ -173,6 +180,7 @@ files:
|
|
173
180
|
- lib/scout/workflow/step/file.rb
|
174
181
|
- lib/scout/workflow/step/info.rb
|
175
182
|
- lib/scout/workflow/step/load.rb
|
183
|
+
- lib/scout/workflow/step/progress.rb
|
176
184
|
- lib/scout/workflow/step/provenance.rb
|
177
185
|
- lib/scout/workflow/task.rb
|
178
186
|
- lib/scout/workflow/task/inputs.rb
|
@@ -234,13 +242,18 @@ files:
|
|
234
242
|
- test/scout/test_work_queue.rb
|
235
243
|
- test/scout/test_workflow.rb
|
236
244
|
- test/scout/tsv/persist/test_adapter.rb
|
245
|
+
- test/scout/tsv/persist/test_fix_width_table.rb
|
237
246
|
- test/scout/tsv/persist/test_tokyocabinet.rb
|
238
247
|
- test/scout/tsv/test_dumper.rb
|
239
248
|
- test/scout/tsv/test_index.rb
|
249
|
+
- test/scout/tsv/test_open.rb
|
240
250
|
- test/scout/tsv/test_parser.rb
|
241
251
|
- test/scout/tsv/test_persist.rb
|
242
252
|
- test/scout/tsv/test_traverse.rb
|
243
253
|
- test/scout/tsv/test_util.rb
|
254
|
+
- test/scout/tsv/util/test_filter.rb
|
255
|
+
- test/scout/tsv/util/test_process.rb
|
256
|
+
- test/scout/tsv/util/test_select.rb
|
244
257
|
- test/scout/work_queue/test_socket.rb
|
245
258
|
- test/scout/work_queue/test_worker.rb
|
246
259
|
- test/scout/workflow/step/test_dependencies.rb
|
@@ -260,7 +273,7 @@ homepage: http://github.com/mikisvaz/scout-gear
|
|
260
273
|
licenses:
|
261
274
|
- MIT
|
262
275
|
metadata: {}
|
263
|
-
post_install_message:
|
276
|
+
post_install_message:
|
264
277
|
rdoc_options: []
|
265
278
|
require_paths:
|
266
279
|
- lib
|
@@ -275,8 +288,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
275
288
|
- !ruby/object:Gem::Version
|
276
289
|
version: '0'
|
277
290
|
requirements: []
|
278
|
-
rubygems_version: 3.
|
279
|
-
signing_key:
|
291
|
+
rubygems_version: 3.2.15
|
292
|
+
signing_key:
|
280
293
|
specification_version: 4
|
281
294
|
summary: basic gear for scouts
|
282
295
|
test_files: []
|