flipp-ruby-kafka-temp-fork 0.0.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 (43) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +97 -0
  3. data/.dockerignore +2 -0
  4. data/.gitignore +41 -0
  5. data/.gitmodules +0 -0
  6. data/.rspec +1 -0
  7. data/.rubocop.yml +56 -0
  8. data/.ruby-gemset +1 -0
  9. data/.ruby-version +1 -0
  10. data/CHANGELOG.md +466 -0
  11. data/Dockerfile +21 -0
  12. data/Gemfile +6 -0
  13. data/Gemfile.lock +207 -0
  14. data/Guardfile +22 -0
  15. data/README.md +102 -0
  16. data/Rakefile +13 -0
  17. data/bin/flipp_ruby_kafka +4 -0
  18. data/deploy/artifactory.sh +8 -0
  19. data/deploy/config.json +4 -0
  20. data/docker-compose.yml +89 -0
  21. data/docs/UPGRADE_1.0.md +39 -0
  22. data/flipp-ruby-kafka.gemspec +34 -0
  23. data/kafkateria/factories/my_schema.rb +16 -0
  24. data/kafkateria/factories/my_schema_with_id.rb +16 -0
  25. data/lib/flipp_ruby_kafka.rb +73 -0
  26. data/lib/flipp_ruby_kafka/flipp_datadog_metrics.rb +15 -0
  27. data/lib/flipp_ruby_kafka/test_helpers.rb +59 -0
  28. data/lib/flipp_ruby_kafka/utils/platform_schema_validation.rb +77 -0
  29. data/lib/flipp_ruby_kafka/utils/platform_topic_validation.rb +41 -0
  30. data/lib/flipp_ruby_kafka/version.rb +5 -0
  31. data/lib/generators/flipp_ruby_kafka/schema_validation/schema_validation_generator.rb +23 -0
  32. data/lib/generators/flipp_ruby_kafka/topic_validation/topic_validation_generator.rb +22 -0
  33. data/spec/flipp_ruby_kafka_spec.rb +8 -0
  34. data/spec/integration/send_kafka_spec.rb +63 -0
  35. data/spec/phobos.yml +73 -0
  36. data/spec/schemas/com/my-namespace/MySchema-key.avsc +13 -0
  37. data/spec/schemas/com/my-namespace/MySchema.avsc +18 -0
  38. data/spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc +33 -0
  39. data/spec/schemas/com/my-namespace/MySchemaWithId.avsc +28 -0
  40. data/spec/spec_helper.rb +39 -0
  41. data/spec/utils/platform_schema_validation_spec.rb +54 -0
  42. data/spec/utils/platform_topic_validation_spec.rb +50 -0
  43. metadata +262 -0
@@ -0,0 +1,63 @@
1
+ require 'net/http'
2
+
3
+ # frozen_string_literal: true
4
+
5
+ RSpec.describe 'integration spec', integration: true do # rubocop:disable RSpec/DescribeClass
6
+ let(:producer_class) do
7
+ Class.new(FlippRubyKafka::Producer) do
8
+ schema 'MySchema'
9
+ namespace 'com.my-namespace'
10
+ topic 'my_consume_topic'
11
+ key_config field: 'test_id'
12
+ end
13
+ end
14
+
15
+ let(:producer_class_with_id) do
16
+ Class.new(FlippRubyKafka::Producer) do
17
+ schema 'MySchemaWithId'
18
+ namespace 'com.my-namespace'
19
+ topic 'my_consume_topic_with_id'
20
+ key_config schema: 'MySchema-key'
21
+ end
22
+ end
23
+
24
+ prepend_before(:each) do
25
+ kafkateria_delete_topic('my_consume_topic')
26
+ end
27
+
28
+ it 'should publish a keyed Kafka msg' do
29
+ payload = { 'test_id' => 'foo', 'some_int' => 5 }
30
+ producer_class.publish(payload)
31
+ sleep(1)
32
+ messages = kafkateria_get_messages(topic: 'my_consume_topic')
33
+ puts messages
34
+ expect(messages.size).to eq(1)
35
+ expect(messages[0][:payload]).to eq(payload)
36
+ end
37
+
38
+ it 'should send original and updated kafka messages for non keyed Kafka msg' do
39
+ payload = { 'test_id' => 'foobar', 'some_int' => 6 }
40
+ payload_update = { 'test_id' => 'foobar', 'some_int' => 7 }
41
+ producer_class.publish(payload)
42
+ producer_class.publish(payload_update)
43
+ sleep(1)
44
+ messages = kafkateria_get_messages(topic: 'my_consume_topic')
45
+ puts messages.size
46
+ expect(messages.size).to eq(2)
47
+ expect(messages[0][:payload]).to eq(payload)
48
+ expect(messages[1][:payload]).to eq(payload_update)
49
+ end
50
+
51
+ it 'should send only updated kafka messages for keyed Kafka msg' do
52
+ payload = { 'test_id' => 'foo', 'some_int' => 6, :payload_key => { 'test_id' => 'foo_key' } }
53
+ payload_update = { 'test_id' => 'foobar', 'some_int' => 7, :payload_key => { 'test_id' => 'foo_key' } }
54
+ producer_class_with_id.publish(payload)
55
+ producer_class_with_id.publish(payload_update)
56
+ sleep(1)
57
+ messages = kafkateria_get_messages(topic: 'my_consume_topic_with_id')
58
+ puts messages.size
59
+ expect(messages.size).to eq(1)
60
+ expect(messages[0][:payload]).to eq(payload_update)
61
+ end
62
+
63
+ end
data/spec/phobos.yml ADDED
@@ -0,0 +1,73 @@
1
+ logger:
2
+ # Optional log file, set to false or remove to disable it
3
+ file: log/phobos.log
4
+ # Optional output format for stdout, default is false (human readable).
5
+ # Set to true to enable json output.
6
+ stdout_json: false
7
+ level: debug
8
+ # Comment the block to disable ruby-kafka logs
9
+ ruby_kafka:
10
+ level: debug
11
+
12
+ kafka:
13
+ # identifier for this application
14
+ client_id: phobos
15
+ # timeout setting for connecting to brokers
16
+ connect_timeout: 15
17
+ # timeout setting for socket connections
18
+ socket_timeout: 15
19
+
20
+ producer:
21
+ # number of seconds a broker can wait for replicas to acknowledge
22
+ # a write before responding with a timeout
23
+ ack_timeout: 5
24
+ # number of replicas that must acknowledge a write, or `:all`
25
+ # if all in-sync replicas must acknowledge
26
+ required_acks: :all
27
+ # number of retries that should be attempted before giving up sending
28
+ # messages to the cluster. Does not include the original attempt
29
+ max_retries: 2
30
+ # number of seconds to wait between retries
31
+ retry_backoff: 1
32
+ # number of messages allowed in the buffer before new writes will
33
+ # raise {BufferOverflow} exceptions
34
+ max_buffer_size: 10000
35
+ # maximum size of the buffer in bytes. Attempting to produce messages
36
+ # when the buffer reaches this size will result in {BufferOverflow} being raised
37
+ max_buffer_bytesize: 10000000
38
+ # name of the compression codec to use, or nil if no compression should be performed.
39
+ # Valid codecs: `:snappy` and `:gzip`
40
+ compression_codec:
41
+ # number of messages that needs to be in a message set before it should be compressed.
42
+ # Note that message sets are per-partition rather than per-topic or per-producer
43
+ compression_threshold: 1
44
+ # maximum number of messages allowed in the queue. Only used for async_producer
45
+ max_queue_size: 10000
46
+ # if greater than zero, the number of buffered messages that will automatically
47
+ # trigger a delivery. Only used for async_producer
48
+ delivery_threshold: 0
49
+ # if greater than zero, the number of seconds between automatic message
50
+ # deliveries. Only used for async_producer
51
+ delivery_interval: 0
52
+
53
+ consumer:
54
+ # number of seconds after which, if a client hasn't contacted the Kafka cluster,
55
+ # it will be kicked out of the group
56
+ session_timeout: 300
57
+ # interval between offset commits, in seconds
58
+ offset_commit_interval: 10
59
+ # number of messages that can be processed before their offsets are committed.
60
+ # If zero, offset commits are not triggered by message processing
61
+ offset_commit_threshold: 0
62
+ # interval between heartbeats; must be less than the session window
63
+ heartbeat_interval: 10
64
+
65
+ backoff:
66
+ min_ms: 1000
67
+ max_ms: 60000
68
+
69
+ listeners:
70
+ - handler: ConsumerTest::MyConsumer
71
+ topic: my_consume_topic
72
+ group_id: my_group_id
73
+ max_bytes_per_partition: 524288 # 512 KB
@@ -0,0 +1,13 @@
1
+ {
2
+ "namespace": "com.my-namespace",
3
+ "name": "MySchema-key",
4
+ "type": "record",
5
+ "doc": "Test schema",
6
+ "fields": [
7
+ {
8
+ "name": "test_id",
9
+ "type": "string",
10
+ "doc": "test string"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "namespace": "com.my-namespace",
3
+ "name": "MySchema",
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": "some_int",
14
+ "type": "int",
15
+ "doc": "test int"
16
+ }
17
+ ]
18
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "namespace": "com.my-namespace",
3
+ "name": "MySchemaWithDateTimes",
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": "updated_at",
14
+ "type": ["int", "null"]
15
+ },
16
+ {
17
+ "name": "some_int",
18
+ "type": ["null", "int"],
19
+ "doc": "test int"
20
+ },
21
+ {
22
+ "name": "some_datetime_int",
23
+ "type": ["null", "int"],
24
+ "doc": "test datetime"
25
+ },
26
+ {
27
+ "name": "timestamp",
28
+ "type": "string",
29
+ "doc": "ISO timestamp",
30
+ "default": ""
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "namespace": "com.my-namespace",
3
+ "name": "MySchemaWithId",
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": "some_int",
14
+ "type": "int",
15
+ "doc": "test int"
16
+ },
17
+ {
18
+ "name": "message_id",
19
+ "type": "string",
20
+ "doc": "UUID"
21
+ },
22
+ {
23
+ "name": "timestamp",
24
+ "type": "string",
25
+ "doc": "timestamp"
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
4
+ require 'flipp_ruby_kafka'
5
+ require 'flipp_ruby_kafka/test_helpers'
6
+ require 'deimos/test_helpers'
7
+ require 'deimos/metrics/mock'
8
+ require 'deimos/tracing/mock'
9
+ require 'active_support/testing/time_helpers'
10
+
11
+ RSpec.configure do |config|
12
+ config.full_backtrace = true
13
+
14
+ # true by default for RSpec 4.0
15
+ config.shared_context_metadata_behavior = :apply_to_host_groups
16
+
17
+ config.include FlippRubyKafka::TestHelpers
18
+ config.include ActiveSupport::Testing::TimeHelpers
19
+ config.before(:suite) do
20
+ Time.zone = 'EST'
21
+ end
22
+
23
+ config.before(:each) do |ex|
24
+ stub_producers_and_consumers! unless ex.metadata[:integration]
25
+
26
+ FlippRubyKafka.configure do
27
+ logger ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
28
+ metrics Deimos::Metrics::Mock
29
+ tracer Deimos::Tracing::Mock
30
+ schema.path(File.join(File.expand_path(__dir__), 'schemas'))
31
+ kafkateria_url ENV['KAFKATERIA_URL'] || 'http://localhost:3000'
32
+ end
33
+ end
34
+
35
+ config.after(:each) do
36
+ FlippRubyKafka.config.reset!
37
+ end
38
+
39
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'flipp_ruby_kafka/utils/platform_schema_validation'
4
+
5
+ describe(FlippRubyKafka::Utils::PlatformSchemaValidation) do
6
+ prepend_before(:each) do
7
+ # :nodoc:
8
+ consumer_class = Class.new(FlippRubyKafka::Consumer) do
9
+ # :nodoc:
10
+ def consume
11
+ end
12
+ end
13
+ stub_const('ConsumerTest::MyConsumer', consumer_class)
14
+
15
+ producer_class = Class.new(FlippRubyKafka::Producer)
16
+ stub_const('MyProducer', producer_class)
17
+ end
18
+
19
+ before(:each) do
20
+
21
+ FlippRubyKafka.configure do
22
+ producer do
23
+ class_name 'MyProducer'
24
+ schema 'MySchema'
25
+ namespace 'com.my-namespace'
26
+ topic 'my-topic'
27
+ key_config field: 'test_id'
28
+ end
29
+ consumer do
30
+ class_name 'ConsumerTest::MyConsumer'
31
+ schema 'MySchemaWithDateTimes'
32
+ namespace 'com.my-namespace'
33
+ key_config plain: true
34
+ topic 'my_consume_topic'
35
+ group_id 'my-group-id'
36
+ end
37
+ end
38
+
39
+ end
40
+
41
+ specify '#generate_config' do
42
+ base_path = File.join(File.expand_path('..', __dir__), 'schemas')
43
+ validator = described_class.new(base_path: base_path)
44
+ config = validator.generate_config
45
+ expect(config[:environments][:default]).to include(
46
+ 'file' => "#{base_path}/com/my-namespace/MySchema.avsc",
47
+ 'subject' => 'my-topic-value'
48
+ )
49
+ expect(config[:environments][:default]).to include(
50
+ 'file' => "#{base_path}/com/my-namespace/MySchemaWithDateTimes.avsc",
51
+ 'subject' => 'my_consume_topic-value'
52
+ )
53
+ end
54
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'flipp_ruby_kafka/utils/platform_topic_validation'
4
+
5
+ describe(FlippRubyKafka::Utils::PlatformTopicValidation) do
6
+ prepend_before(:each) do
7
+ # :nodoc:
8
+ consumer_class = Class.new(FlippRubyKafka::Consumer) do
9
+ # :nodoc:
10
+ def consume
11
+ end
12
+ end
13
+ stub_const('ConsumerTest::MyConsumer', consumer_class)
14
+
15
+ producer_class = Class.new(FlippRubyKafka::Producer)
16
+ stub_const('MyProducer', producer_class)
17
+ end
18
+
19
+ before(:each) do
20
+
21
+ FlippRubyKafka.configure do
22
+ producer do
23
+ class_name 'MyProducer'
24
+ schema 'MySchema'
25
+ namespace 'com.my-namespace'
26
+ topic 'my-topic'
27
+ key_config field: 'test_id'
28
+ end
29
+ consumer do
30
+ class_name 'ConsumerTest::MyConsumer'
31
+ schema 'MySchemaWithDateTimes'
32
+ namespace 'com.my-namespace'
33
+ key_config plain: true
34
+ topic 'my_consume_topic'
35
+ group_id 'my-group-id'
36
+ end
37
+ end
38
+
39
+ end
40
+
41
+ specify '#generate_config' do
42
+ config = described_class.generate_config('my-service')
43
+ expect(config).
44
+ to eq(
45
+ acls: [{ role: 'producer', topic: 'my-topic' },
46
+ { role: 'consumer', topic: 'my_consume_topic' }],
47
+ service: 'my-service'
48
+ )
49
+ end
50
+ end
metadata ADDED
@@ -0,0 +1,262 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flipp-ruby-kafka-temp-fork
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Orner
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-08-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ddtrace
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0.11'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: deimos-temp-fork
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: flipp-ruby-dogstatsd
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: railties
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: flipp_ruby_style
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard-rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '4'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '4'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec_junit_formatter
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.3'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.3'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.58'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.58'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop-rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.27'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.27'
181
+ description: Write a longer description. Optional.
182
+ email:
183
+ - daniel.orner@wishabi.com
184
+ executables:
185
+ - flipp_ruby_kafka
186
+ extensions: []
187
+ extra_rdoc_files: []
188
+ files:
189
+ - ".circleci/config.yml"
190
+ - ".dockerignore"
191
+ - ".gitignore"
192
+ - ".gitmodules"
193
+ - ".rspec"
194
+ - ".rubocop.yml"
195
+ - ".ruby-gemset"
196
+ - ".ruby-version"
197
+ - CHANGELOG.md
198
+ - Dockerfile
199
+ - Gemfile
200
+ - Gemfile.lock
201
+ - Guardfile
202
+ - README.md
203
+ - Rakefile
204
+ - bin/flipp_ruby_kafka
205
+ - deploy/artifactory.sh
206
+ - deploy/config.json
207
+ - docker-compose.yml
208
+ - docs/UPGRADE_1.0.md
209
+ - flipp-ruby-kafka.gemspec
210
+ - kafkateria/factories/my_schema.rb
211
+ - kafkateria/factories/my_schema_with_id.rb
212
+ - lib/flipp_ruby_kafka.rb
213
+ - lib/flipp_ruby_kafka/flipp_datadog_metrics.rb
214
+ - lib/flipp_ruby_kafka/test_helpers.rb
215
+ - lib/flipp_ruby_kafka/utils/platform_schema_validation.rb
216
+ - lib/flipp_ruby_kafka/utils/platform_topic_validation.rb
217
+ - lib/flipp_ruby_kafka/version.rb
218
+ - lib/generators/flipp_ruby_kafka/schema_validation/schema_validation_generator.rb
219
+ - lib/generators/flipp_ruby_kafka/topic_validation/topic_validation_generator.rb
220
+ - spec/flipp_ruby_kafka_spec.rb
221
+ - spec/integration/send_kafka_spec.rb
222
+ - spec/phobos.yml
223
+ - spec/schemas/com/my-namespace/MySchema-key.avsc
224
+ - spec/schemas/com/my-namespace/MySchema.avsc
225
+ - spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
226
+ - spec/schemas/com/my-namespace/MySchemaWithId.avsc
227
+ - spec/spec_helper.rb
228
+ - spec/utils/platform_schema_validation_spec.rb
229
+ - spec/utils/platform_topic_validation_spec.rb
230
+ homepage: ''
231
+ licenses: []
232
+ metadata: {}
233
+ post_install_message:
234
+ rdoc_options: []
235
+ require_paths:
236
+ - lib
237
+ required_ruby_version: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ required_rubygems_version: !ruby/object:Gem::Requirement
243
+ requirements:
244
+ - - ">="
245
+ - !ruby/object:Gem::Version
246
+ version: '0'
247
+ requirements: []
248
+ rubygems_version: 3.2.3
249
+ signing_key:
250
+ specification_version: 4
251
+ summary: Flipp Kafka libraries for Ruby.
252
+ test_files:
253
+ - spec/flipp_ruby_kafka_spec.rb
254
+ - spec/integration/send_kafka_spec.rb
255
+ - spec/phobos.yml
256
+ - spec/schemas/com/my-namespace/MySchema-key.avsc
257
+ - spec/schemas/com/my-namespace/MySchema.avsc
258
+ - spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
259
+ - spec/schemas/com/my-namespace/MySchemaWithId.avsc
260
+ - spec/spec_helper.rb
261
+ - spec/utils/platform_schema_validation_spec.rb
262
+ - spec/utils/platform_topic_validation_spec.rb