karafka-testing 2.4.0.beta1 → 2.4.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e62624d40d7aa454841a212de1beaf67127ef06873bd0604dcbfe4747a397cf5
4
- data.tar.gz: 2e031857e92ce50f55ea24e3cb32309a070c11ea930de263f05ec9c82f24992d
3
+ metadata.gz: 91dfd9d61d189ef4382255dd90805291525c7ce596002f5932eddbf60d0ed4d4
4
+ data.tar.gz: c288612346f823379c454a2de964c6600a4705a99704c2261b78e8f685f33068
5
5
  SHA512:
6
- metadata.gz: b2c5398aa8d03a31499a29b60f3e45456e6151cbbd57f979dac9ddc6aea283e5fb6b0613a1df336fb3d46284af16861125a7df980c9701ace2af2d2d3ef8336f
7
- data.tar.gz: f32201af31b9e0840ce41e7c17a16a64b7fedfb99a4cb1815f2b18a1fa45bed474eb9dc02e3b68e504a0d2be2191a141e64ed52fad25fee9ba86e42030250a0f
6
+ metadata.gz: 49458d3a51b4d8ba2a6b073c67dd43a85d1987aa9a300a1047a5268d6f61ae85d4c60a587fe9e8078bec0c61a900b129a8272a931a81fef3f017d548d04ce83b
7
+ data.tar.gz: 27e88641a3c2b0795731bebddf56bb5a81159730152c8fb3859543af5dcdb8bca9f762e4edaaafee931ef8cfc6d18f62c44a2993c321d44b104160826922d974
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -2,7 +2,12 @@
2
2
 
3
3
  ## 2.4.0 (Unreleased)
4
4
  - **[Breaking]** Drop Ruby `2.7` support.
5
+ - [Refactor] Extract common components for Minitest and RSpec.
5
6
  - [Fix] Support again `require: false` on gem loading.
7
+ - [Fix] Fix a case where multiplexed SG would fail with `TopicInManyConsumerGroupsError`
8
+
9
+ ## 2.3.2 (2024-04-03)
10
+ - [Enhancement] Support `Minitest::Spec`.
6
11
 
7
12
  ## 2.3.1 (2024-03-07)
8
13
  - [Enhancement] Prevent usage of testing when Karafka is not loaded.
data/Gemfile.lock CHANGED
@@ -1,28 +1,28 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka-testing (2.4.0.beta1)
5
- karafka (>= 2.3.0, < 2.5.0)
6
- waterdrop (>= 2.7.0.beta2)
4
+ karafka-testing (2.4.0.rc2)
5
+ karafka (>= 2.4.0.beta1, < 2.5.0)
6
+ waterdrop (>= 2.7.0.rc1)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
11
  ffi (1.16.3)
12
- karafka (2.3.3)
13
- karafka-core (>= 2.3.0, < 2.4.0)
14
- waterdrop (>= 2.6.12, < 3.0.0)
12
+ karafka (2.4.0.beta1)
13
+ karafka-core (>= 2.4.0.rc1, < 2.5.0)
14
+ waterdrop (>= 2.7.0.rc1, < 3.0.0)
15
15
  zeitwerk (~> 2.3)
16
- karafka-core (2.4.0.beta2)
17
- karafka-rdkafka (>= 0.15.0.beta3, < 0.16.0)
18
- karafka-rdkafka (0.15.0.beta3)
16
+ karafka-core (2.4.0.rc1)
17
+ karafka-rdkafka (>= 0.15.0.rc1, < 0.16.0)
18
+ karafka-rdkafka (0.15.0.rc1)
19
19
  ffi (~> 1.15)
20
20
  mini_portile2 (~> 2.6)
21
21
  rake (> 12)
22
22
  mini_portile2 (2.8.5)
23
- rake (13.1.0)
24
- waterdrop (2.7.0.beta2)
25
- karafka-core (>= 2.4.0.beta2, < 3.0.0)
23
+ rake (13.2.1)
24
+ waterdrop (2.7.0.rc1)
25
+ karafka-core (>= 2.4.0.rc1, < 3.0.0)
26
26
  zeitwerk (~> 2.3)
27
27
  zeitwerk (2.6.13)
28
28
 
@@ -34,4 +34,4 @@ DEPENDENCIES
34
34
  karafka-testing!
35
35
 
36
36
  BUNDLED WITH
37
- 2.5.6
37
+ 2.5.7
@@ -24,8 +24,8 @@ Gem::Specification.new do |spec|
24
24
  spec.signing_key = File.expand_path('~/.ssh/gem-private_key.pem')
25
25
  end
26
26
 
27
- spec.add_dependency 'karafka', '>= 2.3.0', '< 2.5.0'
28
- spec.add_dependency 'waterdrop', '>= 2.7.0.beta2'
27
+ spec.add_dependency 'karafka', '>= 2.4.0.beta1', '< 2.5.0'
28
+ spec.add_dependency 'waterdrop', '>= 2.7.0.rc1'
29
29
 
30
30
  spec.required_ruby_version = '>= 3.0.0'
31
31
 
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Karafka
4
+ module Testing
5
+ # Common helper methods that are shared in between RSpec and Minitest
6
+ module Helpers
7
+ class << self
8
+ # Finds all the routing topics matching requested topic within all topics or within
9
+ # provided consumer group based on name
10
+ #
11
+ # @param requested_topic [String] requested topic name
12
+ # @param requested_consumer_group [String] requested consumer group or nil to look in all
13
+ # @return [Array<Karafka::Routing::Topic>] all matching topics
14
+ #
15
+ # @note Since we run the lookup on subscription groups, the search will automatically
16
+ # expand with matching patterns
17
+ def karafka_consumer_find_candidate_topics(requested_topic, requested_consumer_group)
18
+ karafka_consumer_find_subscription_groups(requested_consumer_group)
19
+ # multiplexed subscriptions of the same origin share name, thus we can reduced
20
+ # multiplexing to the first one as during testing, there is no multiplexing parallel
21
+ # execution anyhow
22
+ .uniq(&:name)
23
+ .map(&:topics)
24
+ .filter_map do |topics|
25
+ topics.find(requested_topic.to_s)
26
+ rescue Karafka::Errors::TopicNotFoundError
27
+ nil
28
+ end
29
+ end
30
+
31
+ # Finds subscription groups from the requested consumer group or selects all if no
32
+ # consumer group specified
33
+ # @param requested_consumer_group [String] requested consumer group or nil to look in all
34
+ # @return [Array<Karafka::Routing::SubscriptionGroup>] requested subscription groups
35
+ def karafka_consumer_find_subscription_groups(requested_consumer_group)
36
+ if requested_consumer_group && !requested_consumer_group.empty?
37
+ ::Karafka::App
38
+ .subscription_groups
39
+ # Find matching consumer group
40
+ .find { |cg, _sgs| cg.name == requested_consumer_group.to_s }
41
+ # Raise error if not found
42
+ .tap { |cg| cg || raise(Errors::ConsumerGroupNotFound, requested_consumer_group) }
43
+ # Since lookup was on a hash, get the value, that is subscription groups
44
+ .last
45
+ else
46
+ ::Karafka::App
47
+ .subscription_groups
48
+ .values
49
+ .flatten
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'karafka/testing'
4
4
  require 'karafka/testing/errors'
5
+ require 'karafka/testing/helpers'
5
6
  require 'karafka/testing/spec_consumer_client'
6
7
  require 'karafka/testing/spec_producer_client'
7
8
  require 'karafka/testing/minitest/proxy'
@@ -17,19 +18,27 @@ module Karafka
17
18
  # Adds all the needed extra functionalities to the minitest group
18
19
  # @param base [Class] Minitest example group we want to extend
19
20
  def included(base)
20
- base.class_eval do
21
- setup do
22
- Karafka::Testing.ensure_karafka_initialized!
21
+ eval_flow = lambda do
22
+ Karafka::Testing.ensure_karafka_initialized!
23
23
 
24
- @karafka = Karafka::Testing::Minitest::Proxy.new(self)
25
- @_karafka_consumer_messages = []
26
- @_karafka_consumer_client = Karafka::Testing::SpecConsumerClient.new
27
- @_karafka_producer_client = Karafka::Testing::SpecProducerClient.new(self)
24
+ @karafka = Karafka::Testing::Minitest::Proxy.new(self)
25
+ @_karafka_consumer_messages = []
26
+ @_karafka_consumer_client = Karafka::Testing::SpecConsumerClient.new
27
+ @_karafka_producer_client = Karafka::Testing::SpecProducerClient.new(self)
28
28
 
29
- @_karafka_consumer_messages.clear
30
- @_karafka_producer_client.reset
29
+ @_karafka_consumer_messages.clear
30
+ @_karafka_producer_client.reset
31
31
 
32
- Karafka.producer.stubs(:client).returns(@_karafka_producer_client)
32
+ Karafka.producer.stubs(:client).returns(@_karafka_producer_client)
33
+ end
34
+
35
+ if base.to_s == 'Minitest::Spec'
36
+ base.class_eval do
37
+ before(&eval_flow)
38
+ end
39
+ else
40
+ base.class_eval do
41
+ setup(&eval_flow)
33
42
  end
34
43
  end
35
44
  end
@@ -48,7 +57,7 @@ module Karafka
48
57
  # @example Creates a consumer instance with settings for `my_requested_topic`
49
58
  # consumer = @karafka.consumer_for(:my_requested_topic)
50
59
  def _karafka_consumer_for(requested_topic, requested_consumer_group = nil)
51
- selected_topics = _karafka_consumer_find_candidate_topics(
60
+ selected_topics = Testing::Helpers.karafka_consumer_find_candidate_topics(
52
61
  requested_topic.to_s,
53
62
  requested_consumer_group.to_s
54
63
  )
@@ -161,48 +170,6 @@ module Karafka
161
170
  @consumer.instance_variable_set('@used', true)
162
171
  @consumer
163
172
  end
164
-
165
- # Finds all the routing topics matching requested topic within all topics or within
166
- # provided consumer group based on name
167
- #
168
- # @param requested_topic [String] requested topic name
169
- # @param requested_consumer_group [String] requested consumer group or nil to look in all
170
- # @return [Array<Karafka::Routing::Topic>] all matching topics
171
- #
172
- # @note Since we run the lookup on subscription groups, the search will automatically
173
- # expand with matching patterns
174
- def _karafka_consumer_find_candidate_topics(requested_topic, requested_consumer_group)
175
- _karafka_consumer_find_subscription_groups(requested_consumer_group)
176
- .map(&:topics)
177
- .filter_map do |topics|
178
- topics.find(requested_topic.to_s)
179
- rescue Karafka::Errors::TopicNotFoundError
180
- nil
181
- end
182
- .uniq(&:consumer_group)
183
- end
184
-
185
- # Finds subscription groups from the requested consumer group or selects all if no
186
- # consumer group specified
187
- # @param requested_consumer_group [String] requested consumer group or nil to look in all
188
- # @return [Array<Karafka::Routing::SubscriptionGroup>] requested subscription groups
189
- def _karafka_consumer_find_subscription_groups(requested_consumer_group)
190
- if requested_consumer_group && !requested_consumer_group.empty?
191
- ::Karafka::App
192
- .subscription_groups
193
- # Find matching consumer group
194
- .find { |cg, _sgs| cg.name == requested_consumer_group.to_s }
195
- # Raise error if not found
196
- .tap { |cg| cg || raise(Errors::ConsumerGroupNotFound, requested_consumer_group) }
197
- # Since lookup was on a hash, get the value, that is subscription groups
198
- .last
199
- else
200
- ::Karafka::App
201
- .subscription_groups
202
- .values
203
- .flatten
204
- end
205
- end
206
173
  end
207
174
  end
208
175
  end
@@ -3,6 +3,7 @@
3
3
  require 'waterdrop'
4
4
  require 'karafka/testing'
5
5
  require 'karafka/testing/errors'
6
+ require 'karafka/testing/helpers'
6
7
  require 'karafka/testing/spec_consumer_client'
7
8
  require 'karafka/testing/spec_producer_client'
8
9
  require 'karafka/testing/rspec/proxy'
@@ -60,7 +61,7 @@ module Karafka
60
61
  # subject(:consumer) { karafka.consumer_for(:my_requested_topic) }
61
62
  # end
62
63
  def _karafka_consumer_for(requested_topic, requested_consumer_group = nil)
63
- selected_topics = _karafka_consumer_find_candidate_topics(
64
+ selected_topics = Testing::Helpers.karafka_consumer_find_candidate_topics(
64
65
  requested_topic.to_s,
65
66
  requested_consumer_group.to_s
66
67
  )
@@ -179,48 +180,6 @@ module Karafka
179
180
  consumer.instance_variable_set('@used', true)
180
181
  consumer
181
182
  end
182
-
183
- # Finds all the routing topics matching requested topic within all topics or within
184
- # provided consumer group based on name
185
- #
186
- # @param requested_topic [String] requested topic name
187
- # @param requested_consumer_group [String] requested consumer group or nil to look in all
188
- # @return [Array<Karafka::Routing::Topic>] all matching topics
189
- #
190
- # @note Since we run the lookup on subscription groups, the search will automatically
191
- # expand with matching patterns
192
- def _karafka_consumer_find_candidate_topics(requested_topic, requested_consumer_group)
193
- _karafka_consumer_find_subscription_groups(requested_consumer_group)
194
- .map(&:topics)
195
- .filter_map do |topics|
196
- topics.find(requested_topic.to_s)
197
- rescue Karafka::Errors::TopicNotFoundError
198
- nil
199
- end
200
- .uniq(&:consumer_group)
201
- end
202
-
203
- # Finds subscription groups from the requested consumer group or selects all if no
204
- # consumer group specified
205
- # @param requested_consumer_group [String] requested consumer group or nil to look in all
206
- # @return [Array<Karafka::Routing::SubscriptionGroup>] requested subscription groups
207
- def _karafka_consumer_find_subscription_groups(requested_consumer_group)
208
- if requested_consumer_group && !requested_consumer_group.empty?
209
- ::Karafka::App
210
- .subscription_groups
211
- # Find matching consumer group
212
- .find { |cg, _sgs| cg.name == requested_consumer_group.to_s }
213
- # Raise error if not found
214
- .tap { |cg| cg || raise(Errors::ConsumerGroupNotFound, requested_consumer_group) }
215
- # Since lookup was on a hash, get the value, that is subscription groups
216
- .last
217
- else
218
- ::Karafka::App
219
- .subscription_groups
220
- .values
221
- .flatten
222
- end
223
- end
224
183
  end
225
184
  end
226
185
  end
@@ -4,6 +4,6 @@
4
4
  module Karafka
5
5
  module Testing
6
6
  # Current version of gem. It should match Karafka framework version
7
- VERSION = '2.4.0.beta1'
7
+ VERSION = '2.4.0.rc2'
8
8
  end
9
9
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka-testing
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0.beta1
4
+ version: 2.4.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -35,7 +35,7 @@ cert_chain:
35
35
  AnG1dJU+yL2BK7vaVytLTstJME5mepSZ46qqIJXMuWob/YPDmVaBF39TDSG9e34s
36
36
  msG3BiCqgOgHAnL23+CN3Rt8MsuRfEtoTKpJVcCfoEoNHOkc
37
37
  -----END CERTIFICATE-----
38
- date: 2024-03-27 00:00:00.000000000 Z
38
+ date: 2024-04-22 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: karafka
@@ -43,7 +43,7 @@ dependencies:
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 2.3.0
46
+ version: 2.4.0.beta1
47
47
  - - "<"
48
48
  - !ruby/object:Gem::Version
49
49
  version: 2.5.0
@@ -53,7 +53,7 @@ dependencies:
53
53
  requirements:
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: 2.3.0
56
+ version: 2.4.0.beta1
57
57
  - - "<"
58
58
  - !ruby/object:Gem::Version
59
59
  version: 2.5.0
@@ -63,14 +63,14 @@ dependencies:
63
63
  requirements:
64
64
  - - ">="
65
65
  - !ruby/object:Gem::Version
66
- version: 2.7.0.beta2
66
+ version: 2.7.0.rc1
67
67
  type: :runtime
68
68
  prerelease: false
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: 2.7.0.beta2
73
+ version: 2.7.0.rc1
74
74
  description: Library which provides helpers for easier Karafka consumers tests
75
75
  email:
76
76
  - contact@karafka.io
@@ -97,6 +97,7 @@ files:
97
97
  - lib/karafka-testing.rb
98
98
  - lib/karafka/testing.rb
99
99
  - lib/karafka/testing/errors.rb
100
+ - lib/karafka/testing/helpers.rb
100
101
  - lib/karafka/testing/minitest/helpers.rb
101
102
  - lib/karafka/testing/minitest/proxy.rb
102
103
  - lib/karafka/testing/rspec/helpers.rb
metadata.gz.sig CHANGED
Binary file