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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e1242ce20d555ee0233fd243659101ad2462ac7
4
- data.tar.gz: 26cbc1ac07d7728b44e763201c7ee5979db4d9cf
3
+ metadata.gz: 8dd7b0bab63b0a31ff939c6d804000f387beab5b
4
+ data.tar.gz: 055701eb73582facab03d86e85876d39f3256a4c
5
5
  SHA512:
6
- metadata.gz: fe610bb47f23dc16ec1e23e4a3468228e2a3e7d533bc85aec9a2a73dddf19291cf2faf4d80a699d1887eb21034fb142e4daaed2b812d451eba2d0a0403452a6e
7
- data.tar.gz: ab3e3356e0fb45a77af2316654febe42ac2fa2508451f604dcd9c7f48b3867b37f05f5fb9639b2904a1847943be972841416c5ee110c7efbd8b0b77399c1a95b
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", "2.5"
20
+ s.add_development_dependency "rspec"
22
21
  s.add_development_dependency "coveralls"
23
- s.add_development_dependency "rake", "~> 0.9.2"
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")
@@ -133,7 +133,7 @@ module JCukeForker
133
133
  end
134
134
 
135
135
  def start
136
- @status_server.async.run
136
+ @status_server.run
137
137
  fire :on_run_starting
138
138
 
139
139
  @processes.each do |process|
@@ -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
- @server = TCPServer.from_ruby_server server
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
- loop { async.handle_connection @server.accept }
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
- @server.close if @server
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
- task = '__KILL__'
39
- if feature = @features.shift
40
- task = @opts.merge(feature: feature).to_json
41
- end
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
@@ -1,3 +1,3 @@
1
1
  module JCukeForker
2
- VERSION = "0.2.9"
2
+ VERSION = "0.2.10"
3
3
  end
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 "celluloid/io"
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(:status_server0) { double(StatusServer, :run => nil) }
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) }
@@ -30,7 +30,6 @@ module JCukeForker
30
30
 
31
31
  status_server.handle_connection( status_server.instance_variable_get(:@server).accept )
32
32
 
33
- status_server.shutdown
34
33
  end
35
34
  end
36
35
  end
@@ -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
- expect(mock_socket).to receive(:puts).with({feature: feature}.to_json)
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
- expect(mock_socket).to receive(:puts).with({feature: feature}.to_json)
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
- expect(mock_socket).to receive(:close)
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
- expect(mock_socket).to receive(:puts).with('__KILL__')
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
- expect(worker.args.each_cons(expected_args.size).include?(expected_args)).to be true
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.9
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: 2015-12-09 00:00:00.000000000 Z
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: '2.5'
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: '2.5'
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: 0.9.2
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: 0.9.2
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.1
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