sinatra-rocketio 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/Gemfile CHANGED
@@ -2,4 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in sinatra-rocketio.gemspec
4
4
  gemspec
5
+ gem 'minitest'
5
6
  gem 'thin'
7
+ gem 'em-cometio-client'
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.0.4 2013-03-18
2
+
3
+ * fix gem dependencies
4
+
1
5
  === 0.0.3 2013-03-18
2
6
 
3
7
  * delete routes of cometio.js and websocketio.js
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.pattern = "test/test_*.rb"
6
+ end
7
+
8
+ task :default => :test
@@ -1,5 +1,5 @@
1
1
  module Sinatra
2
2
  module RocketIO
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
data/sample/Gemfile.lock CHANGED
@@ -36,14 +36,14 @@ GEM
36
36
  rack (~> 1.4)
37
37
  rack-protection (~> 1.3)
38
38
  tilt (~> 1.3, >= 1.3.3)
39
- sinatra-cometio (0.3.3)
40
- event_emitter (>= 0.2.0)
41
- eventmachine
42
- httparty
43
- json
44
- rack
45
- sinatra
46
- sinatra-contrib
39
+ sinatra-cometio (0.3.4)
40
+ event_emitter (>= 0.2.3)
41
+ eventmachine (>= 1.0.0)
42
+ httparty (>= 0.10.2)
43
+ json (>= 1.7.0)
44
+ rack (>= 1.5.0)
45
+ sinatra (>= 1.3.6)
46
+ sinatra-contrib (>= 1.3.2)
47
47
  sinatra-contrib (1.3.2)
48
48
  backports (>= 2.0)
49
49
  eventmachine
@@ -65,7 +65,7 @@ GEM
65
65
  eventmachine (>= 0.12.6)
66
66
  rack (>= 1.0.0)
67
67
  thor (0.17.0)
68
- tilt (1.3.5)
68
+ tilt (1.3.6)
69
69
  websocket (1.0.7)
70
70
 
71
71
  PLATFORMS
@@ -15,11 +15,11 @@ Gem::Specification.new do |gem|
15
15
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
17
  gem.require_paths = ["lib"]
18
- gem.add_dependency "rack"
19
- gem.add_dependency "sinatra"
20
- gem.add_dependency "eventmachine"
21
- gem.add_dependency "event_emitter"
22
- gem.add_dependency "sinatra-contrib"
23
- gem.add_dependency "sinatra-cometio"
24
- gem.add_dependency "sinatra-websocketio"
18
+ gem.add_dependency "rack", ">= 1.5.0"
19
+ gem.add_dependency "sinatra", ">= 1.3.6"
20
+ gem.add_dependency "eventmachine", ">= 1.0.0"
21
+ gem.add_dependency "event_emitter", ">= 0.2.3"
22
+ gem.add_dependency "sinatra-contrib", ">= 1.3.2"
23
+ gem.add_dependency "sinatra-cometio", ">= 0.3.4"
24
+ gem.add_dependency "sinatra-websocketio", ">= 0.1.2"
25
25
  end
data/test/app.rb ADDED
@@ -0,0 +1,70 @@
1
+ require 'httparty'
2
+
3
+ class App
4
+
5
+ def self.running
6
+ @running ? true : false
7
+ end
8
+
9
+ def self.port
10
+ ENV['PORT'] || 5000
11
+ end
12
+
13
+ def self.ws_port
14
+ ENV['WS_PORT'] || 8080
15
+ end
16
+
17
+ def self.websocketio_url
18
+ "ws://localhost:#{ws_port}"
19
+ end
20
+
21
+ def self.cometio_url
22
+ "http://localhost:#{port}/cometio/io"
23
+ end
24
+
25
+
26
+ def self.pid_file
27
+ ENV['PID_FILE'] || "/tmp/sinatra-rocketio-testapp.pid"
28
+ end
29
+
30
+ def self.app_dir
31
+ File.expand_path 'app', File.dirname(__FILE__)
32
+ end
33
+
34
+ def self.pid
35
+ return unless @running
36
+ File.open(pid_file) do |f|
37
+ pid = f.gets.strip.to_i
38
+ return pid if pid > 0
39
+ end
40
+ return
41
+ end
42
+
43
+ def self.start
44
+ return if @running
45
+ File.delete pid_file if File.exists? pid_file
46
+ Thread.new do
47
+ IO::popen "cd #{app_dir} && PID_FILE=#{pid_file} WS_PORT=#{ws_port} rackup config.ru -p #{port} > /dev/null 2>&1"
48
+ end
49
+ @running = true
50
+ 100.times do
51
+ if File.exists? pid_file
52
+ sleep 2
53
+ return true
54
+ end
55
+ sleep 0.1
56
+ end
57
+ @running = false
58
+ return false
59
+ end
60
+
61
+ def self.stop
62
+ return unless @running
63
+ if File.exists? pid_file
64
+ system "kill -9 #{pid}"
65
+ File.delete pid_file
66
+ end
67
+ @running = false
68
+ end
69
+
70
+ end
@@ -0,0 +1,11 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'sinatra/base'
4
+ $stdout.sync = true
5
+ $:.unshift File.expand_path '../../lib', File.dirname(__FILE__)
6
+ require 'sinatra/rocketio'
7
+ require File.dirname(__FILE__)+'/main'
8
+
9
+ set :websocketio, :port => ENV['WS_PORT'].to_i
10
+
11
+ run TestApp
data/test/app/main.rb ADDED
@@ -0,0 +1,38 @@
1
+ pid_file = ENV['PID_FILE'] || "/tmp/sinatra-rocketio-test-pid"
2
+ EM::defer do
3
+ while !EM::reactor_running? do
4
+ sleep 0.1
5
+ end
6
+ File.open(pid_file, "w+") do |f|
7
+ f.write Process.pid.to_s
8
+ end
9
+ end
10
+
11
+ class TestApp < Sinatra::Base
12
+ register Sinatra::RocketIO
13
+ io = Sinatra::RocketIO
14
+
15
+ get '/' do
16
+ "sinatra-rocketio v#{Sinatra::RocketIO::VERSION}"
17
+ end
18
+
19
+ io.on :connect do |session, type|
20
+ puts "new client <session:#{session}> <type:#{type}>"
21
+ end
22
+
23
+ io.on :disconnect do |session, type|
24
+ puts "disconnect client <session:#{session}> <type:#{type}>"
25
+ end
26
+
27
+ io.on :broadcast do |data, from, type|
28
+ puts from
29
+ puts "broadcast <session:#{from}> <type:#{type}> - #{data.to_json}"
30
+ push :broadcast, data
31
+ end
32
+
33
+ io.on :message do |data, from, type|
34
+ puts "message <session:#{from}> <type:#{type}> - #{data.to_json}"
35
+ push :message, data, :to => data['to']
36
+ end
37
+
38
+ end
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
4
+ require 'minitest/autorun'
5
+ require 'em-cometio-client'
6
+ require 'em-websocketio-client'
7
+ require File.expand_path 'app', File.dirname(__FILE__)
8
+
9
+
10
+ ['SIGHUP', 'SIGINT', 'SIGKILL', 'SIGTERM'].each do |sig|
11
+ Kernel.trap sig do
12
+ App.stop
13
+ end
14
+ end
@@ -0,0 +1,100 @@
1
+ require File.expand_path 'test_helper', File.dirname(__FILE__)
2
+
3
+ class TestRocketIO < MiniTest::Unit::TestCase
4
+
5
+ def setup
6
+ App.start
7
+ end
8
+
9
+ def teardown
10
+ App.stop
11
+ end
12
+
13
+ def test_websocket_to_comet
14
+ ## websocket --> server --> comet
15
+ post_data = {:time => Time.now.to_s, :msg => 'hello!!', :to => nil}
16
+ res = nil
17
+ res2 = nil
18
+ EM::run do
19
+ client = EM::WebSocketIO::Client.new(App.websocketio_url).connect
20
+ client.on :message do |data|
21
+ res = data
22
+ end
23
+
24
+ client.on :disconnect do
25
+ EM.stop_event_loop
26
+ end
27
+
28
+ client.on :connect do |session|
29
+ client2 = EM::CometIO::Client.new(App.cometio_url).connect
30
+ client2.on :connect do |session2|
31
+ post_data['to'] = session2
32
+ client.push :message, post_data
33
+ end
34
+ client2.on :message do |data|
35
+ res2 = data
36
+ client2.close
37
+ client.close
38
+ end
39
+ end
40
+
41
+ EM::defer do
42
+ 50.times do
43
+ break if res != nil
44
+ sleep 0.1
45
+ end
46
+ client.close
47
+ end
48
+ end
49
+ assert res2 != nil, 'server not respond'
50
+ assert res2["time"] == post_data[:time]
51
+ assert res2["msg"] == post_data[:msg]
52
+ assert res == nil
53
+ end
54
+
55
+ def test_comet_to_websocket
56
+ ## comet --> server --> websocket
57
+ post_data = {:time => Time.now.to_s, :msg => 'hello!!', :to => nil}
58
+ res = nil
59
+ res2 = nil
60
+ EM::run do
61
+ client = EM::CometIO::Client.new(App.cometio_url).connect
62
+ client.on :message do |data|
63
+ res = data
64
+ end
65
+
66
+ client.on :disconnect do
67
+ EM.stop_event_loop
68
+ end
69
+
70
+ client.on :connect do |session|
71
+ client2 = EM::WebSocketIO::Client.new(App.websocketio_url).connect
72
+ client2.on :connect do |session2|
73
+ post_data['to'] = session2
74
+ client.push :message, post_data
75
+ end
76
+ client2.on :message do |data|
77
+ res2 = data
78
+ client2.close
79
+ client.close
80
+ end
81
+ client2.on :disconnect do
82
+ EM.stop_event_loop
83
+ end
84
+ end
85
+
86
+ EM::defer do
87
+ 50.times do
88
+ break if res != nil
89
+ sleep 0.1
90
+ end
91
+ client.close
92
+ end
93
+ end
94
+ assert res2 != nil, 'server not respond'
95
+ assert res2["time"] == post_data[:time]
96
+ assert res2["msg"] == post_data[:msg]
97
+ assert res == nil
98
+ end
99
+
100
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-rocketio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 1.5.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 1.5.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: sinatra
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: '0'
37
+ version: 1.3.6
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: '0'
45
+ version: 1.3.6
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: eventmachine
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
53
+ version: 1.0.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 1.0.0
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: event_emitter
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: 0.2.3
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
- version: '0'
77
+ version: 0.2.3
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: sinatra-contrib
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +82,7 @@ dependencies:
82
82
  requirements:
83
83
  - - ! '>='
84
84
  - !ruby/object:Gem::Version
85
- version: '0'
85
+ version: 1.3.2
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +90,7 @@ dependencies:
90
90
  requirements:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
- version: '0'
93
+ version: 1.3.2
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: sinatra-cometio
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +98,7 @@ dependencies:
98
98
  requirements:
99
99
  - - ! '>='
100
100
  - !ruby/object:Gem::Version
101
- version: '0'
101
+ version: 0.3.4
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,7 +106,7 @@ dependencies:
106
106
  requirements:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: 0.3.4
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: sinatra-websocketio
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +114,7 @@ dependencies:
114
114
  requirements:
115
115
  - - ! '>='
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 0.1.2
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -122,7 +122,7 @@ dependencies:
122
122
  requirements:
123
123
  - - ! '>='
124
124
  - !ruby/object:Gem::Version
125
- version: '0'
125
+ version: 0.1.2
126
126
  description: Node.js like WebSocket/Comet I/O plugin for Sinatra
127
127
  email:
128
128
  - hashimoto@shokai.org
@@ -157,6 +157,11 @@ files:
157
157
  - sample/views/index.haml
158
158
  - sample/views/main.scss
159
159
  - sinatra-rocketio.gemspec
160
+ - test/app.rb
161
+ - test/app/config.ru
162
+ - test/app/main.rb
163
+ - test/test_helper.rb
164
+ - test/test_rocketio.rb
160
165
  homepage: https://github.com/shokai/sinatra-rocketio
161
166
  licenses: []
162
167
  post_install_message:
@@ -181,4 +186,9 @@ rubygems_version: 1.8.24
181
186
  signing_key:
182
187
  specification_version: 3
183
188
  summary: Node.js like WebSocket/Comet I/O plugin for Sinatra
184
- test_files: []
189
+ test_files:
190
+ - test/app.rb
191
+ - test/app/config.ru
192
+ - test/app/main.rb
193
+ - test/test_helper.rb
194
+ - test/test_rocketio.rb