aggro 0.0.1 → 0.0.2

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