jcukeforker 0.2.9 → 0.2.10
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/jcukeforker.gemspec +2 -3
- data/lib/jcukeforker/runner.rb +1 -1
- data/lib/jcukeforker/status_server.rb +14 -7
- data/lib/jcukeforker/task_manager.rb +7 -4
- data/lib/jcukeforker/version.rb +1 -1
- data/lib/jcukeforker.rb +1 -6
- data/spec/jcukeforker/runner_spec.rb +1 -2
- data/spec/jcukeforker/status_server_spec.rb +0 -1
- data/spec/jcukeforker/task_manager_spec.rb +4 -4
- data/spec/jcukeforker/worker_spec.rb +1 -1
- metadata +9 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8dd7b0bab63b0a31ff939c6d804000f387beab5b
|
4
|
+
data.tar.gz: 055701eb73582facab03d86e85876d39f3256a4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2dc47ae20ae4366c34fb3f31d16cff0d2f322d782e2aa474bcfff6c2af6fb4f38afa3a67480d5a70f15bea3645cf1ef55ddd6f07c448f5a6baaaae80d3ffd92c
|
7
|
+
data.tar.gz: 6abf7baa8bf13fb1d030e4b5495199acaeb8909847e06cf2fe2edc9f9d39a4107e127a1ea10d51a8f41a84e064291f2947df211bd98f97e003b114ff9f687b35
|
data/jcukeforker.gemspec
CHANGED
@@ -16,11 +16,10 @@ Gem::Specification.new do |s|
|
|
16
16
|
|
17
17
|
s.add_dependency "cucumber", ">= 1.1.5", "< 2.0"
|
18
18
|
s.add_dependency "vnctools", ">= 0.1.1"
|
19
|
-
s.add_dependency "celluloid-io", ">= 0.15.0"
|
20
19
|
s.add_dependency "childprocess", ">= 0.5.3"
|
21
|
-
s.add_development_dependency "rspec"
|
20
|
+
s.add_development_dependency "rspec"
|
22
21
|
s.add_development_dependency "coveralls"
|
23
|
-
s.add_development_dependency "rake", "~>
|
22
|
+
s.add_development_dependency "rake", "~> 10"
|
24
23
|
|
25
24
|
s.files = `git ls-files`.split("\n")
|
26
25
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/lib/jcukeforker/runner.rb
CHANGED
@@ -3,23 +3,30 @@ require 'socket'
|
|
3
3
|
module JCukeForker
|
4
4
|
class StatusServer
|
5
5
|
include Observable
|
6
|
-
include Celluloid::IO
|
7
6
|
|
8
|
-
finalizer :shutdown
|
9
7
|
attr_reader :port
|
10
8
|
|
11
9
|
def initialize(port = '6333')
|
12
|
-
server = ::TCPServer.new 'localhost', port
|
13
|
-
@port = server.connect_address.ip_port
|
14
|
-
@
|
10
|
+
@server = ::TCPServer.new 'localhost', port
|
11
|
+
@port = @server.connect_address.ip_port
|
12
|
+
@thread_pool = []
|
15
13
|
end
|
16
14
|
|
17
15
|
def run
|
18
|
-
|
16
|
+
@master_thread = Thread.new do
|
17
|
+
loop do
|
18
|
+
socket = @server.accept
|
19
|
+
@thread_pool << Thread.new { handle_connection(socket) }
|
20
|
+
end
|
21
|
+
end
|
19
22
|
end
|
20
23
|
|
21
24
|
def shutdown
|
22
|
-
|
25
|
+
if @server
|
26
|
+
@server.close
|
27
|
+
@master_thread.terminate
|
28
|
+
@thread_pool.each(&:terminate)
|
29
|
+
end
|
23
30
|
end
|
24
31
|
|
25
32
|
def handle_connection(socket)
|
@@ -7,6 +7,7 @@ module JCukeForker
|
|
7
7
|
@opts = opts
|
8
8
|
@worker_sockets = {}
|
9
9
|
@failures = false
|
10
|
+
@mutex = Mutex.new
|
10
11
|
end
|
11
12
|
|
12
13
|
def on_worker_register(worker_path)
|
@@ -35,10 +36,12 @@ module JCukeForker
|
|
35
36
|
private
|
36
37
|
|
37
38
|
def pop_task(worker_path)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
task = '__KILL__'
|
40
|
+
@mutex.synchronize do
|
41
|
+
if feature = @features.shift
|
42
|
+
task = @opts.merge(feature: feature).to_json
|
43
|
+
end
|
44
|
+
end
|
42
45
|
|
43
46
|
@worker_sockets[worker_path].puts(task)
|
44
47
|
end
|
data/lib/jcukeforker/version.rb
CHANGED
data/lib/jcukeforker.rb
CHANGED
@@ -11,12 +11,7 @@ require "forwardable"
|
|
11
11
|
require "ostruct"
|
12
12
|
require "json"
|
13
13
|
require "securerandom"
|
14
|
-
require "
|
15
|
-
require "celluloid/autostart"
|
16
|
-
|
17
|
-
unless ENV['DEBUG']
|
18
|
-
Celluloid.logger = Logger.new('/dev/null')
|
19
|
-
end
|
14
|
+
require "thread"
|
20
15
|
|
21
16
|
module JCukeForker
|
22
17
|
end
|
@@ -47,8 +47,7 @@ module JCukeForker
|
|
47
47
|
context "running" do
|
48
48
|
let(:listener) { double(AbstractListener, :update => nil) }
|
49
49
|
let(:queue) { double(Queue, :has_failures? => false) }
|
50
|
-
let(:
|
51
|
-
let(:status_server) { double(StatusServer, :async => status_server0, :shutdown => nil) }
|
50
|
+
let(:status_server) { double(StatusServer, :run => nil, :shutdown => nil) }
|
52
51
|
let(:process) { double(ChildProcess, :start => nil, :wait => nil) }
|
53
52
|
let(:work_dir) { '/tmp/jcukeforker-testdir' }
|
54
53
|
let(:vnc_pool) { double(VncTools::ServerPool, :stop => nil) }
|
@@ -9,7 +9,7 @@ module JCukeForker
|
|
9
9
|
it "can register a worker" do
|
10
10
|
|
11
11
|
UNIXSocket.stub(:open).and_return(mock_socket)
|
12
|
-
|
12
|
+
mock_socket.should_receive(:puts).with({feature: feature}.to_json)
|
13
13
|
|
14
14
|
task_manager = TaskManager.new [feature]
|
15
15
|
task_manager.on_worker_register worker_path
|
@@ -17,7 +17,7 @@ module JCukeForker
|
|
17
17
|
|
18
18
|
it "can finish task" do
|
19
19
|
|
20
|
-
|
20
|
+
mock_socket.should_receive(:puts).with({feature: feature}.to_json)
|
21
21
|
|
22
22
|
task_manager = TaskManager.new [feature]
|
23
23
|
task_manager.instance_variable_get(:@worker_sockets)[worker_path] = mock_socket
|
@@ -26,7 +26,7 @@ module JCukeForker
|
|
26
26
|
|
27
27
|
it "can close dead worker" do
|
28
28
|
|
29
|
-
|
29
|
+
mock_socket.should_receive(:close)
|
30
30
|
|
31
31
|
task_manager = TaskManager.new [feature]
|
32
32
|
task_manager.instance_variable_get(:@worker_sockets)[worker_path] = mock_socket
|
@@ -35,7 +35,7 @@ module JCukeForker
|
|
35
35
|
|
36
36
|
it "can send '__KILL__' when there are no tasks left" do
|
37
37
|
|
38
|
-
|
38
|
+
mock_socket.should_receive(:puts).with('__KILL__')
|
39
39
|
|
40
40
|
task_manager = TaskManager.new []
|
41
41
|
task_manager.instance_variable_get(:@worker_sockets)[worker_path] = mock_socket
|
@@ -34,7 +34,7 @@ module JCukeForker
|
|
34
34
|
expected_args = formats.flat_map do |f|
|
35
35
|
%W[--format #{f} --out #{path}/some_feature_51.#{f}]
|
36
36
|
end
|
37
|
-
|
37
|
+
worker.args.each_cons(expected_args.size).include?(expected_args).should be true
|
38
38
|
end
|
39
39
|
end
|
40
40
|
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.10
|
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:
|
12
|
+
date: 2016-02-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cucumber
|
@@ -45,20 +45,6 @@ dependencies:
|
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 0.1.1
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: celluloid-io
|
50
|
-
requirement: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.15.0
|
55
|
-
type: :runtime
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.15.0
|
62
48
|
- !ruby/object:Gem::Dependency
|
63
49
|
name: childprocess
|
64
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -77,16 +63,16 @@ dependencies:
|
|
77
63
|
name: rspec
|
78
64
|
requirement: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- -
|
66
|
+
- - ">="
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
68
|
+
version: '0'
|
83
69
|
type: :development
|
84
70
|
prerelease: false
|
85
71
|
version_requirements: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- -
|
73
|
+
- - ">="
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
75
|
+
version: '0'
|
90
76
|
- !ruby/object:Gem::Dependency
|
91
77
|
name: coveralls
|
92
78
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,14 +93,14 @@ dependencies:
|
|
107
93
|
requirements:
|
108
94
|
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
96
|
+
version: '10'
|
111
97
|
type: :development
|
112
98
|
prerelease: false
|
113
99
|
version_requirements: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
103
|
+
version: '10'
|
118
104
|
description: Library to maintain a forking queue of Cucumber processes, with optional
|
119
105
|
VNC displays. Designed for JRuby.
|
120
106
|
email:
|
@@ -175,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
161
|
version: '0'
|
176
162
|
requirements: []
|
177
163
|
rubyforge_project: jcukeforker
|
178
|
-
rubygems_version: 2.4.5
|
164
|
+
rubygems_version: 2.4.5
|
179
165
|
signing_key:
|
180
166
|
specification_version: 4
|
181
167
|
summary: Library to maintain a forking queue of Cucumber processes, for JRuby
|