deimos-ruby 1.8.0.pre.beta1 → 1.8.1.pre.beta4
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +8 -4
- data/CHANGELOG.md +42 -0
- data/Gemfile.lock +101 -73
- data/README.md +78 -1
- data/deimos-ruby.gemspec +2 -2
- data/lib/deimos.rb +4 -3
- data/lib/deimos/consume/batch_consumption.rb +2 -0
- data/lib/deimos/consume/message_consumption.rb +1 -0
- data/lib/deimos/instrumentation.rb +10 -5
- data/lib/deimos/kafka_topic_info.rb +21 -2
- data/lib/deimos/schema_backends/avro_base.rb +33 -1
- data/lib/deimos/schema_backends/avro_schema_coercer.rb +30 -9
- data/lib/deimos/schema_backends/base.rb +21 -2
- data/lib/deimos/utils/db_producer.rb +57 -19
- data/lib/deimos/utils/schema_controller_mixin.rb +111 -0
- data/lib/deimos/version.rb +1 -1
- data/lib/generators/deimos/active_record/templates/migration.rb.tt +28 -0
- data/lib/generators/deimos/active_record/templates/model.rb.tt +5 -0
- data/lib/generators/deimos/active_record_generator.rb +79 -0
- data/lib/generators/deimos/db_backend/templates/migration +1 -0
- data/lib/generators/deimos/db_backend/templates/rails3_migration +1 -0
- data/spec/batch_consumer_spec.rb +1 -0
- data/spec/generators/active_record_generator_spec.rb +56 -0
- data/spec/kafka_listener_spec.rb +54 -0
- data/spec/kafka_topic_info_spec.rb +39 -16
- data/spec/producer_spec.rb +36 -0
- data/spec/schemas/com/my-namespace/Generated.avsc +71 -0
- data/spec/schemas/com/my-namespace/MyNestedSchema.avsc +62 -0
- data/spec/schemas/com/my-namespace/request/Index.avsc +11 -0
- data/spec/schemas/com/my-namespace/request/UpdateRequest.avsc +11 -0
- data/spec/schemas/com/my-namespace/response/Index.avsc +11 -0
- data/spec/schemas/com/my-namespace/response/UpdateResponse.avsc +11 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/utils/db_producer_spec.rb +84 -10
- data/spec/utils/schema_controller_mixin_spec.rb +68 -0
- metadata +40 -24
@@ -0,0 +1,62 @@
|
|
1
|
+
{
|
2
|
+
"namespace": "com.my-namespace",
|
3
|
+
"name": "MyNestedSchema",
|
4
|
+
"type": "record",
|
5
|
+
"doc": "Test schema",
|
6
|
+
"fields": [
|
7
|
+
{
|
8
|
+
"name": "test_id",
|
9
|
+
"type": "string",
|
10
|
+
"doc": "test string"
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"name": "test_float",
|
14
|
+
"type": "float",
|
15
|
+
"doc": "test float"
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"name": "test_array",
|
19
|
+
"type": {
|
20
|
+
"type": "array",
|
21
|
+
"items": "string"
|
22
|
+
}
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"name": "some_nested_record",
|
26
|
+
"doc": "some nested record",
|
27
|
+
"type": {
|
28
|
+
"name": "MyNestedRecord",
|
29
|
+
"type": "record",
|
30
|
+
"fields": [
|
31
|
+
{
|
32
|
+
"name": "some_int",
|
33
|
+
"type": "int",
|
34
|
+
"doc": "some int"
|
35
|
+
},
|
36
|
+
{
|
37
|
+
"name": "some_float",
|
38
|
+
"type": "float",
|
39
|
+
"doc": "some float"
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"name": "some_string",
|
43
|
+
"type": "string",
|
44
|
+
"doc": "some string"
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"name": "some_optional_int",
|
48
|
+
"type": [ "null", "int" ],
|
49
|
+
"doc": "some optional int",
|
50
|
+
"default": null
|
51
|
+
}
|
52
|
+
]
|
53
|
+
}
|
54
|
+
},
|
55
|
+
{
|
56
|
+
"name": "some_optional_record",
|
57
|
+
"doc": "some optional record",
|
58
|
+
"type": [ "null", "MyNestedRecord" ],
|
59
|
+
"default": null
|
60
|
+
}
|
61
|
+
]
|
62
|
+
}
|
data/spec/spec_helper.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
|
4
4
|
require 'active_record'
|
5
|
+
require 'action_controller/railtie'
|
5
6
|
require 'database_cleaner'
|
6
7
|
require 'deimos'
|
7
8
|
require 'deimos/metrics/mock'
|
@@ -11,6 +12,11 @@ require 'active_support/testing/time_helpers'
|
|
11
12
|
require 'activerecord-import'
|
12
13
|
require 'handlers/my_batch_consumer'
|
13
14
|
require 'handlers/my_consumer'
|
15
|
+
require 'rspec/rails'
|
16
|
+
|
17
|
+
class DeimosApp < Rails::Application
|
18
|
+
end
|
19
|
+
DeimosApp.initialize!
|
14
20
|
|
15
21
|
# Helpers for Executor/DbProducer
|
16
22
|
module TestRunners
|
@@ -32,6 +38,7 @@ module TestRunners
|
|
32
38
|
# Test runner
|
33
39
|
class TestRunner
|
34
40
|
attr_accessor :id, :started, :stopped, :should_error
|
41
|
+
|
35
42
|
# :nodoc:
|
36
43
|
def initialize(id=nil)
|
37
44
|
@id = id
|
@@ -16,11 +16,13 @@ each_db_config(Deimos::Utils::DbProducer) do
|
|
16
16
|
|
17
17
|
before(:each) do
|
18
18
|
stub_const('Deimos::Utils::DbProducer::BATCH_SIZE', 2)
|
19
|
+
stub_const('Deimos::Utils::DbProducer::DELETE_BATCH_SIZE', 1)
|
19
20
|
end
|
20
21
|
|
21
22
|
specify '#process_next_messages' do
|
22
23
|
expect(producer).to receive(:retrieve_topics).and_return(%w(topic1 topic2))
|
23
24
|
expect(producer).to receive(:process_topic).twice
|
25
|
+
expect(Deimos::KafkaTopicInfo).to receive(:ping_empty_topics).with(%w(topic1 topic2))
|
24
26
|
expect(producer).to receive(:sleep).with(0.5)
|
25
27
|
producer.process_next_messages
|
26
28
|
end
|
@@ -40,6 +42,9 @@ each_db_config(Deimos::Utils::DbProducer) do
|
|
40
42
|
Deimos::KafkaMessage.create!(topic: 'topic1',
|
41
43
|
message: 'blah',
|
42
44
|
key: "key#{i}")
|
45
|
+
Deimos::KafkaMessage.create!(topic: 'topic2',
|
46
|
+
message: 'blah',
|
47
|
+
key: "key#{i}")
|
43
48
|
end
|
44
49
|
stub_const('Deimos::Utils::DbProducer::BATCH_SIZE', 5)
|
45
50
|
producer.current_topic = 'topic1'
|
@@ -280,6 +285,12 @@ each_db_config(Deimos::Utils::DbProducer) do
|
|
280
285
|
message: "mess#{i}",
|
281
286
|
partition_key: "key#{i}"
|
282
287
|
)
|
288
|
+
Deimos::KafkaMessage.create!(
|
289
|
+
id: i,
|
290
|
+
topic: 'my-topic2',
|
291
|
+
message: "mess#{i}",
|
292
|
+
partition_key: "key#{i}"
|
293
|
+
)
|
283
294
|
end
|
284
295
|
|
285
296
|
expect(Deimos::KafkaTopicInfo).to receive(:lock).
|
@@ -288,9 +299,60 @@ each_db_config(Deimos::Utils::DbProducer) do
|
|
288
299
|
expect(producer).to receive(:retrieve_messages).and_return(messages)
|
289
300
|
expect(Deimos::KafkaTopicInfo).to receive(:register_error)
|
290
301
|
|
302
|
+
expect(Deimos::KafkaMessage.count).to eq(8)
|
303
|
+
producer.process_topic('my-topic')
|
291
304
|
expect(Deimos::KafkaMessage.count).to eq(4)
|
305
|
+
end
|
306
|
+
|
307
|
+
it 'should retry deletes and not re-publish' do
|
308
|
+
messages = (1..4).map do |i|
|
309
|
+
Deimos::KafkaMessage.create!(
|
310
|
+
id: i,
|
311
|
+
topic: 'my-topic',
|
312
|
+
message: "mess#{i}",
|
313
|
+
partition_key: "key#{i}"
|
314
|
+
)
|
315
|
+
end
|
316
|
+
(5..8).each do |i|
|
317
|
+
Deimos::KafkaMessage.create!(
|
318
|
+
id: i,
|
319
|
+
topic: 'my-topic2',
|
320
|
+
message: "mess#{i}",
|
321
|
+
partition_key: "key#{i}"
|
322
|
+
)
|
323
|
+
end
|
324
|
+
|
325
|
+
raise_error = true
|
326
|
+
expect(Deimos::KafkaMessage).to receive(:where).exactly(5).times.and_wrap_original do |m, *args|
|
327
|
+
if raise_error
|
328
|
+
raise_error = false
|
329
|
+
raise 'Lock wait timeout'
|
330
|
+
end
|
331
|
+
m.call(*args)
|
332
|
+
end
|
333
|
+
|
334
|
+
expect(Deimos::KafkaTopicInfo).to receive(:lock).
|
335
|
+
with('my-topic', 'abc').and_return(true)
|
336
|
+
expect(producer).to receive(:retrieve_messages).ordered.and_return(messages)
|
337
|
+
expect(producer).to receive(:retrieve_messages).ordered.and_return([])
|
338
|
+
expect(phobos_producer).to receive(:publish_list).once.with(messages.map(&:phobos_message))
|
339
|
+
|
340
|
+
expect(Deimos::KafkaMessage.count).to eq(8)
|
292
341
|
producer.process_topic('my-topic')
|
293
|
-
expect(Deimos::KafkaMessage.count).to eq(
|
342
|
+
expect(Deimos::KafkaMessage.count).to eq(4)
|
343
|
+
end
|
344
|
+
|
345
|
+
it 'should re-raise misc errors on delete' do
|
346
|
+
messages = (1..3).map do |i|
|
347
|
+
Deimos::KafkaMessage.create!(
|
348
|
+
id: i,
|
349
|
+
topic: 'my-topic',
|
350
|
+
message: "mess#{i}",
|
351
|
+
partition_key: "key#{i}"
|
352
|
+
)
|
353
|
+
end
|
354
|
+
expect(Deimos::KafkaMessage).to receive(:where).once.and_raise('OH NOES')
|
355
|
+
expect { producer.delete_messages(messages) }.to raise_exception('OH NOES')
|
294
356
|
end
|
295
357
|
|
296
358
|
end
|
@@ -309,21 +371,34 @@ each_db_config(Deimos::Utils::DbProducer) do
|
|
309
371
|
Deimos::KafkaMessage.create!(topic: "topic#{i}", message: nil,
|
310
372
|
created_at: (1 + i).minute.ago)
|
311
373
|
end
|
374
|
+
Deimos::KafkaTopicInfo.create!(topic: 'topic1',
|
375
|
+
last_processed_at: 6.minutes.ago)
|
376
|
+
Deimos::KafkaTopicInfo.create!(topic: 'topic2',
|
377
|
+
last_processed_at: 3.minutes.ago)
|
378
|
+
Deimos::KafkaTopicInfo.create!(topic: 'topic3',
|
379
|
+
last_processed_at: 5.minutes.ago)
|
312
380
|
allow(Deimos.config.metrics).to receive(:gauge)
|
313
381
|
producer.send_pending_metrics
|
314
|
-
expect(Deimos.config.metrics).to have_received(:gauge).
|
382
|
+
expect(Deimos.config.metrics).to have_received(:gauge).exactly(6).times
|
383
|
+
# topic1 has the earliest message 4 minutes ago and last processed 6
|
384
|
+
# minutes ago, so the most amount of time we've seen nothing is 4 minutes
|
315
385
|
expect(Deimos.config.metrics).to have_received(:gauge).
|
316
386
|
with('pending_db_messages_max_wait', 4.minutes.to_i, tags: ['topic:topic1'])
|
387
|
+
# topic2 has earliest message 5 minutes ago and last processed 3 minutes
|
388
|
+
# ago, so we should give it 3 minutes
|
389
|
+
expect(Deimos.config.metrics).to have_received(:gauge).
|
390
|
+
with('pending_db_messages_max_wait', 3.minutes.to_i, tags: ['topic:topic2'])
|
391
|
+
# topic3 has no messages, so should get 0
|
317
392
|
expect(Deimos.config.metrics).to have_received(:gauge).
|
318
|
-
with('pending_db_messages_max_wait',
|
393
|
+
with('pending_db_messages_max_wait', 0, tags: ['topic:topic3'])
|
394
|
+
expect(Deimos.config.metrics).to have_received(:gauge).
|
395
|
+
with('pending_db_messages_count', 3, tags: ['topic:topic1'])
|
396
|
+
expect(Deimos.config.metrics).to have_received(:gauge).
|
397
|
+
with('pending_db_messages_count', 3, tags: ['topic:topic2'])
|
398
|
+
expect(Deimos.config.metrics).to have_received(:gauge).
|
399
|
+
with('pending_db_messages_count', 0, tags: ['topic:topic3'])
|
319
400
|
end
|
320
401
|
end
|
321
|
-
|
322
|
-
it 'should send 0 if no messages' do
|
323
|
-
expect(Deimos.config.metrics).to receive(:gauge).
|
324
|
-
with('pending_db_messages_max_wait', 0)
|
325
|
-
producer.send_pending_metrics
|
326
|
-
end
|
327
402
|
end
|
328
403
|
|
329
404
|
example 'Full integration test' do
|
@@ -403,5 +478,4 @@ each_db_config(Deimos::Utils::DbProducer) do
|
|
403
478
|
}
|
404
479
|
])
|
405
480
|
end
|
406
|
-
|
407
481
|
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'deimos/utils/schema_controller_mixin'
|
4
|
+
require 'deimos/schema_backends/avro_local'
|
5
|
+
|
6
|
+
RSpec.describe Deimos::Utils::SchemaControllerMixin, type: :controller do
|
7
|
+
|
8
|
+
before(:each) do
|
9
|
+
Deimos.configure do
|
10
|
+
schema.backend(:avro_local)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
controller(ActionController::Base) do
|
15
|
+
include Deimos::Utils::SchemaControllerMixin # rubocop:disable RSpec/DescribedClass
|
16
|
+
|
17
|
+
request_namespace 'com.my-namespace.request'
|
18
|
+
response_namespace 'com.my-namespace.response'
|
19
|
+
schemas :index, :show
|
20
|
+
schemas :update, request: 'UpdateRequest', response: 'UpdateResponse'
|
21
|
+
|
22
|
+
# :nodoc:
|
23
|
+
def index
|
24
|
+
render_schema({ 'response_id' => payload[:request_id] + ' mom' })
|
25
|
+
end
|
26
|
+
|
27
|
+
# :nodoc:
|
28
|
+
def show
|
29
|
+
render_schema({ 'response_id' => payload[:request_id] + ' dad' })
|
30
|
+
end
|
31
|
+
|
32
|
+
# :nodoc:
|
33
|
+
def update
|
34
|
+
render_schema({ 'update_response_id' => payload[:update_request_id] + ' sis' })
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should render the correct response for index' do
|
39
|
+
request_backend = Deimos.schema_backend(schema: 'Index',
|
40
|
+
namespace: 'com.my-namespace.request')
|
41
|
+
response_backend = Deimos.schema_backend(schema: 'Index',
|
42
|
+
namespace: 'com.my-namespace.response')
|
43
|
+
request.content_type = 'avro/binary'
|
44
|
+
get :index, body: request_backend.encode({ 'request_id' => 'hi' })
|
45
|
+
expect(response_backend.decode(response.body)).to eq({ 'response_id' => 'hi mom' })
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should render the correct response for show' do
|
49
|
+
request_backend = Deimos.schema_backend(schema: 'Index',
|
50
|
+
namespace: 'com.my-namespace.request')
|
51
|
+
response_backend = Deimos.schema_backend(schema: 'Index',
|
52
|
+
namespace: 'com.my-namespace.response')
|
53
|
+
request.content_type = 'avro/binary'
|
54
|
+
get :show, params: { id: 1 }, body: request_backend.encode({ 'request_id' => 'hi' })
|
55
|
+
expect(response_backend.decode(response.body)).to eq({ 'response_id' => 'hi dad' })
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should render the correct response for update' do
|
59
|
+
request_backend = Deimos.schema_backend(schema: 'UpdateRequest',
|
60
|
+
namespace: 'com.my-namespace.request')
|
61
|
+
response_backend = Deimos.schema_backend(schema: 'UpdateResponse',
|
62
|
+
namespace: 'com.my-namespace.response')
|
63
|
+
request.content_type = 'avro/binary'
|
64
|
+
post :update, params: { id: 1 }, body: request_backend.encode({ 'update_request_id' => 'hi' })
|
65
|
+
expect(response_backend.decode(response.body)).to eq({ 'update_response_id' => 'hi sis' })
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deimos-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.1.pre.beta4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Orner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: avro_turf
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.0.1
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: activerecord
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '5.2'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '5.2'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: activerecord-import
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -226,20 +212,14 @@ dependencies:
|
|
226
212
|
requirements:
|
227
213
|
- - "~>"
|
228
214
|
- !ruby/object:Gem::Version
|
229
|
-
version: '
|
230
|
-
- - ">="
|
231
|
-
- !ruby/object:Gem::Version
|
232
|
-
version: 5.2.4.2
|
215
|
+
version: '6'
|
233
216
|
type: :development
|
234
217
|
prerelease: false
|
235
218
|
version_requirements: !ruby/object:Gem::Requirement
|
236
219
|
requirements:
|
237
220
|
- - "~>"
|
238
221
|
- !ruby/object:Gem::Version
|
239
|
-
version: '
|
240
|
-
- - ">="
|
241
|
-
- !ruby/object:Gem::Version
|
242
|
-
version: 5.2.4.2
|
222
|
+
version: '6'
|
243
223
|
- !ruby/object:Gem::Dependency
|
244
224
|
name: rake
|
245
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -282,6 +262,20 @@ dependencies:
|
|
282
262
|
- - "~>"
|
283
263
|
- !ruby/object:Gem::Version
|
284
264
|
version: '0.3'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: rspec-rails
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - "~>"
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '4'
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - "~>"
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '4'
|
285
279
|
- !ruby/object:Gem::Dependency
|
286
280
|
name: rubocop
|
287
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -405,7 +399,11 @@ files:
|
|
405
399
|
- lib/deimos/utils/deadlock_retry.rb
|
406
400
|
- lib/deimos/utils/inline_consumer.rb
|
407
401
|
- lib/deimos/utils/lag_reporter.rb
|
402
|
+
- lib/deimos/utils/schema_controller_mixin.rb
|
408
403
|
- lib/deimos/version.rb
|
404
|
+
- lib/generators/deimos/active_record/templates/migration.rb.tt
|
405
|
+
- lib/generators/deimos/active_record/templates/model.rb.tt
|
406
|
+
- lib/generators/deimos/active_record_generator.rb
|
409
407
|
- lib/generators/deimos/db_backend/templates/migration
|
410
408
|
- lib/generators/deimos/db_backend/templates/rails3_migration
|
411
409
|
- lib/generators/deimos/db_backend_generator.rb
|
@@ -427,8 +425,10 @@ files:
|
|
427
425
|
- spec/config/configuration_spec.rb
|
428
426
|
- spec/consumer_spec.rb
|
429
427
|
- spec/deimos_spec.rb
|
428
|
+
- spec/generators/active_record_generator_spec.rb
|
430
429
|
- spec/handlers/my_batch_consumer.rb
|
431
430
|
- spec/handlers/my_consumer.rb
|
431
|
+
- spec/kafka_listener_spec.rb
|
432
432
|
- spec/kafka_source_spec.rb
|
433
433
|
- spec/kafka_topic_info_spec.rb
|
434
434
|
- spec/message_spec.rb
|
@@ -441,6 +441,8 @@ files:
|
|
441
441
|
- spec/schema_backends/avro_schema_registry_spec.rb
|
442
442
|
- spec/schema_backends/avro_validation_spec.rb
|
443
443
|
- spec/schema_backends/base_spec.rb
|
444
|
+
- spec/schemas/com/my-namespace/Generated.avsc
|
445
|
+
- spec/schemas/com/my-namespace/MyNestedSchema.avsc
|
444
446
|
- spec/schemas/com/my-namespace/MySchema-key.avsc
|
445
447
|
- spec/schemas/com/my-namespace/MySchema.avsc
|
446
448
|
- spec/schemas/com/my-namespace/MySchemaCompound-key.avsc
|
@@ -451,12 +453,17 @@ files:
|
|
451
453
|
- spec/schemas/com/my-namespace/Wibble.avsc
|
452
454
|
- spec/schemas/com/my-namespace/Widget.avsc
|
453
455
|
- spec/schemas/com/my-namespace/WidgetTheSecond.avsc
|
456
|
+
- spec/schemas/com/my-namespace/request/Index.avsc
|
457
|
+
- spec/schemas/com/my-namespace/request/UpdateRequest.avsc
|
458
|
+
- spec/schemas/com/my-namespace/response/Index.avsc
|
459
|
+
- spec/schemas/com/my-namespace/response/UpdateResponse.avsc
|
454
460
|
- spec/spec_helper.rb
|
455
461
|
- spec/utils/db_poller_spec.rb
|
456
462
|
- spec/utils/db_producer_spec.rb
|
457
463
|
- spec/utils/deadlock_retry_spec.rb
|
458
464
|
- spec/utils/lag_reporter_spec.rb
|
459
465
|
- spec/utils/platform_schema_validation_spec.rb
|
466
|
+
- spec/utils/schema_controller_mixin_spec.rb
|
460
467
|
- support/deimos-solo.png
|
461
468
|
- support/deimos-with-name-next.png
|
462
469
|
- support/deimos-with-name.png
|
@@ -499,8 +506,10 @@ test_files:
|
|
499
506
|
- spec/config/configuration_spec.rb
|
500
507
|
- spec/consumer_spec.rb
|
501
508
|
- spec/deimos_spec.rb
|
509
|
+
- spec/generators/active_record_generator_spec.rb
|
502
510
|
- spec/handlers/my_batch_consumer.rb
|
503
511
|
- spec/handlers/my_consumer.rb
|
512
|
+
- spec/kafka_listener_spec.rb
|
504
513
|
- spec/kafka_source_spec.rb
|
505
514
|
- spec/kafka_topic_info_spec.rb
|
506
515
|
- spec/message_spec.rb
|
@@ -513,6 +522,8 @@ test_files:
|
|
513
522
|
- spec/schema_backends/avro_schema_registry_spec.rb
|
514
523
|
- spec/schema_backends/avro_validation_spec.rb
|
515
524
|
- spec/schema_backends/base_spec.rb
|
525
|
+
- spec/schemas/com/my-namespace/Generated.avsc
|
526
|
+
- spec/schemas/com/my-namespace/MyNestedSchema.avsc
|
516
527
|
- spec/schemas/com/my-namespace/MySchema-key.avsc
|
517
528
|
- spec/schemas/com/my-namespace/MySchema.avsc
|
518
529
|
- spec/schemas/com/my-namespace/MySchemaCompound-key.avsc
|
@@ -523,9 +534,14 @@ test_files:
|
|
523
534
|
- spec/schemas/com/my-namespace/Wibble.avsc
|
524
535
|
- spec/schemas/com/my-namespace/Widget.avsc
|
525
536
|
- spec/schemas/com/my-namespace/WidgetTheSecond.avsc
|
537
|
+
- spec/schemas/com/my-namespace/request/Index.avsc
|
538
|
+
- spec/schemas/com/my-namespace/request/UpdateRequest.avsc
|
539
|
+
- spec/schemas/com/my-namespace/response/Index.avsc
|
540
|
+
- spec/schemas/com/my-namespace/response/UpdateResponse.avsc
|
526
541
|
- spec/spec_helper.rb
|
527
542
|
- spec/utils/db_poller_spec.rb
|
528
543
|
- spec/utils/db_producer_spec.rb
|
529
544
|
- spec/utils/deadlock_retry_spec.rb
|
530
545
|
- spec/utils/lag_reporter_spec.rb
|
531
546
|
- spec/utils/platform_schema_validation_spec.rb
|
547
|
+
- spec/utils/schema_controller_mixin_spec.rb
|