crabfarm 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c10577d223677baa807f27aa55fc8f2ccf19f189
4
- data.tar.gz: 7d07015295fe0325a85d73396821872e0e3542d3
3
+ metadata.gz: 3610a6364cc2081accde4aacc948d762f2b6ac89
4
+ data.tar.gz: e092a121bac1f17fcf81533d728aa4f2ef351907
5
5
  SHA512:
6
- metadata.gz: 45015ef058a82381fc1db17791bb99c362c37c8bf0cf24e29d0862c76c44f006c47e60f6d2689b545be7ec564ce05857565ca7bc00d43f592cba0f58a58f658e
7
- data.tar.gz: 83dc7148c8ed7b793290b0c197ad6ad10b1853d196d5c650a471cd4a26531d424177a303d82a25a4780a806d0b075683234318bef9f10f0ed1283f03f807d4df
6
+ metadata.gz: 355ee339b70832814a16412a1b24b86c66a466fef46f4c6e667621001f0605b77b77aea5abf88a37f6ad86bc188727ac0c2e045f891527549e9b7f03c9ed41dd
7
+ data.tar.gz: a72d719e6baccd90ee3f97f76ef1f9422596e6c99fb16b6bd66bb5a96e8808f30348af897acc984d42592892a5489e66ecde432a62fb7e82446f1ef952277988
@@ -32,7 +32,7 @@ module Crabfarm
32
32
  # Recorder configuration
33
33
  [:recorder_driver, :string, 'Recorder driver name, defaults to \'firefox\'']
34
34
  ]
35
- .map { |o| Option.new *o }
35
+ .map { |o| Option.new(*o) }
36
36
 
37
37
  OPTIONS.each do |var|
38
38
  define_method "set_#{var.name}" do |val|
@@ -103,8 +103,7 @@ module Crabfarm
103
103
  load_images: phantom_load_images,
104
104
  proxy: proxy,
105
105
  ssl: phantom_ssl,
106
- bin_path: phantom_bin_path,
107
- log_file: log_path ? File.join(log_path, 'phantom.log') : nil
106
+ bin_path: phantom_bin_path
108
107
  }
109
108
  end
110
109
 
@@ -1,4 +1,5 @@
1
1
  require 'timeout'
2
+ require 'crabfarm/utils/processes'
2
3
 
3
4
  module Crabfarm
4
5
  class CrabtrapRunner
@@ -7,11 +8,11 @@ module Crabfarm
7
8
 
8
9
  def initialize(_config={})
9
10
  @config = _config;
10
- @pid = nil
11
+ @process = nil
11
12
  end
12
13
 
13
14
  def is_running?
14
- not @pid.nil?
15
+ not @process.nil?
15
16
  end
16
17
 
17
18
  def port
@@ -24,36 +25,33 @@ module Crabfarm
24
25
 
25
26
  def start
26
27
  logger.info "Starting crabtrap in port #{port}"
27
- @pid = spawn_crabtrap
28
- logger.info "Crabtrap started (PID: #{@pid})"
28
+ @process = spawn_crabtrap
29
+ logger.info "Crabtrap started (PID: #{@process.pid})"
29
30
  end
30
31
 
31
32
  def stop
32
- unless @pid.nil?
33
- logger.info "Stopping crabtrap (PID: #{@pid})"
34
- Process.kill("INT", @pid)
35
- Process.wait @pid
33
+ unless @process.nil?
34
+ logger.info "Stopping crabtrap (PID: #{@process.pid})"
35
+ @process.stop
36
+ @process = nil
36
37
  logger.info "Crabtrap stopped"
37
- @pid = nil
38
38
  end
39
39
  end
40
40
 
41
41
  private
42
42
 
43
43
  def spawn_crabtrap
44
- pid = nil
44
+ proc = nil
45
45
  begin
46
- pid = Process.spawn({}, crabtrap_cmd)
46
+ proc = Utils::Processes.start_logged_process 'crabtrap', crabtrap_cmd, logger
47
47
  Timeout::timeout(CRABTRAP_START_TM) { wait_for_server }
48
- return pid
49
- rescue Errno::ENOENT
48
+ rescue ChildProcess::LaunchError
50
49
  raise BinaryMissingError.new 'crabtrap', @config[:bin_path]
51
50
  rescue Timeout::Error
52
- Process.kill "INT", pid
53
- Process.wait pid
51
+ proc.stop
54
52
  raise
55
53
  end
56
- pid
54
+ proc
57
55
  end
58
56
 
59
57
  def crabtrap_cmd
@@ -61,7 +59,7 @@ module Crabfarm
61
59
  cmd << mode.to_s
62
60
  cmd << @config[:bucket_path] if mode != :pass
63
61
  cmd << "--port=#{port}"
64
- cmd.join(' ')
62
+ cmd
65
63
  end
66
64
 
67
65
  def wait_for_server
@@ -1,4 +1,5 @@
1
1
  require 'timeout'
2
+ require 'crabfarm/utils/processes'
2
3
 
3
4
  module Crabfarm
4
5
  class PhantomRunner
@@ -7,7 +8,7 @@ module Crabfarm
7
8
 
8
9
  def initialize(_config={})
9
10
  @config = _config;
10
- @pid = nil
11
+ @process = nil
11
12
  end
12
13
 
13
14
  def port
@@ -15,36 +16,34 @@ module Crabfarm
15
16
  end
16
17
 
17
18
  def start
18
- Crabfarm.logger.info "Starting phantomjs in port #{port}"
19
- @pid = spawn_phantomjs
20
- Crabfarm.logger.info "Phantomjs started (PID: #{@pid})"
19
+ logger.info "Starting phantomjs in port #{port}"
20
+ @process = spawn_phantomjs
21
+ logger.info "Phantomjs started (PID: #{@process.pid})"
21
22
  end
22
23
 
23
24
  def stop
24
- unless @pid.nil?
25
- Crabfarm.logger.info "Stopping phantomjs (PID: #{@pid})"
26
- Process.kill "INT", @pid
27
- Process.wait @pid, Process::WNOHANG
28
- Crabfarm.logger.info "Phantomjs stopped (PID: #{@pid})"
29
- @pid = nil
25
+ unless @process.nil?
26
+ logger.info "Stopping phantomjs (PID: #{@process.pid})"
27
+ @process.stop
28
+ @process = nil
29
+ logger.info "Phantomjs stopped"
30
30
  end
31
31
  end
32
32
 
33
33
  private
34
34
 
35
35
  def spawn_phantomjs
36
- pid = nil
36
+ proc = nil
37
37
  begin
38
- pid = Process.spawn({}, phantomjs_cmd)
38
+ proc = Utils::Processes.start_logged_process 'phantomjs', phantomjs_cmd, logger
39
39
  Timeout::timeout(PHANTOM_START_TM) { wait_for_server }
40
- return pid
41
- rescue Errno::ENOENT
40
+ rescue ChildProcess::LaunchError
42
41
  raise BinaryMissingError.new 'phantomjs', @config[:bin_path]
43
42
  rescue Timeout::Error
44
- Process.kill "INT", pid
45
- Process.wait pid
43
+ proc.stop
46
44
  raise
47
45
  end
46
+ proc
48
47
  end
49
48
 
50
49
  def phantomjs_cmd
@@ -54,9 +53,8 @@ module Crabfarm
54
53
  cmd << "--webdriver=#{port}"
55
54
  cmd << "--ssl-protocol=#{@config[:ssl]}" unless @config[:ssl].nil?
56
55
  cmd << "--ignore-ssl-errors=true"
57
- cmd << "--webdriver-loglevel=WARN"
58
- cmd << "--webdriver-logfile=#{@config[:log_file]}" unless @config[:log_file].nil?
59
- cmd.join(' ')
56
+ cmd << "--webdriver-loglevel=DEBUG"
57
+ cmd
60
58
  end
61
59
 
62
60
  def wait_for_server
@@ -69,5 +67,9 @@ module Crabfarm
69
67
  end
70
68
  end
71
69
 
70
+ def logger
71
+ Crabfarm.logger
72
+ end
73
+
72
74
  end
73
75
  end
@@ -0,0 +1,30 @@
1
+ require 'childprocess'
2
+
3
+ ChildProcess.posix_spawn = true
4
+
5
+ module Crabfarm
6
+ module Utils
7
+ module Processes
8
+
9
+ def self.start_logged_process(_name, _cmd, _logger, _env={})
10
+ ro, wo = IO.pipe
11
+ re, we = IO.pipe
12
+
13
+ proc = ChildProcess.build(*_cmd)
14
+ proc.environment.merge! _env
15
+ proc.io.stdout = wo
16
+ proc.io.stderr = we
17
+ proc.start
18
+
19
+ wo.close
20
+ we.close
21
+
22
+ Thread.new { ro.each_line { |l| _logger.info "[#{_name.upcase}] #{l}" } }
23
+ Thread.new { re.each_line { |l| _logger.warn "[#{_name.upcase}] #{l}" } }
24
+
25
+ proc
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Crabfarm
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crabfarm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignacio Baixas
@@ -142,6 +142,20 @@ dependencies:
142
142
  - - '>='
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: childprocess
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ~>
150
+ - !ruby/object:Gem::Version
151
+ version: 0.5.5
152
+ type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ~>
157
+ - !ruby/object:Gem::Version
158
+ version: 0.5.5
145
159
  - !ruby/object:Gem::Dependency
146
160
  name: bundler
147
161
  requirement: !ruby/object:Gem::Requirement
@@ -420,6 +434,7 @@ files:
420
434
  - lib/crabfarm/templates/state_spec.rb.erb
421
435
  - lib/crabfarm/transition_service.rb
422
436
  - lib/crabfarm/utils/port_discovery.rb
437
+ - lib/crabfarm/utils/processes.rb
423
438
  - lib/crabfarm/version.rb
424
439
  - lib/crabfarm.rb
425
440
  - bin/crabfarm