paraduct 0.0.1.beta11 → 0.0.1.beta12
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.rb +9 -9
- data/lib/paraduct/{thread_logger.rb → colored_label_logger.rb} +4 -4
- data/lib/paraduct/parallel_runner.rb +1 -1
- data/lib/paraduct/runner.rb +12 -3
- data/lib/paraduct/test_response.rb +9 -0
- data/lib/paraduct/version.rb +1 -1
- data/spec/paraduct/colored_label_logger_spec.rb +9 -0
- data/spec/paraduct/runner_spec.rb +4 -2
- data/spec/paraduct/test_response_spec.rb +14 -4
- metadata +6 -6
- data/spec/paraduct/thread_logger_spec.rb +0 -9
data/lib/paraduct.rb
CHANGED
@@ -4,15 +4,15 @@ require "active_support/core_ext"
|
|
4
4
|
require "pathname"
|
5
5
|
|
6
6
|
module Paraduct
|
7
|
-
autoload :
|
8
|
-
autoload :
|
9
|
-
autoload :
|
10
|
-
autoload :
|
11
|
-
autoload :
|
12
|
-
autoload :
|
13
|
-
autoload :
|
14
|
-
autoload :VariableConverter, 'paraduct/variable_converter'
|
15
|
-
autoload :Version
|
7
|
+
autoload :ColoredLabelLogger, 'paraduct/colored_label_logger'
|
8
|
+
autoload :Configuration , 'paraduct/configuration'
|
9
|
+
autoload :Errors , 'paraduct/errors'
|
10
|
+
autoload :ParallelRunner , 'paraduct/parallel_runner'
|
11
|
+
autoload :Runner , 'paraduct/runner'
|
12
|
+
autoload :SyncUtils , 'paraduct/sync_utils'
|
13
|
+
autoload :TestResponse , 'paraduct/test_response'
|
14
|
+
autoload :VariableConverter , 'paraduct/variable_converter'
|
15
|
+
autoload :Version , 'paraduct/version'
|
16
16
|
|
17
17
|
class << self
|
18
18
|
def configuration
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Paraduct
|
2
|
-
class
|
3
|
-
def initialize(logdev = STDOUT)
|
2
|
+
class ColoredLabelLogger < ::Logger
|
3
|
+
def initialize(label_name, logdev = STDOUT)
|
4
4
|
super(logdev)
|
5
|
-
color = Paraduct::
|
6
|
-
@label = "[#{
|
5
|
+
color = Paraduct::ColoredLabelLogger.next_color
|
6
|
+
@label = "[#{label_name.to_s.colorize(color)}]"
|
7
7
|
@formatter = ActiveSupport::Logger::SimpleFormatter.new
|
8
8
|
end
|
9
9
|
|
@@ -25,8 +25,8 @@ START matrix test
|
|
25
25
|
base_job_dir: base_job_dir,
|
26
26
|
job_id: index + 1,
|
27
27
|
)
|
28
|
-
runner.logger.info "[START] params: #{runner.formatted_params}"
|
29
28
|
pool.process do
|
29
|
+
runner.logger.info "[START] params: #{runner.formatted_params}"
|
30
30
|
runner.setup_dir
|
31
31
|
begin
|
32
32
|
stdout = runner.perform
|
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
|
7
7
|
|
8
8
|
# @param args
|
9
9
|
# @option args :script [String, Array<String>] script file, script(s)
|
@@ -14,7 +14,6 @@ module Paraduct
|
|
14
14
|
@params = args[:params]
|
15
15
|
@base_job_dir = args[:base_job_dir]
|
16
16
|
@job_id = args[:job_id]
|
17
|
-
@logger = Paraduct::ThreadLogger.new
|
18
17
|
end
|
19
18
|
|
20
19
|
def setup_dir
|
@@ -52,6 +51,16 @@ module Paraduct
|
|
52
51
|
@params.map{ |key, value| "#{key}=#{value}" }.join(", ")
|
53
52
|
end
|
54
53
|
|
54
|
+
def logger
|
55
|
+
unless @logger
|
56
|
+
stdout_logger = Paraduct::ColoredLabelLogger.new(object_id)
|
57
|
+
file_logger = Logger.new(Pathname(@base_job_dir).join("#{job_name}.log"))
|
58
|
+
@logger = stdout_logger.extend(ActiveSupport::Logger.broadcast(file_logger))
|
59
|
+
end
|
60
|
+
|
61
|
+
@logger
|
62
|
+
end
|
63
|
+
|
55
64
|
def self.capitalize_keys(params)
|
56
65
|
params.inject({}) do |res, (key, value)|
|
57
66
|
res[key.upcase] = value
|
@@ -65,7 +74,7 @@ module Paraduct
|
|
65
74
|
|
66
75
|
IO.popen(command) do |io|
|
67
76
|
while line = io.gets
|
68
|
-
|
77
|
+
logger.info(line)
|
69
78
|
lines << line
|
70
79
|
end
|
71
80
|
end
|
@@ -23,6 +23,14 @@ module Paraduct
|
|
23
23
|
|
24
24
|
message = "======================================================\n"
|
25
25
|
|
26
|
+
if successful_count > 0
|
27
|
+
message << "Passed:\n\n"
|
28
|
+
@jobs.select{ |result| result[:successful] }.each_with_index do |result, i|
|
29
|
+
message << " #{i + 1}) #{result[:formatted_params]}\n"
|
30
|
+
end
|
31
|
+
message << "\n"
|
32
|
+
end
|
33
|
+
|
26
34
|
if failure_count > 0
|
27
35
|
message << "Failures:\n\n"
|
28
36
|
@jobs.select{ |result| !result[:successful] }.each_with_index do |result, i|
|
@@ -30,6 +38,7 @@ module Paraduct
|
|
30
38
|
end
|
31
39
|
message << "\n"
|
32
40
|
end
|
41
|
+
|
33
42
|
message << "#{all_count} jobs, #{failure_count} failures, #{successful_count} passed\n"
|
34
43
|
|
35
44
|
message
|
data/lib/paraduct/version.rb
CHANGED
@@ -8,7 +8,9 @@ describe Paraduct::Runner do
|
|
8
8
|
)
|
9
9
|
end
|
10
10
|
|
11
|
-
|
11
|
+
include_context "uses temp dir"
|
12
|
+
|
13
|
+
let(:base_job_dir){ temp_dir }
|
12
14
|
let(:script) { "" }
|
13
15
|
let(:params) { {} }
|
14
16
|
let(:job_id) { 1 }
|
@@ -67,7 +69,7 @@ DATABASE=mysql
|
|
67
69
|
|
68
70
|
let(:params) { { "ruby" => "1.9", "database" => "mysql" } }
|
69
71
|
|
70
|
-
it { should eq
|
72
|
+
it { should eq temp_dir_path.join("RUBY_1.9_DATABASE_mysql") }
|
71
73
|
end
|
72
74
|
|
73
75
|
describe "#formatted_params" do
|
@@ -28,14 +28,20 @@ describe Paraduct::TestResponse do
|
|
28
28
|
|
29
29
|
context "when successful" do
|
30
30
|
before do
|
31
|
-
test_response.jobs_push(successful: true)
|
32
|
-
test_response.jobs_push(successful: true)
|
33
|
-
test_response.jobs_push(successful: true)
|
31
|
+
test_response.jobs_push(successful: true, params: { "ruby" => "1.8", "database" => "sqlite3" } , formatted_params: "ruby=1.8, database=sqlite3")
|
32
|
+
test_response.jobs_push(successful: true, params: { "ruby" => "1.9", "database" => "mysql" } , formatted_params: "ruby=1.9, database=mysql")
|
33
|
+
test_response.jobs_push(successful: true, params: { "ruby" => "2.0", "database" => "postgresql" }, formatted_params: "ruby=2.0, database=postgresql")
|
34
34
|
end
|
35
35
|
|
36
36
|
it do
|
37
37
|
should eq <<-EOS
|
38
38
|
======================================================
|
39
|
+
Passed:
|
40
|
+
|
41
|
+
1) ruby=1.8, database=sqlite3
|
42
|
+
2) ruby=1.9, database=mysql
|
43
|
+
3) ruby=2.0, database=postgresql
|
44
|
+
|
39
45
|
3 jobs, 0 failures, 3 passed
|
40
46
|
EOS
|
41
47
|
end
|
@@ -43,7 +49,7 @@ describe Paraduct::TestResponse do
|
|
43
49
|
|
44
50
|
context "when failure" do
|
45
51
|
before do
|
46
|
-
test_response.jobs_push(successful: true)
|
52
|
+
test_response.jobs_push(successful: true , params: { "ruby" => "1.8", "database" => "sqlite3" } , formatted_params: "ruby=1.8, database=sqlite3")
|
47
53
|
test_response.jobs_push(successful: false, params: { "ruby" => "1.9", "database" => "mysql" } , formatted_params: "ruby=1.9, database=mysql")
|
48
54
|
test_response.jobs_push(successful: false, params: { "ruby" => "2.0", "database" => "postgresql" }, formatted_params: "ruby=2.0, database=postgresql")
|
49
55
|
end
|
@@ -51,6 +57,10 @@ describe Paraduct::TestResponse do
|
|
51
57
|
it do
|
52
58
|
should eq <<-EOS
|
53
59
|
======================================================
|
60
|
+
Passed:
|
61
|
+
|
62
|
+
1) ruby=1.8, database=sqlite3
|
63
|
+
|
54
64
|
Failures:
|
55
65
|
|
56
66
|
1) ruby=1.9, database=mysql
|
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.beta12
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-10-
|
12
|
+
date: 2014-10-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -321,6 +321,7 @@ files:
|
|
321
321
|
- bin/paraduct
|
322
322
|
- lib/paraduct.rb
|
323
323
|
- lib/paraduct/cli.rb
|
324
|
+
- lib/paraduct/colored_label_logger.rb
|
324
325
|
- lib/paraduct/configuration.rb
|
325
326
|
- lib/paraduct/errors.rb
|
326
327
|
- lib/paraduct/parallel_runner.rb
|
@@ -329,7 +330,6 @@ files:
|
|
329
330
|
- lib/paraduct/templates/.paraduct.yml.tt
|
330
331
|
- lib/paraduct/templates/.paraduct_rsync_exclude.txt.tt
|
331
332
|
- lib/paraduct/test_response.rb
|
332
|
-
- lib/paraduct/thread_logger.rb
|
333
333
|
- lib/paraduct/variable_converter.rb
|
334
334
|
- lib/paraduct/version.rb
|
335
335
|
- paraduct.gemspec
|
@@ -337,12 +337,12 @@ files:
|
|
337
337
|
- spec/.paraduct_rsync_exclude.txt
|
338
338
|
- spec/.rubocop.yml
|
339
339
|
- spec/paraduct/cli_spec.rb
|
340
|
+
- spec/paraduct/colored_label_logger_spec.rb
|
340
341
|
- spec/paraduct/configuration_spec.rb
|
341
342
|
- spec/paraduct/parallel_runner_spec.rb
|
342
343
|
- spec/paraduct/runner_spec.rb
|
343
344
|
- spec/paraduct/sync_utils_spec.rb
|
344
345
|
- spec/paraduct/test_response_spec.rb
|
345
|
-
- spec/paraduct/thread_logger_spec.rb
|
346
346
|
- spec/paraduct/variable_converter_spec.rb
|
347
347
|
- spec/paraduct_spec.rb
|
348
348
|
- spec/script/build_error.sh
|
@@ -369,7 +369,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
369
369
|
version: '0'
|
370
370
|
segments:
|
371
371
|
- 0
|
372
|
-
hash:
|
372
|
+
hash: -2946467396040530577
|
373
373
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
374
374
|
none: false
|
375
375
|
requirements:
|
@@ -387,12 +387,12 @@ test_files:
|
|
387
387
|
- spec/.paraduct_rsync_exclude.txt
|
388
388
|
- spec/.rubocop.yml
|
389
389
|
- spec/paraduct/cli_spec.rb
|
390
|
+
- spec/paraduct/colored_label_logger_spec.rb
|
390
391
|
- spec/paraduct/configuration_spec.rb
|
391
392
|
- spec/paraduct/parallel_runner_spec.rb
|
392
393
|
- spec/paraduct/runner_spec.rb
|
393
394
|
- spec/paraduct/sync_utils_spec.rb
|
394
395
|
- spec/paraduct/test_response_spec.rb
|
395
|
-
- spec/paraduct/thread_logger_spec.rb
|
396
396
|
- spec/paraduct/variable_converter_spec.rb
|
397
397
|
- spec/paraduct_spec.rb
|
398
398
|
- spec/script/build_error.sh
|