scout-gear 5.2.0 → 6.0.0

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.
@@ -0,0 +1,46 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ class TestSocket < Test::Unit::TestCase
5
+ def test_simple
6
+ socket = WorkQueue::Socket.new
7
+
8
+ socket.write 1
9
+ socket.write 2
10
+ socket.write "STRING"
11
+ socket.write :string
12
+
13
+ assert_equal 1, socket.read
14
+ assert_equal 2, socket.read
15
+ assert_equal "STRING", socket.read
16
+ assert_equal :string, socket.read
17
+
18
+ socket.close_write
19
+ assert_raise ClosedStream do
20
+ socket.read
21
+ end
22
+ end
23
+
24
+ def __test_speed
25
+ sss 0
26
+ socket = WorkQueue::Socket.new
27
+
28
+ num = 10_000
29
+
30
+ Thread.new do
31
+ num.times do |i|
32
+ socket.write nil
33
+ end
34
+ socket.write DoneProcessing.new
35
+ end
36
+
37
+ bar = Log::ProgressBar.new num
38
+ while true
39
+ i = socket.read
40
+ bar.tick
41
+ break if DoneProcessing === i
42
+ end
43
+ bar.done
44
+ end
45
+ end
46
+
@@ -0,0 +1,99 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ require 'scout/semaphore'
5
+ require 'scout/work_queue/socket'
6
+ class TestQueueWorker < Test::Unit::TestCase
7
+ def test_simple
8
+ worker = WorkQueue::Worker.new
9
+ TmpFile.with_file do |file|
10
+ worker.run do
11
+ Open.write file, "TEST"
12
+ end
13
+ worker.join
14
+
15
+ assert_equal "TEST", Open.read(file)
16
+ end
17
+ end
18
+
19
+ def test_semaphore
20
+ ScoutSemaphore.with_semaphore 1 do |sem|
21
+
22
+ TmpFile.with_file do |outfile|
23
+ 2.times do
24
+ sout = Open.open_pipe do |sin|
25
+ workers = 100.times.collect{ WorkQueue::Worker.new }
26
+ workers.each do |w|
27
+ w.run do
28
+ ScoutSemaphore.synchronize(sem) do
29
+ 10.times do
30
+ sin.puts Process.pid
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ WorkQueue::Worker.join(workers)
37
+ end
38
+ Open.consume_stream(sout, false, outfile)
39
+ pid_list = Open.read(outfile).split("\n")
40
+
41
+ assert_nothing_raised do
42
+ seen = []
43
+ current = nil
44
+ pid_list.each do |pid|
45
+ if pid != current
46
+ raise "Out of order" if seen.include? pid
47
+ end
48
+ current = pid
49
+ seen << pid
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ def test_process
58
+ input = WorkQueue::Socket.new
59
+ output = WorkQueue::Socket.new
60
+
61
+ workers = 10.times.collect{ WorkQueue::Worker.new }
62
+ workers.each do |w|
63
+ w.process(input, output) do |obj|
64
+ [Process.pid, obj.inspect] * " "
65
+ end
66
+ end
67
+
68
+ read = Thread.new do
69
+ begin
70
+ while obj = output.read
71
+ if DoneProcessing === obj
72
+ pid = obj.pid
73
+ workers.delete_if{|w| w.pid = pid }
74
+ break if workers.empty?
75
+ end
76
+ end
77
+ end
78
+ end
79
+
80
+ write = Thread.new do
81
+ 100.times do |i|
82
+ input.write i
83
+ end
84
+ 10.times do
85
+ input.write DoneProcessing.new
86
+ end
87
+ input.close_write
88
+ end
89
+
90
+ write.join
91
+ read.join
92
+
93
+ WorkQueue::Worker.join workers
94
+ input.clean
95
+ output.clean
96
+ end
97
+
98
+ end
99
+
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: 5.2.0
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-28 00:00:00.000000000 Z
11
+ date: 2023-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: term-ansicolor
@@ -138,6 +138,7 @@ files:
138
138
  - lib/scout/resource/produce/rake.rb
139
139
  - lib/scout/resource/scout.rb
140
140
  - lib/scout/resource/util.rb
141
+ - lib/scout/semaphore.rb
141
142
  - lib/scout/simple_opt.rb
142
143
  - lib/scout/simple_opt/accessor.rb
143
144
  - lib/scout/simple_opt/doc.rb
@@ -145,6 +146,9 @@ files:
145
146
  - lib/scout/simple_opt/parse.rb
146
147
  - lib/scout/simple_opt/setup.rb
147
148
  - lib/scout/tmpfile.rb
149
+ - lib/scout/work_queue.rb
150
+ - lib/scout/work_queue/socket.rb
151
+ - lib/scout/work_queue/worker.rb
148
152
  - lib/scout/workflow.rb
149
153
  - lib/scout/workflow/definition.rb
150
154
  - lib/scout/workflow/documentation.rb
@@ -165,8 +169,11 @@ files:
165
169
  - scout_commands/workflow/list
166
170
  - scout_commands/workflow/task
167
171
  - scout_commands/workflow/task_old
172
+ - share/color/color_names
173
+ - share/color/diverging_colors.hex
168
174
  - test/scout/indiferent_hash/test_case_insensitive.rb
169
175
  - test/scout/indiferent_hash/test_options.rb
176
+ - test/scout/log/test_color.rb
170
177
  - test/scout/log/test_progress.rb
171
178
  - test/scout/misc/test_digest.rb
172
179
  - test/scout/misc/test_filesystem.rb
@@ -197,8 +204,12 @@ files:
197
204
  - test/scout/test_path.rb
198
205
  - test/scout/test_persist.rb
199
206
  - test/scout/test_resource.rb
207
+ - test/scout/test_semaphore.rb
200
208
  - test/scout/test_tmpfile.rb
209
+ - test/scout/test_work_queue.rb
201
210
  - test/scout/test_workflow.rb
211
+ - test/scout/work_queue/test_socket.rb
212
+ - test/scout/work_queue/test_worker.rb
202
213
  - test/scout/workflow/step/test_info.rb
203
214
  - test/scout/workflow/step/test_load.rb
204
215
  - test/scout/workflow/task/test_inputs.rb