miu 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -1
  3. data/Rakefile +1 -1
  4. data/lib/miu.rb +14 -14
  5. data/lib/miu/cli.rb +60 -19
  6. data/lib/miu/command.rb +30 -3
  7. data/lib/miu/dsl.rb +45 -0
  8. data/lib/miu/forwarder.rb +1 -1
  9. data/lib/miu/logger.rb +1 -0
  10. data/lib/miu/messages.rb +3 -0
  11. data/lib/miu/messages/base.rb +4 -7
  12. data/lib/miu/messages/enter.rb +16 -0
  13. data/lib/miu/messages/leave.rb +16 -0
  14. data/lib/miu/packet.rb +4 -0
  15. data/lib/miu/proxy.rb +3 -14
  16. data/lib/miu/publisher.rb +3 -3
  17. data/lib/miu/{subscribable.rb → readable.rb} +1 -1
  18. data/lib/miu/resources.rb +2 -0
  19. data/lib/miu/resources/base.rb +2 -2
  20. data/lib/miu/resources/content.rb +2 -1
  21. data/lib/miu/resources/enter_content.rb +22 -0
  22. data/lib/miu/resources/leave_content.rb +22 -0
  23. data/lib/miu/resources/network.rb +1 -1
  24. data/lib/miu/resources/room.rb +1 -1
  25. data/lib/miu/resources/text_content.rb +3 -3
  26. data/lib/miu/resources/user.rb +1 -1
  27. data/lib/miu/server.rb +14 -7
  28. data/lib/miu/{socket.rb → sockets.rb} +59 -4
  29. data/lib/miu/subscriber.rb +3 -3
  30. data/lib/miu/templates/config/miu.god +7 -0
  31. data/lib/miu/version.rb +1 -1
  32. data/lib/miu/{publishable.rb → writable.rb} +1 -1
  33. data/miu.gemspec +21 -20
  34. data/spec/miu/dsl_spec.rb +31 -0
  35. data/spec/miu/messages/base_spec.rb +2 -2
  36. data/spec/miu/messages/enter_spec.rb +35 -0
  37. data/spec/miu/messages/leave_spec.rb +35 -0
  38. data/spec/miu/nodes_spec.rb +4 -0
  39. data/spec/miu/publisher_spec.rb +0 -9
  40. data/spec/miu/{subscribable_spec.rb → readable_spec.rb} +2 -2
  41. data/spec/miu/sockets_spec.rb +97 -0
  42. data/spec/miu/subscriber_spec.rb +0 -9
  43. data/spec/miu/{publishable_spec.rb → writable_spec.rb} +2 -2
  44. data/spec/spec_helper.rb +2 -0
  45. data/spec/support/socket.rb +36 -0
  46. metadata +51 -55
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe Miu::Messages::Leave do
4
+ describe '#initialize' do
5
+ context 'no args' do
6
+ before do
7
+ @msg = Miu::Messages::Leave.new
8
+ end
9
+ subject { @msg }
10
+
11
+ its(:id) { should be_instance_of String }
12
+ its(:time) { should be_instance_of Fixnum }
13
+ its(:network) { should be_instance_of Miu::Resources::Network }
14
+ its(:type) { should eq 'leave' }
15
+ end
16
+
17
+ context 'with args' do
18
+ before do
19
+ @msg = Miu::Messages::Leave.new({
20
+ :id => 123,
21
+ :time => 123,
22
+ :network => {:name => 'test'},
23
+ :content => {},
24
+ })
25
+ end
26
+ subject { @msg }
27
+
28
+ its(:id) { should eq 123 }
29
+ its(:time) { should eq 123 }
30
+ its(:network) { should be_instance_of Miu::Resources::Network }
31
+ its(:type) { should eq 'leave' }
32
+ its(:content) { should be_instance_of Miu::Resources::LeaveContent }
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Miu::Nodes do
4
+ end
@@ -2,15 +2,6 @@ require 'spec_helper'
2
2
  require 'celluloid/zmq'
3
3
 
4
4
  describe Miu::Publisher do
5
- shared_examples 'publishable socket' do
6
- let(:pub) { Miu::Publisher.new(:socket => base) }
7
-
8
- it { expect(pub).to be_kind_of(base) }
9
- it { expect(pub).to be_kind_of(Miu::Publishable) }
10
- it { expect(pub).to be_kind_of(Miu::Publisher) }
11
- it { expect(pub).to be_respond_to(:connect, :write) }
12
- end
13
-
14
5
  context 'miu socket' do
15
6
  it_should_behave_like 'publishable socket' do
16
7
  let(:base) { Miu::PubSocket }
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Miu::Subscribable do
3
+ describe Miu::Readable do
4
4
  class MySocket
5
5
  def read; end
6
- include Miu::Subscribable
6
+ include Miu::Readable
7
7
  end
8
8
 
9
9
  let(:socket) { MySocket.new }
@@ -0,0 +1,97 @@
1
+ require 'spec_helper'
2
+
3
+ describe Miu::Socket do
4
+ describe 'socket_type' do
5
+ let(:socket_class1) { Class.new(Miu::Socket) { socket_type 'pub' } }
6
+ let(:socket_class2) { Class.new(socket_class1) { socket_type 'xpub' } }
7
+ let(:socket1) { socket_class1.new }
8
+ let(:socket2) { socket_class2.new }
9
+
10
+ it { expect(socket_class1.socket_type).to eq 'pub' }
11
+ it { expect(socket_class2.socket_type).to eq 'xpub' }
12
+ it { expect(socket1.socket_type).to eq :PUB }
13
+ it { expect(socket2.socket_type).to eq :XPUB }
14
+ end
15
+
16
+ describe 'build_address' do
17
+ it 'one arg' do
18
+ address = Miu::Socket.build_address 'inproc://mysocket'
19
+ expect(address).to eq 'inproc://mysocket'
20
+ end
21
+
22
+ it 'two args' do
23
+ address = Miu::Socket.build_address 'localhost', 12345
24
+ expect(address).to eq 'tcp://localhost:12345'
25
+ end
26
+ end
27
+ end
28
+
29
+ describe Miu::PubSocket do
30
+ it_should_behave_like 'writable socket' do
31
+ let(:socket) { described_class.new }
32
+ let(:type) { :PUB }
33
+ end
34
+ end
35
+
36
+ describe Miu::SubSocket do
37
+ it_should_behave_like 'readable socket' do
38
+ let(:socket) { described_class.new }
39
+ let(:type) { :SUB }
40
+ end
41
+ end
42
+
43
+ describe Miu::ReqSocket do
44
+ it_should_behave_like 'readable/writable socket' do
45
+ let(:socket) { described_class.new }
46
+ let(:type) { :REQ }
47
+ end
48
+ end
49
+
50
+ describe Miu::RepSocket do
51
+ it_should_behave_like 'readable/writable socket' do
52
+ let(:socket) { described_class.new }
53
+ let(:type) { :REP }
54
+ end
55
+ end
56
+
57
+ describe Miu::DealerSocket do
58
+ it_should_behave_like 'readable/writable socket' do
59
+ let(:socket) { described_class.new }
60
+ let(:type) { :DEALER }
61
+ end
62
+ end
63
+
64
+ describe Miu::RouterSocket do
65
+ it_should_behave_like 'readable/writable socket' do
66
+ let(:socket) { described_class.new }
67
+ let(:type) { :ROUTER }
68
+ end
69
+ end
70
+
71
+ describe Miu::PushSocket do
72
+ it_should_behave_like 'writable socket' do
73
+ let(:socket) { described_class.new }
74
+ let(:type) { :PUSH }
75
+ end
76
+ end
77
+
78
+ describe Miu::PullSocket do
79
+ it_should_behave_like 'readable socket' do
80
+ let(:socket) { described_class.new }
81
+ let(:type) { :PULL }
82
+ end
83
+ end
84
+
85
+ describe Miu::XPubSocket do
86
+ it_should_behave_like 'writable socket' do
87
+ let(:socket) { described_class.new }
88
+ let(:type) { :XPUB }
89
+ end
90
+ end
91
+
92
+ describe Miu::XSubSocket do
93
+ it_should_behave_like 'readable socket' do
94
+ let(:socket) { described_class.new }
95
+ let(:type) { :XSUB }
96
+ end
97
+ end
@@ -2,15 +2,6 @@ require 'spec_helper'
2
2
  require 'celluloid/zmq'
3
3
 
4
4
  describe Miu::Subscriber do
5
- shared_examples 'subscribable socket' do
6
- let(:sub) { Miu::Subscriber.new(:socket => base) }
7
-
8
- it { expect(sub).to be_kind_of(base) }
9
- it { expect(sub).to be_kind_of(Miu::Subscribable) }
10
- it { expect(sub).to be_kind_of(Miu::Subscriber) }
11
- it { expect(sub).to be_respond_to(:connect, :read) }
12
- end
13
-
14
5
  context 'miu socket' do
15
6
  it_should_behave_like 'subscribable socket' do
16
7
  let(:base) { Miu::SubSocket }
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Miu::Publishable do
3
+ describe Miu::Writable do
4
4
  class MySocket
5
5
  def write; end
6
- include Miu::Publishable
6
+ include Miu::Writable
7
7
  end
8
8
 
9
9
  let(:socket) { MySocket.new }
@@ -7,6 +7,8 @@ RSpec.configure do |config|
7
7
  config.run_all_when_everything_filtered = true
8
8
  config.filter_run :focus
9
9
 
10
+ Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
11
+
10
12
  # Run specs in random order to surface order dependencies. If you find an
11
13
  # order dependency and want to debug it, you can fix the order by providing
12
14
  # the seed, which is printed after each run.
@@ -0,0 +1,36 @@
1
+ shared_examples 'readable socket' do
2
+ it { expect(socket.socket_type).to eq type }
3
+ it { expect(socket).to be_kind_of Miu::Socket }
4
+ it { expect(socket).to be_kind_of Miu::ReadableSocket }
5
+ it { expect(socket).to_not be_kind_of Miu::WritableSocket }
6
+ end
7
+
8
+ shared_examples 'writable socket' do
9
+ it { expect(socket.socket_type).to eq type }
10
+ it { expect(socket).to be_kind_of Miu::Socket }
11
+ it { expect(socket).to_not be_kind_of Miu::ReadableSocket }
12
+ it { expect(socket).to be_kind_of Miu::WritableSocket }
13
+ end
14
+
15
+ shared_examples 'readable/writable socket' do
16
+ it { expect(socket.socket_type).to eq type }
17
+ it { expect(socket).to be_kind_of Miu::Socket }
18
+ it { expect(socket).to be_kind_of Miu::ReadableSocket }
19
+ it { expect(socket).to be_kind_of Miu::WritableSocket }
20
+ end
21
+
22
+ shared_examples 'publishable socket' do
23
+ let(:pub) { Miu::Publisher.new(:socket => base) }
24
+ it { expect(pub).to be_kind_of(base) }
25
+ it { expect(pub).to be_kind_of(Miu::Writable) }
26
+ it { expect(pub).to be_kind_of(Miu::Publisher) }
27
+ it { expect(pub).to be_respond_to(:connect, :write) }
28
+ end
29
+
30
+ shared_examples 'subscribable socket' do
31
+ let(:sub) { Miu::Subscriber.new(:socket => base) }
32
+ it { expect(sub).to be_kind_of(base) }
33
+ it { expect(sub).to be_kind_of(Miu::Readable) }
34
+ it { expect(sub).to be_kind_of(Miu::Subscriber) }
35
+ it { expect(sub).to be_respond_to(:connect, :read) }
36
+ end
metadata CHANGED
@@ -1,129 +1,114 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.2.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - mashiro
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-08 00:00:00.000000000 Z
11
+ date: 2013-05-10 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: thor
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 0.18.1
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 0.18.1
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: god
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: 0.13.2
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: 0.13.2
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: ffi-rzmq
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: 1.0.0
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: 1.0.0
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: msgpack
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: 0.5.4
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: 0.5.4
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rake
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: 10.0.4
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: 10.0.4
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rspec
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: 2.13.0
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: 2.13.0
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: celluloid-zmq
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
103
  version: 0.13.0
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: 0.13.0
126
- description: miu miu
111
+ description: Miu message hub
127
112
  email:
128
113
  - mail@mashiro.org
129
114
  executables:
@@ -144,11 +129,14 @@ files:
144
129
  - lib/miu/cli.rb
145
130
  - lib/miu/cli_base.rb
146
131
  - lib/miu/command.rb
132
+ - lib/miu/dsl.rb
147
133
  - lib/miu/errors.rb
148
134
  - lib/miu/forwarder.rb
149
135
  - lib/miu/logger.rb
150
136
  - lib/miu/messages.rb
151
137
  - lib/miu/messages/base.rb
138
+ - lib/miu/messages/enter.rb
139
+ - lib/miu/messages/leave.rb
152
140
  - lib/miu/messages/text.rb
153
141
  - lib/miu/messages/unknown.rb
154
142
  - lib/miu/node.rb
@@ -156,77 +144,85 @@ files:
156
144
  - lib/miu/nodes/.gitkeep
157
145
  - lib/miu/packet.rb
158
146
  - lib/miu/proxy.rb
159
- - lib/miu/publishable.rb
160
147
  - lib/miu/publisher.rb
148
+ - lib/miu/readable.rb
161
149
  - lib/miu/resources.rb
162
150
  - lib/miu/resources/base.rb
163
151
  - lib/miu/resources/content.rb
152
+ - lib/miu/resources/enter_content.rb
153
+ - lib/miu/resources/leave_content.rb
164
154
  - lib/miu/resources/network.rb
165
155
  - lib/miu/resources/room.rb
166
156
  - lib/miu/resources/text_content.rb
167
157
  - lib/miu/resources/user.rb
168
158
  - lib/miu/server.rb
169
- - lib/miu/socket.rb
170
- - lib/miu/subscribable.rb
159
+ - lib/miu/sockets.rb
171
160
  - lib/miu/subscriber.rb
161
+ - lib/miu/templates/config/miu.god
172
162
  - lib/miu/utility.rb
173
163
  - lib/miu/version.rb
174
- - lib/templates/config/miu.god
164
+ - lib/miu/writable.rb
175
165
  - miu.gemspec
176
166
  - spec/miu/command_spec.rb
167
+ - spec/miu/dsl_spec.rb
177
168
  - spec/miu/logger_spec.rb
178
169
  - spec/miu/messages/base_spec.rb
170
+ - spec/miu/messages/enter_spec.rb
171
+ - spec/miu/messages/leave_spec.rb
179
172
  - spec/miu/messages/text_spec.rb
180
173
  - spec/miu/node_spec.rb
174
+ - spec/miu/nodes_spec.rb
181
175
  - spec/miu/packet_spec.rb
182
- - spec/miu/publishable_spec.rb
183
176
  - spec/miu/publisher_spec.rb
184
- - spec/miu/subscribable_spec.rb
177
+ - spec/miu/readable_spec.rb
178
+ - spec/miu/sockets_spec.rb
185
179
  - spec/miu/subscriber_spec.rb
186
180
  - spec/miu/utility_spec.rb
181
+ - spec/miu/writable_spec.rb
187
182
  - spec/miu_spec.rb
188
183
  - spec/spec_helper.rb
189
- homepage: ''
190
- licenses: []
184
+ - spec/support/socket.rb
185
+ homepage: https://github.com/yuijo/miu
186
+ licenses:
187
+ - MIT
188
+ metadata: {}
191
189
  post_install_message:
192
190
  rdoc_options: []
193
191
  require_paths:
194
192
  - lib
195
193
  required_ruby_version: !ruby/object:Gem::Requirement
196
- none: false
197
194
  requirements:
198
- - - ! '>='
195
+ - - '>='
199
196
  - !ruby/object:Gem::Version
200
197
  version: '0'
201
- segments:
202
- - 0
203
- hash: -2159721735902272457
204
198
  required_rubygems_version: !ruby/object:Gem::Requirement
205
- none: false
206
199
  requirements:
207
- - - ! '>='
200
+ - - '>='
208
201
  - !ruby/object:Gem::Version
209
202
  version: '0'
210
- segments:
211
- - 0
212
- hash: -2159721735902272457
213
203
  requirements: []
214
204
  rubyforge_project:
215
- rubygems_version: 1.8.24
205
+ rubygems_version: 2.0.0
216
206
  signing_key:
217
- specification_version: 3
218
- summary: miu miu
207
+ specification_version: 4
208
+ summary: Miu message hub
219
209
  test_files:
220
210
  - spec/miu/command_spec.rb
211
+ - spec/miu/dsl_spec.rb
221
212
  - spec/miu/logger_spec.rb
222
213
  - spec/miu/messages/base_spec.rb
214
+ - spec/miu/messages/enter_spec.rb
215
+ - spec/miu/messages/leave_spec.rb
223
216
  - spec/miu/messages/text_spec.rb
224
217
  - spec/miu/node_spec.rb
218
+ - spec/miu/nodes_spec.rb
225
219
  - spec/miu/packet_spec.rb
226
- - spec/miu/publishable_spec.rb
227
220
  - spec/miu/publisher_spec.rb
228
- - spec/miu/subscribable_spec.rb
221
+ - spec/miu/readable_spec.rb
222
+ - spec/miu/sockets_spec.rb
229
223
  - spec/miu/subscriber_spec.rb
230
224
  - spec/miu/utility_spec.rb
225
+ - spec/miu/writable_spec.rb
231
226
  - spec/miu_spec.rb
232
227
  - spec/spec_helper.rb
228
+ - spec/support/socket.rb