em-breakout 0.0.3 → 0.0.4
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.
- 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: []
|