aggro 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +8 -0
  3. data/.travis.yml +15 -0
  4. data/Gemfile +9 -0
  5. data/README.md +5 -1
  6. data/Rakefile +10 -0
  7. data/aggro.gemspec +8 -1
  8. data/lib/aggro.rb +191 -7
  9. data/lib/aggro/abstract_store.rb +12 -0
  10. data/lib/aggro/aggregate.rb +98 -0
  11. data/lib/aggro/aggregate_ref.rb +68 -6
  12. data/lib/aggro/attribute_dsl.rb +96 -0
  13. data/lib/aggro/binding_dsl.rb +45 -0
  14. data/lib/aggro/block_helper.rb +14 -0
  15. data/lib/aggro/channel.rb +37 -0
  16. data/lib/aggro/client.rb +12 -0
  17. data/lib/aggro/cluster_config.rb +57 -0
  18. data/lib/aggro/command.rb +16 -0
  19. data/lib/aggro/concurrent_actor.rb +26 -0
  20. data/lib/aggro/event_bus.rb +94 -0
  21. data/lib/aggro/event_dsl.rb +53 -0
  22. data/lib/aggro/event_proxy.rb +23 -0
  23. data/lib/aggro/event_serializer.rb +14 -0
  24. data/lib/aggro/file_store.rb +97 -0
  25. data/lib/aggro/file_store/reader.rb +21 -0
  26. data/lib/aggro/file_store/writer.rb +27 -0
  27. data/lib/aggro/handler/command.rb +60 -0
  28. data/lib/aggro/handler/create_aggregate.rb +42 -0
  29. data/lib/aggro/handler/get_events.rb +30 -0
  30. data/lib/aggro/handler/query.rb +60 -0
  31. data/lib/aggro/handler/start_saga.rb +56 -0
  32. data/lib/aggro/local_node.rb +28 -0
  33. data/lib/aggro/locator.rb +32 -0
  34. data/lib/aggro/message/ask.rb +16 -0
  35. data/lib/aggro/message/command.rb +36 -0
  36. data/lib/aggro/message/create_aggregate.rb +16 -0
  37. data/lib/aggro/message/endpoint.rb +16 -0
  38. data/lib/aggro/message/events.rb +24 -0
  39. data/lib/aggro/message/get_events.rb +16 -0
  40. data/lib/aggro/message/heartbeat.rb +16 -0
  41. data/lib/aggro/message/invalid_target.rb +20 -0
  42. data/lib/aggro/message/ok.rb +20 -0
  43. data/lib/aggro/message/publisher_endpoint_inquiry.rb +16 -0
  44. data/lib/aggro/message/query.rb +36 -0
  45. data/lib/aggro/message/result.rb +16 -0
  46. data/lib/aggro/message/start_saga.rb +28 -0
  47. data/lib/aggro/message/unhandled_operation.rb +20 -0
  48. data/lib/aggro/message/unknown_operation.rb +20 -0
  49. data/lib/aggro/message_parser.rb +10 -0
  50. data/lib/aggro/message_router.rb +26 -0
  51. data/lib/aggro/nanomsg_transport.rb +31 -0
  52. data/lib/aggro/nanomsg_transport/client.rb +35 -0
  53. data/lib/aggro/nanomsg_transport/connection.rb +98 -0
  54. data/lib/aggro/nanomsg_transport/publish.rb +17 -0
  55. data/lib/aggro/nanomsg_transport/publisher.rb +37 -0
  56. data/lib/aggro/nanomsg_transport/raw_reply.rb +18 -0
  57. data/lib/aggro/nanomsg_transport/raw_request.rb +18 -0
  58. data/lib/aggro/nanomsg_transport/reply.rb +17 -0
  59. data/lib/aggro/nanomsg_transport/request.rb +17 -0
  60. data/lib/aggro/nanomsg_transport/server.rb +84 -0
  61. data/lib/aggro/nanomsg_transport/socket_error.rb +20 -0
  62. data/lib/aggro/nanomsg_transport/subscribe.rb +27 -0
  63. data/lib/aggro/nanomsg_transport/subscriber.rb +82 -0
  64. data/lib/aggro/node.rb +29 -0
  65. data/lib/aggro/node_list.rb +39 -0
  66. data/lib/aggro/projection.rb +13 -0
  67. data/lib/aggro/query.rb +11 -0
  68. data/lib/aggro/saga.rb +94 -0
  69. data/lib/aggro/saga_runner.rb +87 -0
  70. data/lib/aggro/saga_runner/start_saga.rb +12 -0
  71. data/lib/aggro/saga_status.rb +29 -0
  72. data/lib/aggro/server.rb +88 -0
  73. data/lib/aggro/subscriber.rb +48 -0
  74. data/lib/aggro/subscription.rb +41 -0
  75. data/lib/aggro/transform/boolean.rb +16 -0
  76. data/lib/aggro/transform/email.rb +26 -0
  77. data/lib/aggro/transform/id.rb +34 -0
  78. data/lib/aggro/transform/integer.rb +22 -0
  79. data/lib/aggro/transform/money.rb +22 -0
  80. data/lib/aggro/transform/noop.rb +16 -0
  81. data/lib/aggro/transform/string.rb +16 -0
  82. data/lib/aggro/transform/time_interval.rb +24 -0
  83. data/lib/aggro/version.rb +1 -1
  84. data/spec/lib/aggro/abstract_store_spec.rb +15 -0
  85. data/spec/lib/aggro/aggregate_ref_spec.rb +63 -12
  86. data/spec/lib/aggro/aggregate_spec.rb +207 -0
  87. data/spec/lib/aggro/channel_spec.rb +87 -0
  88. data/spec/lib/aggro/client_spec.rb +26 -0
  89. data/spec/lib/aggro/cluster_config_spec.rb +33 -0
  90. data/spec/lib/aggro/command_spec.rb +52 -0
  91. data/spec/lib/aggro/concurrent_actor_spec.rb +44 -0
  92. data/spec/lib/aggro/event_bus_spec.rb +20 -0
  93. data/spec/lib/aggro/event_serializer_spec.rb +28 -0
  94. data/spec/lib/aggro/file_store/reader_spec.rb +32 -0
  95. data/spec/lib/aggro/file_store/writer_spec.rb +67 -0
  96. data/spec/lib/aggro/file_store_spec.rb +51 -0
  97. data/spec/lib/aggro/handler/command_spec.rb +78 -0
  98. data/spec/lib/aggro/handler/create_aggregate_spec.rb +64 -0
  99. data/spec/lib/aggro/handler/get_events_handler_spec.rb +45 -0
  100. data/spec/lib/aggro/handler/query_spec.rb +78 -0
  101. data/spec/lib/aggro/handler/start_saga_spec.rb +64 -0
  102. data/spec/lib/aggro/local_node_spec.rb +52 -0
  103. data/spec/lib/aggro/locator_spec.rb +61 -0
  104. data/spec/lib/aggro/message/ask_spec.rb +23 -0
  105. data/spec/lib/aggro/message/command_spec.rb +50 -0
  106. data/spec/lib/aggro/message/create_aggregate_spec.rb +28 -0
  107. data/spec/lib/aggro/message/endpoint_spec.rb +23 -0
  108. data/spec/lib/aggro/message/events_spec.rb +37 -0
  109. data/spec/lib/aggro/message/get_events_spec.rb +33 -0
  110. data/spec/lib/aggro/message/heartbeat_spec.rb +23 -0
  111. data/spec/lib/aggro/message/invalid_target_spec.rb +28 -0
  112. data/spec/lib/aggro/message/ok_spec.rb +27 -0
  113. data/spec/lib/aggro/message/publisher_endpoint_inquiry_spec.rb +23 -0
  114. data/spec/lib/aggro/message/query_spec.rb +50 -0
  115. data/spec/lib/aggro/message/start_saga_spec.rb +37 -0
  116. data/spec/lib/aggro/message/unhandled_operation_spec.rb +28 -0
  117. data/spec/lib/aggro/message/unknown_operation_spec.rb +28 -0
  118. data/spec/lib/aggro/message_parser_spec.rb +16 -0
  119. data/spec/lib/aggro/message_router_spec.rb +35 -0
  120. data/spec/lib/aggro/nanomsg_transport/socket_error_spec.rb +21 -0
  121. data/spec/lib/aggro/nanomsg_transport_spec.rb +37 -0
  122. data/spec/lib/aggro/node_list_spec.rb +38 -0
  123. data/spec/lib/aggro/node_spec.rb +44 -0
  124. data/spec/lib/aggro/projection_spec.rb +22 -0
  125. data/spec/lib/aggro/query_spec.rb +47 -0
  126. data/spec/lib/aggro/saga_runner_spec.rb +84 -0
  127. data/spec/lib/aggro/saga_spec.rb +126 -0
  128. data/spec/lib/aggro/saga_status_spec.rb +56 -0
  129. data/spec/lib/aggro/server_spec.rb +118 -0
  130. data/spec/lib/aggro/subscriber_spec.rb +59 -0
  131. data/spec/lib/aggro/subscription_spec.rb +50 -0
  132. data/spec/lib/aggro/transform/boolean_spec.rb +23 -0
  133. data/spec/lib/aggro/transform/email_spec.rb +13 -0
  134. data/spec/lib/aggro/transform/id_spec.rb +70 -0
  135. data/spec/lib/aggro/transform/integer_spec.rb +30 -0
  136. data/spec/lib/aggro/transform/money_spec.rb +34 -0
  137. data/spec/lib/aggro/transform/string_spec.rb +15 -0
  138. data/spec/lib/aggro/transform/time_interval_spec.rb +29 -0
  139. data/spec/lib/aggro_spec.rb +63 -19
  140. data/spec/spec_helper.rb +21 -2
  141. metadata +283 -3
@@ -0,0 +1,15 @@
1
+ RSpec.describe Transform::String do
2
+ describe '.deserialize' do
3
+ it 'should stringify the value' do
4
+ expect(Transform::String.deserialize('test')).to eq 'test'
5
+ expect(Transform::String.deserialize(666)).to eq '666'
6
+ end
7
+ end
8
+
9
+ describe '.serialize' do
10
+ it 'should stringify the value' do
11
+ expect(Transform::String.serialize('test')).to eq 'test'
12
+ expect(Transform::String.serialize(666)).to eq '666'
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,29 @@
1
+ require 'time-interval'
2
+
3
+ RSpec.describe Transform::TimeInterval do
4
+ let(:interval_str) { '2007-03-01T13:00:00Z/P1M' }
5
+ let(:interval) { TimeInterval.parse interval_str }
6
+
7
+ let(:repeating_str) { 'R2/2007-03-01T13:00:00Z/P1M' }
8
+ let(:repeating) { TimeInterval.parse repeating_str }
9
+
10
+ describe '.deserialize' do
11
+ it 'should transform strings to a TimeInterval' do
12
+ deserialized = Transform::TimeInterval.deserialize(interval_str)
13
+
14
+ expect(deserialized.start_time).to eq interval.start_time
15
+ expect(deserialized.end_time).to eq interval.end_time
16
+ end
17
+
18
+ it 'should return nil if not a string or TimeInterval' do
19
+ expect(Transform::TimeInterval.deserialize(true)).to eq nil
20
+ end
21
+ end
22
+
23
+ describe '.serialize' do
24
+ it 'should transform the value to a string' do
25
+ expect(Transform::TimeInterval.serialize(interval)).to eq interval_str
26
+ expect(Transform::TimeInterval.serialize(repeating)).to eq repeating_str
27
+ end
28
+ end
29
+ end
@@ -1,31 +1,75 @@
1
- require 'spec_helper'
2
-
3
- describe Aggro do
4
- describe '.initialize_hash_ring' do
5
- context 'when called without args' do
6
- it 'should initialize the hash ring from env variable' do
7
- hash_ring = Aggro.initialize_hash_ring
8
- expect(hash_ring.nodes).to include '10.0.0.1'
9
- expect(hash_ring.nodes).to include '10.0.0.2'
1
+ RSpec.describe Aggro do
2
+ describe '.data_dir' do
3
+ it 'should default to a tmp folder' do
4
+ Aggro.data_dir = nil
5
+
6
+ expect(Aggro.data_dir).to eq './tmp/aggro'
7
+ end
8
+ end
9
+
10
+ describe '.node_list' do
11
+ let(:nodes) { { 'fluffy' => '10.0.0.50' } }
12
+ let(:is_server_node) { true }
13
+ let(:fake_config) do
14
+ double(
15
+ node_name: 'kittens',
16
+ nodes: nodes,
17
+ server_node?: is_server_node
18
+ )
19
+ end
20
+
21
+ before do
22
+ allow(Aggro).to receive(:cluster_config).and_return(fake_config)
23
+ end
24
+
25
+ it 'should return a node list' do
26
+ expect(Aggro.node_list).to be_a NodeList
27
+ end
28
+
29
+ it 'should initialize the node list with nodes from cluster config' do
30
+ expect(Aggro.node_list.nodes.map(&:id)).to include 'fluffy'
31
+ end
32
+
33
+ it 'should return the same node list every time' do
34
+ expect(Aggro.node_list).to eq Aggro.node_list
35
+ end
36
+
37
+ context 'configured to be a server node' do
38
+ it 'should initialize the node list with the local node' do
39
+ expect(Aggro.node_list.nodes.map(&:id)).to include 'kittens'
10
40
  end
11
41
  end
12
42
 
13
- context 'when called with an array' do
14
- it 'should initialize the hash ring from given array' do
15
- hash_ring = Aggro.initialize_hash_ring ['10.0.0.50']
16
- expect(hash_ring.nodes).to_not include '10.0.0.1'
17
- expect(hash_ring.nodes).to include '10.0.0.50'
43
+ context 'not configured to be a server node' do
44
+ let(:is_server_node) { false }
45
+
46
+ it 'should not initialize the node list with the local node' do
47
+ expect(Aggro.node_list.nodes.map(&:id)).to_not include 'kittens'
18
48
  end
19
49
  end
20
50
  end
21
51
 
22
- describe '.hash_ring' do
23
- it 'should return a hash ring' do
24
- expect(Aggro.hash_ring).to be_a ConsistentHashing::Ring
52
+ describe '.port' do
53
+ it 'should return $PORT as an integer' do
54
+ stub_const 'ENV', 'PORT' => '7000'
55
+
56
+ expect(Aggro.port).to eq 7000
57
+ end
58
+
59
+ it 'should default to port 5000' do
60
+ stub_const 'ENV', {}
61
+
62
+ expect(Aggro.port).to eq 5000
63
+ end
64
+ end
65
+
66
+ describe '.cluster_config' do
67
+ it 'should return a cluster config' do
68
+ expect(Aggro.cluster_config).to be_a ClusterConfig
25
69
  end
26
70
 
27
- it 'should return the same hash ring every time' do
28
- expect(Aggro.hash_ring).to eq Aggro.hash_ring
71
+ it 'should return the same config every time' do
72
+ expect(Aggro.cluster_config).to eq Aggro.cluster_config
29
73
  end
30
74
  end
31
75
  end
@@ -1,6 +1,11 @@
1
+ if ENV['CI']
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+ end
5
+
1
6
  RSpec.configure do |config|
7
+ config.disable_monkey_patching!
2
8
  config.order = :random
3
- config.warnings = true
4
9
 
5
10
  config.expect_with :rspec do |expectations|
6
11
  expectations.include_chain_clauses_in_custom_matcher_descriptions = true
@@ -9,6 +14,17 @@ RSpec.configure do |config|
9
14
  config.mock_with :rspec do |mocks|
10
15
  mocks.verify_partial_doubles = true
11
16
  end
17
+
18
+ config.before(:each) do
19
+ Aggro.reset
20
+ FileUtils.mkdir_p './tmp/test'
21
+ Aggro.data_dir = './tmp/test'
22
+ end
23
+
24
+ config.after(:each) do
25
+ FileUtils.rm_r './tmp/test' if File.exist? './tmp/test'
26
+ Thread.current[:aggro_context] = nil
27
+ end
12
28
  end
13
29
 
14
30
  require 'aggro'
@@ -17,4 +33,7 @@ Aggro.constants.each do |const|
17
33
  eval "#{const} = Aggro::#{const}"
18
34
  end
19
35
 
20
- ENV['AGGRO_SERVERS'] = '10.0.0.1,10.0.0.2'
36
+ STORE_DIR = './tmp/test/data'
37
+ CLUSTER_CONFIG_PATH = './tmp/test/cluster.yml'
38
+
39
+ Thread.abort_on_exception = true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aggro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Edwards
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-06 00:00:00.000000000 Z
11
+ date: 2015-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,48 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: activemodel
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: activesupport
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: concurrent-ruby
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: consistent-hashing
85
127
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +136,62 @@ dependencies:
94
136
  - - ">="
95
137
  - !ruby/object:Gem::Version
96
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: invokr
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: nio4r
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: nn-core
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: object-stream
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
97
195
  description: ''
98
196
  email:
99
197
  - me@sebastianedwards.co.nz
@@ -104,6 +202,7 @@ files:
104
202
  - ".gitignore"
105
203
  - ".rspec"
106
204
  - ".rubocop.yml"
205
+ - ".travis.yml"
107
206
  - Gemfile
108
207
  - Guardfile
109
208
  - LICENSE.txt
@@ -111,9 +210,136 @@ files:
111
210
  - Rakefile
112
211
  - aggro.gemspec
113
212
  - lib/aggro.rb
213
+ - lib/aggro/abstract_store.rb
214
+ - lib/aggro/aggregate.rb
114
215
  - lib/aggro/aggregate_ref.rb
216
+ - lib/aggro/attribute_dsl.rb
217
+ - lib/aggro/binding_dsl.rb
218
+ - lib/aggro/block_helper.rb
219
+ - lib/aggro/channel.rb
220
+ - lib/aggro/client.rb
221
+ - lib/aggro/cluster_config.rb
222
+ - lib/aggro/command.rb
223
+ - lib/aggro/concurrent_actor.rb
224
+ - lib/aggro/event_bus.rb
225
+ - lib/aggro/event_dsl.rb
226
+ - lib/aggro/event_proxy.rb
227
+ - lib/aggro/event_serializer.rb
228
+ - lib/aggro/file_store.rb
229
+ - lib/aggro/file_store/reader.rb
230
+ - lib/aggro/file_store/writer.rb
231
+ - lib/aggro/handler/command.rb
232
+ - lib/aggro/handler/create_aggregate.rb
233
+ - lib/aggro/handler/get_events.rb
234
+ - lib/aggro/handler/query.rb
235
+ - lib/aggro/handler/start_saga.rb
236
+ - lib/aggro/local_node.rb
237
+ - lib/aggro/locator.rb
238
+ - lib/aggro/message/ask.rb
239
+ - lib/aggro/message/command.rb
240
+ - lib/aggro/message/create_aggregate.rb
241
+ - lib/aggro/message/endpoint.rb
242
+ - lib/aggro/message/events.rb
243
+ - lib/aggro/message/get_events.rb
244
+ - lib/aggro/message/heartbeat.rb
245
+ - lib/aggro/message/invalid_target.rb
246
+ - lib/aggro/message/ok.rb
247
+ - lib/aggro/message/publisher_endpoint_inquiry.rb
248
+ - lib/aggro/message/query.rb
249
+ - lib/aggro/message/result.rb
250
+ - lib/aggro/message/start_saga.rb
251
+ - lib/aggro/message/unhandled_operation.rb
252
+ - lib/aggro/message/unknown_operation.rb
253
+ - lib/aggro/message_parser.rb
254
+ - lib/aggro/message_router.rb
255
+ - lib/aggro/nanomsg_transport.rb
256
+ - lib/aggro/nanomsg_transport/client.rb
257
+ - lib/aggro/nanomsg_transport/connection.rb
258
+ - lib/aggro/nanomsg_transport/publish.rb
259
+ - lib/aggro/nanomsg_transport/publisher.rb
260
+ - lib/aggro/nanomsg_transport/raw_reply.rb
261
+ - lib/aggro/nanomsg_transport/raw_request.rb
262
+ - lib/aggro/nanomsg_transport/reply.rb
263
+ - lib/aggro/nanomsg_transport/request.rb
264
+ - lib/aggro/nanomsg_transport/server.rb
265
+ - lib/aggro/nanomsg_transport/socket_error.rb
266
+ - lib/aggro/nanomsg_transport/subscribe.rb
267
+ - lib/aggro/nanomsg_transport/subscriber.rb
268
+ - lib/aggro/node.rb
269
+ - lib/aggro/node_list.rb
270
+ - lib/aggro/projection.rb
271
+ - lib/aggro/query.rb
272
+ - lib/aggro/saga.rb
273
+ - lib/aggro/saga_runner.rb
274
+ - lib/aggro/saga_runner/start_saga.rb
275
+ - lib/aggro/saga_status.rb
276
+ - lib/aggro/server.rb
277
+ - lib/aggro/subscriber.rb
278
+ - lib/aggro/subscription.rb
279
+ - lib/aggro/transform/boolean.rb
280
+ - lib/aggro/transform/email.rb
281
+ - lib/aggro/transform/id.rb
282
+ - lib/aggro/transform/integer.rb
283
+ - lib/aggro/transform/money.rb
284
+ - lib/aggro/transform/noop.rb
285
+ - lib/aggro/transform/string.rb
286
+ - lib/aggro/transform/time_interval.rb
115
287
  - lib/aggro/version.rb
288
+ - spec/lib/aggro/abstract_store_spec.rb
116
289
  - spec/lib/aggro/aggregate_ref_spec.rb
290
+ - spec/lib/aggro/aggregate_spec.rb
291
+ - spec/lib/aggro/channel_spec.rb
292
+ - spec/lib/aggro/client_spec.rb
293
+ - spec/lib/aggro/cluster_config_spec.rb
294
+ - spec/lib/aggro/command_spec.rb
295
+ - spec/lib/aggro/concurrent_actor_spec.rb
296
+ - spec/lib/aggro/event_bus_spec.rb
297
+ - spec/lib/aggro/event_serializer_spec.rb
298
+ - spec/lib/aggro/file_store/reader_spec.rb
299
+ - spec/lib/aggro/file_store/writer_spec.rb
300
+ - spec/lib/aggro/file_store_spec.rb
301
+ - spec/lib/aggro/handler/command_spec.rb
302
+ - spec/lib/aggro/handler/create_aggregate_spec.rb
303
+ - spec/lib/aggro/handler/get_events_handler_spec.rb
304
+ - spec/lib/aggro/handler/query_spec.rb
305
+ - spec/lib/aggro/handler/start_saga_spec.rb
306
+ - spec/lib/aggro/local_node_spec.rb
307
+ - spec/lib/aggro/locator_spec.rb
308
+ - spec/lib/aggro/message/ask_spec.rb
309
+ - spec/lib/aggro/message/command_spec.rb
310
+ - spec/lib/aggro/message/create_aggregate_spec.rb
311
+ - spec/lib/aggro/message/endpoint_spec.rb
312
+ - spec/lib/aggro/message/events_spec.rb
313
+ - spec/lib/aggro/message/get_events_spec.rb
314
+ - spec/lib/aggro/message/heartbeat_spec.rb
315
+ - spec/lib/aggro/message/invalid_target_spec.rb
316
+ - spec/lib/aggro/message/ok_spec.rb
317
+ - spec/lib/aggro/message/publisher_endpoint_inquiry_spec.rb
318
+ - spec/lib/aggro/message/query_spec.rb
319
+ - spec/lib/aggro/message/start_saga_spec.rb
320
+ - spec/lib/aggro/message/unhandled_operation_spec.rb
321
+ - spec/lib/aggro/message/unknown_operation_spec.rb
322
+ - spec/lib/aggro/message_parser_spec.rb
323
+ - spec/lib/aggro/message_router_spec.rb
324
+ - spec/lib/aggro/nanomsg_transport/socket_error_spec.rb
325
+ - spec/lib/aggro/nanomsg_transport_spec.rb
326
+ - spec/lib/aggro/node_list_spec.rb
327
+ - spec/lib/aggro/node_spec.rb
328
+ - spec/lib/aggro/projection_spec.rb
329
+ - spec/lib/aggro/query_spec.rb
330
+ - spec/lib/aggro/saga_runner_spec.rb
331
+ - spec/lib/aggro/saga_spec.rb
332
+ - spec/lib/aggro/saga_status_spec.rb
333
+ - spec/lib/aggro/server_spec.rb
334
+ - spec/lib/aggro/subscriber_spec.rb
335
+ - spec/lib/aggro/subscription_spec.rb
336
+ - spec/lib/aggro/transform/boolean_spec.rb
337
+ - spec/lib/aggro/transform/email_spec.rb
338
+ - spec/lib/aggro/transform/id_spec.rb
339
+ - spec/lib/aggro/transform/integer_spec.rb
340
+ - spec/lib/aggro/transform/money_spec.rb
341
+ - spec/lib/aggro/transform/string_spec.rb
342
+ - spec/lib/aggro/transform/time_interval_spec.rb
117
343
  - spec/lib/aggro_spec.rb
118
344
  - spec/spec_helper.rb
119
345
  homepage: ''
@@ -139,8 +365,62 @@ rubyforge_project:
139
365
  rubygems_version: 2.4.5
140
366
  signing_key:
141
367
  specification_version: 4
142
- summary: Distributed in-memory aggregates.
368
+ summary: Distributed in-memory event-store.
143
369
  test_files:
370
+ - spec/lib/aggro/abstract_store_spec.rb
144
371
  - spec/lib/aggro/aggregate_ref_spec.rb
372
+ - spec/lib/aggro/aggregate_spec.rb
373
+ - spec/lib/aggro/channel_spec.rb
374
+ - spec/lib/aggro/client_spec.rb
375
+ - spec/lib/aggro/cluster_config_spec.rb
376
+ - spec/lib/aggro/command_spec.rb
377
+ - spec/lib/aggro/concurrent_actor_spec.rb
378
+ - spec/lib/aggro/event_bus_spec.rb
379
+ - spec/lib/aggro/event_serializer_spec.rb
380
+ - spec/lib/aggro/file_store/reader_spec.rb
381
+ - spec/lib/aggro/file_store/writer_spec.rb
382
+ - spec/lib/aggro/file_store_spec.rb
383
+ - spec/lib/aggro/handler/command_spec.rb
384
+ - spec/lib/aggro/handler/create_aggregate_spec.rb
385
+ - spec/lib/aggro/handler/get_events_handler_spec.rb
386
+ - spec/lib/aggro/handler/query_spec.rb
387
+ - spec/lib/aggro/handler/start_saga_spec.rb
388
+ - spec/lib/aggro/local_node_spec.rb
389
+ - spec/lib/aggro/locator_spec.rb
390
+ - spec/lib/aggro/message/ask_spec.rb
391
+ - spec/lib/aggro/message/command_spec.rb
392
+ - spec/lib/aggro/message/create_aggregate_spec.rb
393
+ - spec/lib/aggro/message/endpoint_spec.rb
394
+ - spec/lib/aggro/message/events_spec.rb
395
+ - spec/lib/aggro/message/get_events_spec.rb
396
+ - spec/lib/aggro/message/heartbeat_spec.rb
397
+ - spec/lib/aggro/message/invalid_target_spec.rb
398
+ - spec/lib/aggro/message/ok_spec.rb
399
+ - spec/lib/aggro/message/publisher_endpoint_inquiry_spec.rb
400
+ - spec/lib/aggro/message/query_spec.rb
401
+ - spec/lib/aggro/message/start_saga_spec.rb
402
+ - spec/lib/aggro/message/unhandled_operation_spec.rb
403
+ - spec/lib/aggro/message/unknown_operation_spec.rb
404
+ - spec/lib/aggro/message_parser_spec.rb
405
+ - spec/lib/aggro/message_router_spec.rb
406
+ - spec/lib/aggro/nanomsg_transport/socket_error_spec.rb
407
+ - spec/lib/aggro/nanomsg_transport_spec.rb
408
+ - spec/lib/aggro/node_list_spec.rb
409
+ - spec/lib/aggro/node_spec.rb
410
+ - spec/lib/aggro/projection_spec.rb
411
+ - spec/lib/aggro/query_spec.rb
412
+ - spec/lib/aggro/saga_runner_spec.rb
413
+ - spec/lib/aggro/saga_spec.rb
414
+ - spec/lib/aggro/saga_status_spec.rb
415
+ - spec/lib/aggro/server_spec.rb
416
+ - spec/lib/aggro/subscriber_spec.rb
417
+ - spec/lib/aggro/subscription_spec.rb
418
+ - spec/lib/aggro/transform/boolean_spec.rb
419
+ - spec/lib/aggro/transform/email_spec.rb
420
+ - spec/lib/aggro/transform/id_spec.rb
421
+ - spec/lib/aggro/transform/integer_spec.rb
422
+ - spec/lib/aggro/transform/money_spec.rb
423
+ - spec/lib/aggro/transform/string_spec.rb
424
+ - spec/lib/aggro/transform/time_interval_spec.rb
145
425
  - spec/lib/aggro_spec.rb
146
426
  - spec/spec_helper.rb