karafka-testing 2.1.6 → 2.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/ci.yml +4 -3
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +4 -4
- data/certs/cert_chain.pem +21 -21
- data/karafka-testing.gemspec +2 -2
- 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 +27 -27
- 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,5 +1,12 @@
|
|
1
1
|
# Karafka Test gem changelog
|
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)
|
7
|
+
- [Maintenance] Ensure that `2.2.0` works with consumers for patterns.
|
8
|
+
- [Maintenance] Replace signing key with a new one (old expired).
|
9
|
+
|
3
10
|
## 2.1.6 (2023-08-06)
|
4
11
|
- [Enhancement] Make `#used?` API always return true.
|
5
12
|
- [Enhancement] Expand dummy client API with #seek.
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
karafka-testing (2.1
|
5
|
-
karafka (>= 2.
|
4
|
+
karafka-testing (2.2.1)
|
5
|
+
karafka (>= 2.2.0, < 3.0.0)
|
6
6
|
waterdrop (>= 2.6.6)
|
7
7
|
|
8
8
|
GEM
|
@@ -10,10 +10,10 @@ GEM
|
|
10
10
|
specs:
|
11
11
|
concurrent-ruby (1.2.2)
|
12
12
|
ffi (1.15.5)
|
13
|
-
karafka (2.
|
13
|
+
karafka (2.2.0)
|
14
14
|
karafka-core (>= 2.1.1, < 2.2.0)
|
15
15
|
thor (>= 0.20)
|
16
|
-
waterdrop (>= 2.6.
|
16
|
+
waterdrop (>= 2.6.6, < 3.0.0)
|
17
17
|
zeitwerk (~> 2.3)
|
18
18
|
karafka-core (2.1.1)
|
19
19
|
concurrent-ruby (>= 1.1)
|
data/certs/cert_chain.pem
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
2
|
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
|
3
3
|
YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
|
4
|
-
|
4
|
+
MB4XDTIzMDgyMTA3MjU1NFoXDTI0MDgyMDA3MjU1NFowPzEQMA4GA1UEAwwHY29u
|
5
5
|
dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
6
|
+
bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAOuZpyQKEwsTG9plLat7
|
7
|
+
8bUaNuNBEnouTsNMr6X+XTgvyrAxTuocdsyP1sNCjdS1B8RiiDH1/Nt9qpvlBWon
|
8
|
+
sdJ1SYhaWNVfqiYStTDnCx3PRMmHRdD4KqUWKpN6VpZ1O/Zu+9Mw0COmvXgZuuO9
|
9
|
+
wMSJkXRo6dTCfMedLAIxjMeBIxtoLR2e6Jm6MR8+8WYYVWrO9kSOOt5eKQLBY7aK
|
10
|
+
b/Dc40EcJKPg3Z30Pia1M9ZyRlb6SOj6SKpHRqc7vbVQxjEw6Jjal1lZ49m3YZMd
|
11
|
+
ArMAs9lQZNdSw5/UX6HWWURLowg6k10RnhTUtYyzO9BFev0JFJftHnmuk8vtb+SD
|
12
|
+
5VPmjFXg2VOcw0B7FtG75Vackk8QKfgVe3nSPhVpew2CSPlbJzH80wChbr19+e3+
|
13
|
+
YGr1tOiaJrL6c+PNmb0F31NXMKpj/r+n15HwlTMRxQrzFcgjBlxf2XFGnPQXHhBm
|
14
|
+
kp1OFnEq4GG9sON4glRldkwzi/f/fGcZmo5fm3d+0ZdNgwIDAQABo3cwdTAJBgNV
|
15
|
+
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUPVH5+dLA80A1kJ2Uz5iGwfOa
|
16
|
+
1+swHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
|
17
|
+
bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAnpa0jcN7JzREHMTQ
|
18
|
+
bfZ+xcvlrzuROMY6A3zIZmQgbnoZZNuX4cMRrT1p1HuwXpxdpHPw7dDjYqWw3+1h
|
19
|
+
3mXLeMuk7amjQpYoSWU/OIZMhIsARra22UN8qkkUlUj3AwTaChVKN/bPJOM2DzfU
|
20
|
+
kz9vUgLeYYFfQbZqeI6SsM7ltilRV4W8D9yNUQQvOxCFxtLOetJ00fC/E7zMUzbK
|
21
|
+
IBwYFQYsbI6XQzgAIPW6nGSYKgRhkfpmquXSNKZRIQ4V6bFrufa+DzD0bt2ZA3ah
|
22
|
+
fMmJguyb5L2Gf1zpDXzFSPMG7YQFLzwYz1zZZvOU7/UCpQsHpID/YxqDp4+Dgb+Y
|
23
|
+
qma0whX8UG/gXFV2pYWpYOfpatvahwi+A1TwPQsuZwkkhi1OyF1At3RY+hjSXyav
|
24
|
+
AnG1dJU+yL2BK7vaVytLTstJME5mepSZ46qqIJXMuWob/YPDmVaBF39TDSG9e34s
|
25
|
+
msG3BiCqgOgHAnL23+CN3Rt8MsuRfEtoTKpJVcCfoEoNHOkc
|
26
26
|
-----END CERTIFICATE-----
|
data/karafka-testing.gemspec
CHANGED
@@ -24,13 +24,13 @@ 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.
|
27
|
+
spec.add_dependency 'karafka', '>= 2.2.0', '< 3.0.0'
|
28
28
|
spec.add_dependency 'waterdrop', '>= 2.6.6'
|
29
29
|
|
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.1
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maciej Mensfeld
|
@@ -12,30 +12,30 @@ cert_chain:
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
|
14
14
|
YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
|
15
|
-
|
15
|
+
MB4XDTIzMDgyMTA3MjU1NFoXDTI0MDgyMDA3MjU1NFowPzEQMA4GA1UEAwwHY29u
|
16
16
|
dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
17
|
+
bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAOuZpyQKEwsTG9plLat7
|
18
|
+
8bUaNuNBEnouTsNMr6X+XTgvyrAxTuocdsyP1sNCjdS1B8RiiDH1/Nt9qpvlBWon
|
19
|
+
sdJ1SYhaWNVfqiYStTDnCx3PRMmHRdD4KqUWKpN6VpZ1O/Zu+9Mw0COmvXgZuuO9
|
20
|
+
wMSJkXRo6dTCfMedLAIxjMeBIxtoLR2e6Jm6MR8+8WYYVWrO9kSOOt5eKQLBY7aK
|
21
|
+
b/Dc40EcJKPg3Z30Pia1M9ZyRlb6SOj6SKpHRqc7vbVQxjEw6Jjal1lZ49m3YZMd
|
22
|
+
ArMAs9lQZNdSw5/UX6HWWURLowg6k10RnhTUtYyzO9BFev0JFJftHnmuk8vtb+SD
|
23
|
+
5VPmjFXg2VOcw0B7FtG75Vackk8QKfgVe3nSPhVpew2CSPlbJzH80wChbr19+e3+
|
24
|
+
YGr1tOiaJrL6c+PNmb0F31NXMKpj/r+n15HwlTMRxQrzFcgjBlxf2XFGnPQXHhBm
|
25
|
+
kp1OFnEq4GG9sON4glRldkwzi/f/fGcZmo5fm3d+0ZdNgwIDAQABo3cwdTAJBgNV
|
26
|
+
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUPVH5+dLA80A1kJ2Uz5iGwfOa
|
27
|
+
1+swHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
|
28
|
+
bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAnpa0jcN7JzREHMTQ
|
29
|
+
bfZ+xcvlrzuROMY6A3zIZmQgbnoZZNuX4cMRrT1p1HuwXpxdpHPw7dDjYqWw3+1h
|
30
|
+
3mXLeMuk7amjQpYoSWU/OIZMhIsARra22UN8qkkUlUj3AwTaChVKN/bPJOM2DzfU
|
31
|
+
kz9vUgLeYYFfQbZqeI6SsM7ltilRV4W8D9yNUQQvOxCFxtLOetJ00fC/E7zMUzbK
|
32
|
+
IBwYFQYsbI6XQzgAIPW6nGSYKgRhkfpmquXSNKZRIQ4V6bFrufa+DzD0bt2ZA3ah
|
33
|
+
fMmJguyb5L2Gf1zpDXzFSPMG7YQFLzwYz1zZZvOU7/UCpQsHpID/YxqDp4+Dgb+Y
|
34
|
+
qma0whX8UG/gXFV2pYWpYOfpatvahwi+A1TwPQsuZwkkhi1OyF1At3RY+hjSXyav
|
35
|
+
AnG1dJU+yL2BK7vaVytLTstJME5mepSZ46qqIJXMuWob/YPDmVaBF39TDSG9e34s
|
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
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 2.
|
46
|
+
version: 2.2.0
|
47
47
|
- - "<"
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: 3.0.0
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
requirements:
|
54
54
|
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 2.
|
56
|
+
version: 2.2.0
|
57
57
|
- - "<"
|
58
58
|
- !ruby/object:Gem::Version
|
59
59
|
version: 3.0.0
|
@@ -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
|
@@ -129,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '0'
|
131
131
|
requirements: []
|
132
|
-
rubygems_version: 3.4.
|
132
|
+
rubygems_version: 3.4.19
|
133
133
|
signing_key:
|
134
134
|
specification_version: 4
|
135
135
|
summary: Library which provides helpers for easier Karafka consumers tests
|
metadata.gz.sig
CHANGED
Binary file
|