jcukeforker 0.2.5 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jcukeforker/abstract_listener.rb +0 -24
- data/lib/jcukeforker/logging_listener.rb +1 -1
- data/lib/jcukeforker/runner.rb +5 -4
- data/lib/jcukeforker/status_server.rb +5 -1
- data/lib/jcukeforker/task_manager.rb +6 -0
- data/lib/jcukeforker/version.rb +1 -1
- data/lib/jcukeforker/worker.rb +3 -3
- data/spec/jcukeforker/logging_listener_spec.rb +1 -1
- data/spec/jcukeforker/runner_spec.rb +5 -3
- data/spec/jcukeforker/task_manager_spec.rb +7 -0
- data/spec/jcukeforker/worker_spec.rb +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 624cde7fd15fb72fdfa5b749dde6041a09695b27
|
4
|
+
data.tar.gz: eb0d4416fe95194e6547de3e0ead5236002d08db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf21e8272ccb037a6691218e5e21f522d1df072cd5e77ed84505dd72b27afa36102c379b91f4fc6be4cf2b6622199ef556a7afda088d280bcb2a165150ec993b
|
7
|
+
data.tar.gz: 2efb490171b37a3e23b47faef16e530df5b6f30080cea84ffee8367c39c2cc71b34a35f4dd88b7ef9e6a56ede4180dfbcecd3ab346d03e0c82bce07eaf455797
|
@@ -16,39 +16,15 @@ module JCukeForker
|
|
16
16
|
def on_task_finished(worker_path, feature, status)
|
17
17
|
end
|
18
18
|
|
19
|
-
def on_worker_forked(worker)
|
20
|
-
end
|
21
|
-
|
22
19
|
def on_worker_register(worker_path)
|
23
20
|
end
|
24
21
|
|
25
|
-
def on_worker_waiting(worker_path)
|
26
|
-
end
|
27
|
-
|
28
|
-
def on_worker_dead(worker_path)
|
29
|
-
end
|
30
|
-
|
31
22
|
def on_run_interrupted
|
32
23
|
end
|
33
24
|
|
34
25
|
def on_run_finished(failed)
|
35
26
|
end
|
36
27
|
|
37
|
-
def on_display_fetched(server)
|
38
|
-
end
|
39
|
-
|
40
|
-
def on_display_released(server)
|
41
|
-
end
|
42
|
-
|
43
|
-
def on_display_starting(worker_path, display)
|
44
|
-
end
|
45
|
-
|
46
|
-
def on_display_stopping(worker_path, display)
|
47
|
-
end
|
48
|
-
|
49
|
-
def on_eta(time, remaining, finished)
|
50
|
-
end
|
51
|
-
|
52
28
|
def update(meth, *args)
|
53
29
|
__send__(meth, *args)
|
54
30
|
end
|
data/lib/jcukeforker/runner.rb
CHANGED
@@ -76,9 +76,9 @@ module JCukeForker
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
processes = create_processes(max, port, worker_dir, vnc_pool, opts[:record])
|
79
|
+
processes = create_processes(max, status_server.port, worker_dir, vnc_pool, opts[:record])
|
80
80
|
|
81
|
-
runner = Runner.new status_server, processes, worker_dir, vnc_pool, delay
|
81
|
+
runner = Runner.new status_server, processes, worker_dir, vnc_pool, delay, task_manager
|
82
82
|
|
83
83
|
listeners.each { |l|
|
84
84
|
status_server.add_observer l
|
@@ -88,12 +88,13 @@ module JCukeForker
|
|
88
88
|
runner
|
89
89
|
end
|
90
90
|
|
91
|
-
def initialize(status_server, processes, worker_dir, vnc_pool, delay)
|
91
|
+
def initialize(status_server, processes, worker_dir, vnc_pool, delay, task_manager)
|
92
92
|
@status_server = status_server
|
93
93
|
@processes = processes
|
94
94
|
@worker_dir = worker_dir
|
95
95
|
@vnc_pool = vnc_pool
|
96
96
|
@delay = delay
|
97
|
+
@task_manager = task_manager
|
97
98
|
end
|
98
99
|
|
99
100
|
def run
|
@@ -151,7 +152,7 @@ module JCukeForker
|
|
151
152
|
ensure # catch potential second Interrupt
|
152
153
|
@vnc_pool.stop if @vnc_pool
|
153
154
|
FileUtils.rm_r @worker_dir
|
154
|
-
|
155
|
+
fire :on_run_finished, @task_manager.has_failures?
|
155
156
|
end
|
156
157
|
|
157
158
|
def fire(*args)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'socket'
|
1
2
|
|
2
3
|
module JCukeForker
|
3
4
|
class StatusServer
|
@@ -5,9 +6,12 @@ module JCukeForker
|
|
5
6
|
include Celluloid::IO
|
6
7
|
|
7
8
|
finalizer :shutdown
|
9
|
+
attr_reader :port
|
8
10
|
|
9
11
|
def initialize(port = '6333')
|
10
|
-
|
12
|
+
server = ::TCPServer.new 'localhost', port
|
13
|
+
@port = server.connect_address.ip_port
|
14
|
+
@server = TCPServer.from_ruby_server server
|
11
15
|
end
|
12
16
|
|
13
17
|
def run
|
@@ -6,6 +6,7 @@ module JCukeForker
|
|
6
6
|
@features = features
|
7
7
|
@opts = opts
|
8
8
|
@worker_sockets = {}
|
9
|
+
@failures = false
|
9
10
|
end
|
10
11
|
|
11
12
|
def on_worker_register(worker_path)
|
@@ -14,6 +15,7 @@ module JCukeForker
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def on_task_finished(worker_path, feature, status)
|
18
|
+
@failures = @failures || !status
|
17
19
|
pop_task worker_path
|
18
20
|
end
|
19
21
|
|
@@ -26,6 +28,10 @@ module JCukeForker
|
|
26
28
|
@worker_sockets.each {|k, v| v.close}
|
27
29
|
end
|
28
30
|
|
31
|
+
def has_failures?
|
32
|
+
@failures
|
33
|
+
end
|
34
|
+
|
29
35
|
private
|
30
36
|
|
31
37
|
def pop_task(worker_path)
|
data/lib/jcukeforker/version.rb
CHANGED
data/lib/jcukeforker/worker.rb
CHANGED
@@ -69,7 +69,8 @@ module JCukeForker
|
|
69
69
|
@status.nil? || !@status
|
70
70
|
end
|
71
71
|
|
72
|
-
def output
|
72
|
+
def output(format = nil)
|
73
|
+
format = @format if format.nil?
|
73
74
|
File.join out, "#{basename}.#{format}"
|
74
75
|
end
|
75
76
|
|
@@ -82,10 +83,9 @@ module JCukeForker
|
|
82
83
|
end
|
83
84
|
|
84
85
|
def args
|
85
|
-
args = %W[--format #{
|
86
|
+
args = Array(format).flat_map { |f| %W[--format #{f} --out #{output(f)}] }
|
86
87
|
args += @extra_args
|
87
88
|
args << feature
|
88
|
-
|
89
89
|
args
|
90
90
|
end
|
91
91
|
|
@@ -36,7 +36,7 @@ I, [#{timestamp}] INFO -- : [ worker 15 ] failed : foo/baz
|
|
36
36
|
I, [#{timestamp}] INFO -- : [ worker 1 ] dead : /tmp/12sd3-1
|
37
37
|
I, [#{timestamp}] INFO -- : [ worker 15 ] dead : /tmp/12sd3-15
|
38
38
|
I, [#{timestamp}] INFO -- : [ run ] interrupted - please wait
|
39
|
-
I, [#{timestamp}] INFO -- : [ run ] finished,
|
39
|
+
I, [#{timestamp}] INFO -- : [ run ] finished, passed
|
40
40
|
OUTPUT
|
41
41
|
end
|
42
42
|
end # Worker
|
@@ -15,8 +15,8 @@ module JCukeForker
|
|
15
15
|
features = %w[a b]
|
16
16
|
delay = 1
|
17
17
|
|
18
|
-
mock_task_manager = double(TaskManager, :update => nil)
|
19
|
-
mock_status_server = double(StatusServer)
|
18
|
+
mock_task_manager = double(TaskManager, :update => nil, :has_failures? => false)
|
19
|
+
mock_status_server = double(StatusServer, :port => nil)
|
20
20
|
mock_tasks = Array.new(2) { |n| double("Worker-#{n}") }
|
21
21
|
|
22
22
|
TaskManager.should_receive(:new).with(features, {format: format, out: out, extra_args: []}).and_return mock_task_manager
|
@@ -52,7 +52,9 @@ module JCukeForker
|
|
52
52
|
let(:process) { double(ChildProcess, :start => nil, :wait => nil) }
|
53
53
|
let(:work_dir) { '/tmp/jcukeforker-testdir' }
|
54
54
|
let(:vnc_pool) { double(VncTools::ServerPool, :stop => nil) }
|
55
|
-
let(:
|
55
|
+
let(:mock_task_manager) { double(TaskManager, :update => nil, :has_failures? => false) }
|
56
|
+
let(:runner) { Runner.new(status_server, [process], work_dir, vnc_pool, 0, mock_task_manager) }
|
57
|
+
|
56
58
|
|
57
59
|
it "processes the queue" do
|
58
60
|
runner.add_observer listener
|
@@ -41,5 +41,12 @@ module JCukeForker
|
|
41
41
|
task_manager.instance_variable_get(:@worker_sockets)[worker_path] = mock_socket
|
42
42
|
task_manager.on_task_finished worker_path, nil, nil
|
43
43
|
end
|
44
|
+
|
45
|
+
it "can detect failure" do
|
46
|
+
task_manager = TaskManager.new []
|
47
|
+
def task_manager.pop_task(*args); end
|
48
|
+
task_manager.on_task_finished worker_path, feature, false
|
49
|
+
task_manager.has_failures?.should == true
|
50
|
+
end
|
44
51
|
end
|
45
52
|
end
|
@@ -23,5 +23,19 @@ module JCukeForker
|
|
23
23
|
|
24
24
|
worker.register
|
25
25
|
end
|
26
|
+
|
27
|
+
context "running a scenario with multiple report formats" do
|
28
|
+
formats = [ :json, :junit ]
|
29
|
+
path = "some/path"
|
30
|
+
|
31
|
+
it "has an output file for each format specified" do
|
32
|
+
json_str = {'format' => formats, 'feature' => 'some/feature:51', 'extra_args' => [], 'out' => path}.to_json
|
33
|
+
worker.send :set_state, json_str
|
34
|
+
expected_args = formats.flat_map do |f|
|
35
|
+
%W[--format #{f} --out #{path}/some_feature_51.#{f}]
|
36
|
+
end
|
37
|
+
worker.args.each_cons(expected_args.size).include?(expected_args).should be_true
|
38
|
+
end
|
39
|
+
end
|
26
40
|
end
|
27
41
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jcukeforker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Gowan
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-09-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cucumber
|