crabfarm 0.1.3 → 0.2.0
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.
- checksums.yaml +4 -4
- data/lib/crabfarm/configuration.rb +2 -3
- data/lib/crabfarm/crabtrap_runner.rb +15 -17
- data/lib/crabfarm/phantom_runner.rb +21 -19
- data/lib/crabfarm/utils/processes.rb +30 -0
- data/lib/crabfarm/version.rb +1 -1
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3610a6364cc2081accde4aacc948d762f2b6ac89
|
4
|
+
data.tar.gz: e092a121bac1f17fcf81533d728aa4f2ef351907
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
-
@
|
11
|
+
@process = nil
|
11
12
|
end
|
12
13
|
|
13
14
|
def is_running?
|
14
|
-
not @
|
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
|
-
@
|
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 @
|
33
|
-
logger.info "Stopping crabtrap (PID: #{@pid})"
|
34
|
-
|
35
|
-
|
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
|
-
|
44
|
+
proc = nil
|
45
45
|
begin
|
46
|
-
|
46
|
+
proc = Utils::Processes.start_logged_process 'crabtrap', crabtrap_cmd, logger
|
47
47
|
Timeout::timeout(CRABTRAP_START_TM) { wait_for_server }
|
48
|
-
|
49
|
-
rescue Errno::ENOENT
|
48
|
+
rescue ChildProcess::LaunchError
|
50
49
|
raise BinaryMissingError.new 'crabtrap', @config[:bin_path]
|
51
50
|
rescue Timeout::Error
|
52
|
-
|
53
|
-
Process.wait pid
|
51
|
+
proc.stop
|
54
52
|
raise
|
55
53
|
end
|
56
|
-
|
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
|
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
|
-
@
|
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
|
-
|
19
|
-
@
|
20
|
-
|
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 @
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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
|
-
|
36
|
+
proc = nil
|
37
37
|
begin
|
38
|
-
|
38
|
+
proc = Utils::Processes.start_logged_process 'phantomjs', phantomjs_cmd, logger
|
39
39
|
Timeout::timeout(PHANTOM_START_TM) { wait_for_server }
|
40
|
-
|
41
|
-
rescue Errno::ENOENT
|
40
|
+
rescue ChildProcess::LaunchError
|
42
41
|
raise BinaryMissingError.new 'phantomjs', @config[:bin_path]
|
43
42
|
rescue Timeout::Error
|
44
|
-
|
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=
|
58
|
-
cmd
|
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
|
data/lib/crabfarm/version.rb
CHANGED
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.
|
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
|