jcukeforker 0.2.9 → 0.2.10

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: 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