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 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