miu 0.2.0 → 0.2.1

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