karafka-testing 2.2.0 → 2.2.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/ci.yml +4 -3
- data/CHANGELOG.md +4 -1
- data/Gemfile.lock +1 -1
- data/karafka-testing.gemspec +1 -1
- data/lib/karafka/testing/errors.rb +3 -0
- data/lib/karafka/testing/rspec/helpers.rb +45 -11
- data/lib/karafka/testing/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 073f7b386365e017596e6ad5d8c1f5753d72dab2eaf90c46504a4676f2690066
|
4
|
+
data.tar.gz: c64a949126353354af0218ed81fc2ee0229fea1edbc3dacf08d129f495053929
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eedf2b5d5ac5c5507f0e5ddf7c3a1f24efb729966c7de9e5f1ecc785f27a08a8fa16d38b8cd12aa5446ed3e5f94d2a3db3e71b675ce1ca250cad7b28635937b3
|
7
|
+
data.tar.gz: 709de9d3f9f6d4351c5abd33c4c0a1888d680fb8159ca07f643bfe4153860e6ed290272cd7545a697b7eeaef4b754f446c945f40cef872413831aefa444c33ec
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/.github/workflows/ci.yml
CHANGED
@@ -16,6 +16,7 @@ jobs:
|
|
16
16
|
fail-fast: false
|
17
17
|
matrix:
|
18
18
|
ruby:
|
19
|
+
- '3.3.0-preview2'
|
19
20
|
- '3.2'
|
20
21
|
- '3.1'
|
21
22
|
- '3.0'
|
@@ -24,7 +25,7 @@ jobs:
|
|
24
25
|
- ruby: '3.2'
|
25
26
|
coverage: 'true'
|
26
27
|
steps:
|
27
|
-
- uses: actions/checkout@
|
28
|
+
- uses: actions/checkout@v4
|
28
29
|
- name: Install package dependencies
|
29
30
|
run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS"
|
30
31
|
- name: Set up Ruby
|
@@ -43,7 +44,7 @@ jobs:
|
|
43
44
|
strategy:
|
44
45
|
fail-fast: false
|
45
46
|
steps:
|
46
|
-
- uses: actions/checkout@
|
47
|
+
- uses: actions/checkout@v4
|
47
48
|
with:
|
48
49
|
fetch-depth: 0
|
49
50
|
- name: Set up Ruby
|
@@ -62,7 +63,7 @@ jobs:
|
|
62
63
|
strategy:
|
63
64
|
fail-fast: false
|
64
65
|
steps:
|
65
|
-
- uses: actions/checkout@
|
66
|
+
- uses: actions/checkout@v4
|
66
67
|
with:
|
67
68
|
fetch-depth: 0
|
68
69
|
- name: Run Coditsu
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# Karafka Test gem changelog
|
2
2
|
|
3
|
-
## 2.2.
|
3
|
+
## 2.2.1 (2023-10-26)
|
4
|
+
- [Enhancement] Support patterns in `#consumer_for` consumer builder.
|
5
|
+
|
6
|
+
## 2.2.0 (2023-09-01)
|
4
7
|
- [Maintenance] Ensure that `2.2.0` works with consumers for patterns.
|
5
8
|
- [Maintenance] Replace signing key with a new one (old expired).
|
6
9
|
|
data/Gemfile.lock
CHANGED
data/karafka-testing.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.metadata = {
|
31
31
|
'funding_uri' => 'https://karafka.io/#become-pro',
|
32
32
|
'homepage_uri' => 'https://karafka.io',
|
33
|
-
'changelog_uri' => 'https://
|
33
|
+
'changelog_uri' => 'https://karafka.io/docs/Changelog-Karafka-Testing',
|
34
34
|
'bug_tracker_uri' => 'https://github.com/karafka/karafka-testing/issues',
|
35
35
|
'source_code_uri' => 'https://github.com/karafka/karafka-testing',
|
36
36
|
'documentation_uri' => 'https://karafka.io/docs',
|
@@ -13,6 +13,9 @@ module Karafka
|
|
13
13
|
|
14
14
|
# Raised when topic is in many consumer groups and not limited by consumer group expectation
|
15
15
|
TopicInManyConsumerGroupsError = Class.new(BaseError)
|
16
|
+
|
17
|
+
# Raised when you requested a topic from a consumer group that does not exist
|
18
|
+
ConsumerGroupNotFound = Class.new(BaseError)
|
16
19
|
end
|
17
20
|
end
|
18
21
|
end
|
@@ -57,17 +57,10 @@ module Karafka
|
|
57
57
|
# subject(:consumer) { karafka.consumer_for(:my_requested_topic) }
|
58
58
|
# end
|
59
59
|
def _karafka_consumer_for(requested_topic, requested_consumer_group = nil)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
topic.name == requested_topic.to_s
|
65
|
-
end
|
66
|
-
|
67
|
-
# And then narrow it down based on the consumer group criteria (if present)
|
68
|
-
selected_topics.delete_if do |topic|
|
69
|
-
requested_consumer_group && topic.consumer_group.name != requested_consumer_group.to_s
|
70
|
-
end
|
60
|
+
selected_topics = _karafka_consumer_find_candidate_topics(
|
61
|
+
requested_topic.to_s,
|
62
|
+
requested_consumer_group.to_s
|
63
|
+
)
|
71
64
|
|
72
65
|
raise Errors::TopicInManyConsumerGroupsError, requested_topic if selected_topics.size > 1
|
73
66
|
raise Errors::TopicNotFoundError, requested_topic if selected_topics.empty?
|
@@ -183,6 +176,47 @@ module Karafka
|
|
183
176
|
consumer.instance_variable_set('@used', true)
|
184
177
|
consumer
|
185
178
|
end
|
179
|
+
|
180
|
+
# Finds all the routing topics matching requested topic within all topics or within
|
181
|
+
# provided consumer group based on name
|
182
|
+
#
|
183
|
+
# @param requested_topic [String] requested topic name
|
184
|
+
# @param requested_consumer_group [String] requested consumer group or nil to look in all
|
185
|
+
# @return [Array<Karafka::Routing::Topic>] all matching topics
|
186
|
+
#
|
187
|
+
# @note Since we run the lookup on subscription groups, the search will automatically
|
188
|
+
# expand with matching patterns
|
189
|
+
def _karafka_consumer_find_candidate_topics(requested_topic, requested_consumer_group)
|
190
|
+
_karafka_consumer_find_subscription_groups(requested_consumer_group)
|
191
|
+
.map(&:topics)
|
192
|
+
.filter_map do |topics|
|
193
|
+
topics.find(requested_topic.to_s)
|
194
|
+
rescue Karafka::Errors::TopicNotFoundError
|
195
|
+
nil
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
# Finds subscription groups from the requested consumer group or selects all if no
|
200
|
+
# consumer group specified
|
201
|
+
# @param requested_consumer_group [String] requested consumer group or nil to look in all
|
202
|
+
# @return [Array<Karafka::Routing::SubscriptionGroup>] requested subscription groups
|
203
|
+
def _karafka_consumer_find_subscription_groups(requested_consumer_group)
|
204
|
+
if requested_consumer_group && !requested_consumer_group.empty?
|
205
|
+
::Karafka::App
|
206
|
+
.subscription_groups
|
207
|
+
# Find matching consumer group
|
208
|
+
.find { |cg, _sgs| cg.name == requested_consumer_group.to_s }
|
209
|
+
# Raise error if not found
|
210
|
+
.tap { |cg| cg || raise(Errors::ConsumerGroupNotFound, requested_consumer_group) }
|
211
|
+
# Since lookup was on a hash, get the value, that is subscription groups
|
212
|
+
.last
|
213
|
+
else
|
214
|
+
::Karafka::App
|
215
|
+
.subscription_groups
|
216
|
+
.values
|
217
|
+
.flatten
|
218
|
+
end
|
219
|
+
end
|
186
220
|
end
|
187
221
|
end
|
188
222
|
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.2.
|
4
|
+
version: 2.2.1
|
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: 2023-
|
38
|
+
date: 2023-10-26 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: karafka
|
@@ -109,7 +109,7 @@ licenses:
|
|
109
109
|
metadata:
|
110
110
|
funding_uri: https://karafka.io/#become-pro
|
111
111
|
homepage_uri: https://karafka.io
|
112
|
-
changelog_uri: https://
|
112
|
+
changelog_uri: https://karafka.io/docs/Changelog-Karafka-Testing
|
113
113
|
bug_tracker_uri: https://github.com/karafka/karafka-testing/issues
|
114
114
|
source_code_uri: https://github.com/karafka/karafka-testing
|
115
115
|
documentation_uri: https://karafka.io/docs
|
metadata.gz.sig
CHANGED
Binary file
|