paraduct 0.0.1.beta11 → 0.0.1.beta12

Sign up to get free protection for your applications and to get access to all the features.
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 :Configuration , 'paraduct/configuration'
8
- autoload :Errors , 'paraduct/errors'
9
- autoload :ParallelRunner , 'paraduct/parallel_runner'
10
- autoload :Runner , 'paraduct/runner'
11
- autoload :SyncUtils , 'paraduct/sync_utils'
12
- autoload :TestResponse , 'paraduct/test_response'
13
- autoload :ThreadLogger , 'paraduct/thread_logger'
14
- autoload :VariableConverter, 'paraduct/variable_converter'
15
- autoload :Version , 'paraduct/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 ThreadLogger < ::Logger
3
- def initialize(logdev = STDOUT)
2
+ class ColoredLabelLogger < ::Logger
3
+ def initialize(label_name, logdev = STDOUT)
4
4
  super(logdev)
5
- color = Paraduct::ThreadLogger.next_color
6
- @label = "[#{object_id.to_s.colorize(color)}]"
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
@@ -3,7 +3,7 @@ module Paraduct
3
3
  require "open3"
4
4
 
5
5
  class Runner
6
- attr_reader :script, :params, :base_job_dir, :logger
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
- @logger.info(line)
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
@@ -1,3 +1,3 @@
1
1
  module Paraduct
2
- VERSION = "0.0.1.beta11"
2
+ VERSION = "0.0.1.beta12"
3
3
  end
@@ -0,0 +1,9 @@
1
+ describe Paraduct::ColoredLabelLogger do
2
+ describe "#next_color" do
3
+ it "can call many times" do
4
+ 20.times do
5
+ expect(Paraduct::ColoredLabelLogger.next_color).to be_an_instance_of Symbol
6
+ end
7
+ end
8
+ end
9
+ end
@@ -8,7 +8,9 @@ describe Paraduct::Runner do
8
8
  )
9
9
  end
10
10
 
11
- let(:base_job_dir){ "/tmp/jobs" }
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 Pathname("/tmp/jobs/RUBY_1.9_DATABASE_mysql") }
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.beta11
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-23 00:00:00.000000000 Z
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: 1831065147149086006
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
@@ -1,9 +0,0 @@
1
- describe Paraduct::ThreadLogger do
2
- describe "#next_color" do
3
- it "can call many times" do
4
- 20.times do
5
- expect(Paraduct::ThreadLogger.next_color).to be_an_instance_of Symbol
6
- end
7
- end
8
- end
9
- end