em-breakout 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/em-breakout.gemspec +1 -1
- data/features/notify.feature +13 -0
- data/features/security.feature +7 -0
- data/features/step_definitions/common_steps.rb +10 -0
- data/lib/em-breakout/browser.rb +2 -1
- data/lib/em-breakout/version.rb +1 -1
- metadata +42 -63
data/em-breakout.gemspec
CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
|
17
17
|
s.add_dependency 'json', '>=1.4.6'
|
18
18
|
s.add_dependency 'em-websocket', '>=0.2.1'
|
19
|
-
s.add_dependency 'breakout', '0.0.
|
19
|
+
s.add_dependency 'breakout', '>=0.0.2'
|
20
20
|
|
21
21
|
s.files = `git ls-files`.split("\n")
|
22
22
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/features/notify.feature
CHANGED
@@ -17,3 +17,16 @@ Feature: notify
|
|
17
17
|
Then worker 1's payload route should be "test"
|
18
18
|
Then worker 1's payload bid should be "1"
|
19
19
|
Then worker 1's payload message should be "/close"
|
20
|
+
|
21
|
+
Scenario: bid freed after notify
|
22
|
+
Given worker 1 opens a url for work
|
23
|
+
When browser 1 opens a url with bid "foo" and notify
|
24
|
+
And worker 1 receives a payload
|
25
|
+
And browser 1 disconnects
|
26
|
+
And browser 2 opens a url with bid "foo"
|
27
|
+
Then browser 2 should not be connected
|
28
|
+
When worker 1 sends done_work
|
29
|
+
And worker 1 receives a payload
|
30
|
+
And worker 1 sends done_work
|
31
|
+
When browser 2 opens a url with bid "foo"
|
32
|
+
Then browser 2 should be connected
|
data/features/security.feature
CHANGED
@@ -18,6 +18,13 @@ Feature: security
|
|
18
18
|
And browser 2 should be disconnected
|
19
19
|
And browser 1 should be connected
|
20
20
|
|
21
|
+
Scenario: bid freed after use
|
22
|
+
Given worker 1 opens a url
|
23
|
+
When browser 1 opens a url with bid "foo"
|
24
|
+
And browser 1 disconnects
|
25
|
+
And browser 2 opens a url with bid "foo"
|
26
|
+
Then browser 2 should be connected
|
27
|
+
|
21
28
|
Scenario: expired link
|
22
29
|
Given worker 1 opens a url
|
23
30
|
When browser 1 opens an expired url
|
@@ -14,6 +14,10 @@ When /^browser (\d+) opens a url with notify$/ do |id|
|
|
14
14
|
@browser_by_id[id] = Breakout::Socket.new(Breakout.browser_url("test", :bid => id, :notify => true))
|
15
15
|
end
|
16
16
|
|
17
|
+
When /^browser (\d+) opens a url with bid "([^"]*)" and notify$/ do |id, bid|
|
18
|
+
@browser_by_id[id] = Breakout::Socket.new(Breakout.browser_url("test", :bid => bid, :notify => true))
|
19
|
+
end
|
20
|
+
|
17
21
|
When /^worker (\d+) opens a url for work$/ do |id|
|
18
22
|
@worker_by_id[id] = Breakout::Socket.new(Breakout.worker_url)
|
19
23
|
@worker_by_id[id].send :done_work => true
|
@@ -103,10 +107,12 @@ end
|
|
103
107
|
|
104
108
|
When /^browser (\d+) disconnects$/ do |id|
|
105
109
|
@browser_by_id[id].close
|
110
|
+
sleep(0.01)
|
106
111
|
end
|
107
112
|
|
108
113
|
When /^worker (\d+) disconnects$/ do |id|
|
109
114
|
@worker_by_id[id].close
|
115
|
+
sleep(0.01)
|
110
116
|
end
|
111
117
|
|
112
118
|
Then /^browser (\d+) should be disconnected$/ do |id|
|
@@ -153,3 +159,7 @@ end
|
|
153
159
|
Given /^the server is restarted$/ do
|
154
160
|
restart_server
|
155
161
|
end
|
162
|
+
|
163
|
+
When /^there is a pause$/ do
|
164
|
+
sleep(0.1)
|
165
|
+
end
|
data/lib/em-breakout/browser.rb
CHANGED
@@ -28,7 +28,7 @@ module EventMachine
|
|
28
28
|
throw :break
|
29
29
|
end
|
30
30
|
|
31
|
-
if @grid.browsers.has_key?(@bid)
|
31
|
+
if @grid.browsers.has_key?(@bid) or @grid.disconnected_browsers.has_key?(@bid)
|
32
32
|
close_websocket "bid in use"
|
33
33
|
throw :break
|
34
34
|
end
|
@@ -71,6 +71,7 @@ module EventMachine
|
|
71
71
|
log("closing") if debug
|
72
72
|
|
73
73
|
if @message_queue
|
74
|
+
@grid.browsers.delete @bid
|
74
75
|
|
75
76
|
if @notify
|
76
77
|
@grid.disconnected_browsers[@bid] = self
|
data/lib/em-breakout/version.rb
CHANGED
metadata
CHANGED
@@ -1,61 +1,57 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-breakout
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.4
|
4
5
|
prerelease:
|
5
|
-
version: 0.0.3
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Steve Masterman
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-05-02 00:00:00 -04:00
|
12
|
+
date: 2011-05-02 00:00:00.000000000 -04:00
|
14
13
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: json
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &70737630 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
24
22
|
version: 1.4.6
|
25
23
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: em-websocket
|
29
24
|
prerelease: false
|
30
|
-
|
25
|
+
version_requirements: *70737630
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: em-websocket
|
28
|
+
requirement: &70737370 !ruby/object:Gem::Requirement
|
31
29
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
35
33
|
version: 0.2.1
|
36
34
|
type: :runtime
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: breakout
|
40
35
|
prerelease: false
|
41
|
-
|
36
|
+
version_requirements: *70737370
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: breakout
|
39
|
+
requirement: &70737140 !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 0.0.
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 0.0.2
|
47
45
|
type: :runtime
|
48
|
-
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *70737140
|
49
48
|
description: Breakout routes messages among web browsers and workers using WebSockets.
|
50
|
-
email:
|
49
|
+
email:
|
51
50
|
- steve@vermonster.com
|
52
51
|
executables: []
|
53
|
-
|
54
52
|
extensions: []
|
55
|
-
|
56
53
|
extra_rdoc_files: []
|
57
|
-
|
58
|
-
files:
|
54
|
+
files:
|
59
55
|
- .gitignore
|
60
56
|
- Gemfile
|
61
57
|
- README.md
|
@@ -87,43 +83,26 @@ files:
|
|
87
83
|
has_rdoc: true
|
88
84
|
homepage: https://github.com/steve9001/em-breakout
|
89
85
|
licenses: []
|
90
|
-
|
91
86
|
post_install_message:
|
92
87
|
rdoc_options: []
|
93
|
-
|
94
|
-
require_paths:
|
88
|
+
require_paths:
|
95
89
|
- lib
|
96
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
91
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version:
|
102
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
97
|
none: false
|
104
|
-
requirements:
|
105
|
-
- -
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version:
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
108
102
|
requirements: []
|
109
|
-
|
110
103
|
rubyforge_project: em-breakout
|
111
104
|
rubygems_version: 1.6.2
|
112
105
|
signing_key:
|
113
106
|
specification_version: 3
|
114
107
|
summary: Breakout routes messages among web browsers and workers using WebSockets.
|
115
|
-
test_files:
|
116
|
-
- features/api.feature
|
117
|
-
- features/api_format.feature
|
118
|
-
- features/connect.feature
|
119
|
-
- features/notify.feature
|
120
|
-
- features/performance.feature
|
121
|
-
- features/ping.feature
|
122
|
-
- features/security.feature
|
123
|
-
- features/serialize.feature
|
124
|
-
- features/step_definitions/common_steps.rb
|
125
|
-
- features/step_definitions/performance_steps.rb
|
126
|
-
- features/support/em_control
|
127
|
-
- features/support/env.rb
|
128
|
-
- features/support/server.rb
|
129
|
-
- features/support/socket.rb
|
108
|
+
test_files: []
|