paraduct 0.0.1.beta7 → 0.0.1.beta8
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.
- data/lib/paraduct/parallel_runner.rb +7 -18
- data/lib/paraduct/runner.rb +3 -27
- data/lib/paraduct/thread_logger.rb +41 -0
- data/lib/paraduct/version.rb +1 -1
- data/lib/paraduct.rb +1 -0
- data/spec/paraduct/runner_spec.rb +0 -8
- data/spec/paraduct/thread_logger_spec.rb +9 -0
- metadata +5 -2
@@ -15,20 +15,17 @@ module Paraduct
|
|
15
15
|
======================================================
|
16
16
|
START matrix test
|
17
17
|
EOS
|
18
|
-
product_variables.each do |params|
|
19
|
-
Paraduct.logger.info "params: #{params.map{ |key, value| "#{key}=#{value}" }.join(", ")}"
|
20
|
-
end
|
21
18
|
|
22
19
|
pool = Thread.pool(Paraduct.config.max_threads)
|
23
20
|
begin
|
24
21
|
product_variables.each do |params|
|
22
|
+
runner = Paraduct::Runner.new(
|
23
|
+
script: script,
|
24
|
+
params: params,
|
25
|
+
base_job_dir: base_job_dir,
|
26
|
+
)
|
27
|
+
runner.logger.info "[START] params: #{runner.formatted_params}"
|
25
28
|
pool.process do
|
26
|
-
runner = Paraduct::Runner.new(
|
27
|
-
script: script,
|
28
|
-
params: params,
|
29
|
-
base_job_dir: base_job_dir,
|
30
|
-
)
|
31
|
-
|
32
29
|
runner.setup_dir
|
33
30
|
begin
|
34
31
|
stdout = runner.perform
|
@@ -38,14 +35,7 @@ START matrix test
|
|
38
35
|
successful = false
|
39
36
|
end
|
40
37
|
|
41
|
-
|
42
|
-
======================================================
|
43
|
-
params: #{runner.formatted_params}
|
44
|
-
job_name: #{runner.job_name}
|
45
|
-
job_dir: #{runner.job_dir}
|
46
|
-
|
47
|
-
#{stdout}
|
48
|
-
EOS
|
38
|
+
runner.logger.info "[END] params: #{runner.formatted_params}"
|
49
39
|
|
50
40
|
test_response.jobs_push(
|
51
41
|
job_name: runner.job_name,
|
@@ -56,7 +46,6 @@ job_dir: #{runner.job_dir}
|
|
56
46
|
)
|
57
47
|
end
|
58
48
|
end
|
59
|
-
|
60
49
|
ensure
|
61
50
|
pool.shutdown
|
62
51
|
end
|
data/lib/paraduct/runner.rb
CHANGED
@@ -3,7 +3,7 @@ module Paraduct
|
|
3
3
|
require "open3"
|
4
4
|
|
5
5
|
class Runner
|
6
|
-
attr_reader :script, :params, :base_job_dir
|
6
|
+
attr_reader :script, :params, :base_job_dir, :logger
|
7
7
|
|
8
8
|
# @param args
|
9
9
|
# @option args :script [String, Array<String>] script file, script(s)
|
@@ -13,7 +13,7 @@ module Paraduct
|
|
13
13
|
@script = args[:script]
|
14
14
|
@params = args[:params]
|
15
15
|
@base_job_dir = args[:base_job_dir]
|
16
|
-
@
|
16
|
+
@logger = Paraduct::ThreadLogger.new
|
17
17
|
end
|
18
18
|
|
19
19
|
def setup_dir
|
@@ -57,37 +57,13 @@ module Paraduct
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
COLORS = [
|
61
|
-
:cyan,
|
62
|
-
:yellow,
|
63
|
-
:green,
|
64
|
-
:magenta,
|
65
|
-
:red,
|
66
|
-
:blue,
|
67
|
-
:light,
|
68
|
-
:cyan,
|
69
|
-
:light_yellow,
|
70
|
-
:light_green,
|
71
|
-
:light_magenta,
|
72
|
-
:light_red,
|
73
|
-
:light_blue,
|
74
|
-
]
|
75
|
-
def self.next_color
|
76
|
-
@@color_index ||= -1
|
77
|
-
@@color_index = (@@color_index + 1) % COLORS.length
|
78
|
-
COLORS[@@color_index]
|
79
|
-
end
|
80
|
-
|
81
60
|
private
|
82
61
|
def run_command(command)
|
83
|
-
thread_id = Thread.current.object_id.to_s
|
84
|
-
console_label = "[#{thread_id.colorize(@color)}]"
|
85
|
-
|
86
62
|
lines = ""
|
87
63
|
|
88
64
|
IO.popen(command) do |io|
|
89
65
|
while line = io.gets
|
90
|
-
|
66
|
+
@logger.info(line)
|
91
67
|
lines << line
|
92
68
|
end
|
93
69
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Paraduct
|
2
|
+
class ThreadLogger < ::Logger
|
3
|
+
def initialize(logdev = STDOUT)
|
4
|
+
super(logdev)
|
5
|
+
thread_id = Thread.current.object_id.to_s
|
6
|
+
color = Paraduct::ThreadLogger.next_color
|
7
|
+
@label = "[#{thread_id.colorize(color)}]"
|
8
|
+
@formatter = ActiveSupport::Logger::SimpleFormatter.new
|
9
|
+
end
|
10
|
+
|
11
|
+
[:debug, :info, :warn, :error, :fatal].each do |severity|
|
12
|
+
define_method "#{severity}_with_label" do |message|
|
13
|
+
message.each_line do |line|
|
14
|
+
send "#{severity}_without_label", "#{@label} #{line.strip}" unless line.blank?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
alias_method_chain severity, :label
|
18
|
+
end
|
19
|
+
|
20
|
+
COLORS = [
|
21
|
+
:cyan,
|
22
|
+
:yellow,
|
23
|
+
:green,
|
24
|
+
:magenta,
|
25
|
+
:red,
|
26
|
+
:blue,
|
27
|
+
:light,
|
28
|
+
:cyan,
|
29
|
+
:light_yellow,
|
30
|
+
:light_green,
|
31
|
+
:light_magenta,
|
32
|
+
:light_red,
|
33
|
+
:light_blue,
|
34
|
+
]
|
35
|
+
def self.next_color
|
36
|
+
@@color_index ||= -1
|
37
|
+
@@color_index = (@@color_index + 1) % COLORS.length
|
38
|
+
COLORS[@@color_index]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/paraduct/version.rb
CHANGED
data/lib/paraduct.rb
CHANGED
@@ -10,6 +10,7 @@ module Paraduct
|
|
10
10
|
autoload :Runner , 'paraduct/runner'
|
11
11
|
autoload :SyncUtils , 'paraduct/sync_utils'
|
12
12
|
autoload :TestResponse , 'paraduct/test_response'
|
13
|
+
autoload :ThreadLogger , 'paraduct/thread_logger'
|
13
14
|
autoload :VariableConverter, 'paraduct/variable_converter'
|
14
15
|
autoload :Version , 'paraduct/version'
|
15
16
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paraduct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.beta8
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -329,6 +329,7 @@ files:
|
|
329
329
|
- lib/paraduct/templates/.paraduct.yml.tt
|
330
330
|
- lib/paraduct/templates/.paraduct_rsync_exclude.txt.tt
|
331
331
|
- lib/paraduct/test_response.rb
|
332
|
+
- lib/paraduct/thread_logger.rb
|
332
333
|
- lib/paraduct/variable_converter.rb
|
333
334
|
- lib/paraduct/version.rb
|
334
335
|
- paraduct.gemspec
|
@@ -341,6 +342,7 @@ files:
|
|
341
342
|
- spec/paraduct/runner_spec.rb
|
342
343
|
- spec/paraduct/sync_utils_spec.rb
|
343
344
|
- spec/paraduct/test_response_spec.rb
|
345
|
+
- spec/paraduct/thread_logger_spec.rb
|
344
346
|
- spec/paraduct/variable_converter_spec.rb
|
345
347
|
- spec/paraduct_spec.rb
|
346
348
|
- spec/script/build_error.sh
|
@@ -367,7 +369,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
367
369
|
version: '0'
|
368
370
|
segments:
|
369
371
|
- 0
|
370
|
-
hash:
|
372
|
+
hash: 965454421282758881
|
371
373
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
372
374
|
none: false
|
373
375
|
requirements:
|
@@ -390,6 +392,7 @@ test_files:
|
|
390
392
|
- spec/paraduct/runner_spec.rb
|
391
393
|
- spec/paraduct/sync_utils_spec.rb
|
392
394
|
- spec/paraduct/test_response_spec.rb
|
395
|
+
- spec/paraduct/thread_logger_spec.rb
|
393
396
|
- spec/paraduct/variable_converter_spec.rb
|
394
397
|
- spec/paraduct_spec.rb
|
395
398
|
- spec/script/build_error.sh
|