karafka-testing 2.3.2 → 2.4.0.beta1
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 +3 -14
- data/CHANGELOG.md +3 -2
- data/Gemfile.lock +8 -8
- data/karafka-testing.gemspec +4 -2
- data/lib/karafka/testing/errors.rb +11 -1
- data/lib/karafka/testing/minitest/helpers.rb +15 -19
- data/lib/karafka/testing/rspec/helpers.rb +7 -3
- data/lib/karafka/testing/version.rb +1 -1
- data/lib/karafka/testing.rb +27 -0
- data.tar.gz.sig +0 -0
- metadata +7 -7
- 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: e62624d40d7aa454841a212de1beaf67127ef06873bd0604dcbfe4747a397cf5
|
|
4
|
+
data.tar.gz: 2e031857e92ce50f55ea24e3cb32309a070c11ea930de263f05ec9c82f24992d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b2c5398aa8d03a31499a29b60f3e45456e6151cbbd57f979dac9ddc6aea283e5fb6b0613a1df336fb3d46284af16861125a7df980c9701ace2af2d2d3ef8336f
|
|
7
|
+
data.tar.gz: f32201af31b9e0840ce41e7c17a16a64b7fedfb99a4cb1815f2b18a1fa45bed474eb9dc02e3b68e504a0d2be2191a141e64ed52fad25fee9ba86e42030250a0f
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -22,7 +22,6 @@ jobs:
|
|
|
22
22
|
- '3.2'
|
|
23
23
|
- '3.1'
|
|
24
24
|
- '3.0'
|
|
25
|
-
- '2.7'
|
|
26
25
|
include:
|
|
27
26
|
- ruby: '3.3'
|
|
28
27
|
coverage: 'true'
|
|
@@ -40,24 +39,14 @@ jobs:
|
|
|
40
39
|
|
|
41
40
|
- name: Install latest bundler
|
|
42
41
|
run: |
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
bundle config set version 2.4.22
|
|
46
|
-
gem update --system 3.4.22 --no-document
|
|
47
|
-
else
|
|
48
|
-
gem install bundler --no-document
|
|
49
|
-
gem update --system --no-document
|
|
50
|
-
fi
|
|
42
|
+
gem install bundler --no-document
|
|
43
|
+
gem update --system --no-document
|
|
51
44
|
|
|
52
45
|
bundle config set without 'tools benchmarks docs'
|
|
53
46
|
|
|
54
47
|
- name: Bundle install
|
|
55
48
|
run: |
|
|
56
|
-
|
|
57
|
-
BUNDLER_VERSION=2.4.22 bundle install --jobs 4 --retry 3
|
|
58
|
-
else
|
|
59
|
-
bundle install --jobs 4 --retry 3
|
|
60
|
-
fi
|
|
49
|
+
bundle install --jobs 4 --retry 3
|
|
61
50
|
|
|
62
51
|
diffend:
|
|
63
52
|
runs-on: ubuntu-latest
|
data/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Karafka Test gem changelog
|
|
2
2
|
|
|
3
|
-
## 2.
|
|
4
|
-
- [
|
|
3
|
+
## 2.4.0 (Unreleased)
|
|
4
|
+
- **[Breaking]** Drop Ruby `2.7` support.
|
|
5
|
+
- [Fix] Support again `require: false` on gem loading.
|
|
5
6
|
|
|
6
7
|
## 2.3.1 (2024-03-07)
|
|
7
8
|
- [Enhancement] Prevent usage of testing when Karafka is not loaded.
|
data/Gemfile.lock
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
karafka-testing (2.
|
|
5
|
-
karafka (>= 2.3.0, < 2.
|
|
6
|
-
waterdrop (>= 2.
|
|
4
|
+
karafka-testing (2.4.0.beta1)
|
|
5
|
+
karafka (>= 2.3.0, < 2.5.0)
|
|
6
|
+
waterdrop (>= 2.7.0.beta2)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
@@ -13,16 +13,16 @@ GEM
|
|
|
13
13
|
karafka-core (>= 2.3.0, < 2.4.0)
|
|
14
14
|
waterdrop (>= 2.6.12, < 3.0.0)
|
|
15
15
|
zeitwerk (~> 2.3)
|
|
16
|
-
karafka-core (2.
|
|
17
|
-
karafka-rdkafka (>= 0.
|
|
18
|
-
karafka-rdkafka (0.
|
|
16
|
+
karafka-core (2.4.0.beta2)
|
|
17
|
+
karafka-rdkafka (>= 0.15.0.beta3, < 0.16.0)
|
|
18
|
+
karafka-rdkafka (0.15.0.beta3)
|
|
19
19
|
ffi (~> 1.15)
|
|
20
20
|
mini_portile2 (~> 2.6)
|
|
21
21
|
rake (> 12)
|
|
22
22
|
mini_portile2 (2.8.5)
|
|
23
23
|
rake (13.1.0)
|
|
24
|
-
waterdrop (2.
|
|
25
|
-
karafka-core (>= 2.
|
|
24
|
+
waterdrop (2.7.0.beta2)
|
|
25
|
+
karafka-core (>= 2.4.0.beta2, < 3.0.0)
|
|
26
26
|
zeitwerk (~> 2.3)
|
|
27
27
|
zeitwerk (2.6.13)
|
|
28
28
|
|
data/karafka-testing.gemspec
CHANGED
|
@@ -24,8 +24,10 @@ 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.
|
|
28
|
-
spec.add_dependency 'waterdrop', '>= 2.
|
|
27
|
+
spec.add_dependency 'karafka', '>= 2.3.0', '< 2.5.0'
|
|
28
|
+
spec.add_dependency 'waterdrop', '>= 2.7.0.beta2'
|
|
29
|
+
|
|
30
|
+
spec.required_ruby_version = '>= 3.0.0'
|
|
29
31
|
|
|
30
32
|
spec.metadata = {
|
|
31
33
|
'funding_uri' => 'https://karafka.io/#become-pro',
|
|
@@ -15,7 +15,17 @@ module Karafka
|
|
|
15
15
|
TopicInManyConsumerGroupsError = Class.new(BaseError)
|
|
16
16
|
|
|
17
17
|
# Raised when you requested a topic from a consumer group that does not exist
|
|
18
|
-
|
|
18
|
+
ConsumerGroupNotFoundError = Class.new(BaseError)
|
|
19
|
+
|
|
20
|
+
# Raised when trying to use testing without Karafka app being visible
|
|
21
|
+
# If you are seeing this error, then you tried to use testing helpers without Karafka being
|
|
22
|
+
# loaded prior to this happening.
|
|
23
|
+
KarafkaNotLoadedError = Class.new(BaseError)
|
|
24
|
+
|
|
25
|
+
# Raised when there is an attempt to use the testing primitives without Karafka app being
|
|
26
|
+
# configured. Prior to initialization process, most of config values are nils, etc and
|
|
27
|
+
# mocks will not work.
|
|
28
|
+
KarafkaNotInitializedError = Class.new(BaseError)
|
|
19
29
|
end
|
|
20
30
|
end
|
|
21
31
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'karafka/testing'
|
|
3
4
|
require 'karafka/testing/errors'
|
|
4
5
|
require 'karafka/testing/spec_consumer_client'
|
|
5
6
|
require 'karafka/testing/spec_producer_client'
|
|
@@ -16,25 +17,19 @@ module Karafka
|
|
|
16
17
|
# Adds all the needed extra functionalities to the minitest group
|
|
17
18
|
# @param base [Class] Minitest example group we want to extend
|
|
18
19
|
def included(base)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
@_karafka_consumer_client = Karafka::Testing::SpecConsumerClient.new
|
|
23
|
-
@_karafka_producer_client = Karafka::Testing::SpecProducerClient.new(self)
|
|
20
|
+
base.class_eval do
|
|
21
|
+
setup do
|
|
22
|
+
Karafka::Testing.ensure_karafka_initialized!
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
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)
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
@_karafka_consumer_messages.clear
|
|
30
|
+
@_karafka_producer_client.reset
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
base.class_eval do
|
|
33
|
-
before(&eval_flow)
|
|
34
|
-
end
|
|
35
|
-
else
|
|
36
|
-
base.class_eval do
|
|
37
|
-
setup(&eval_flow)
|
|
32
|
+
Karafka.producer.stubs(:client).returns(@_karafka_producer_client)
|
|
38
33
|
end
|
|
39
34
|
end
|
|
40
35
|
end
|
|
@@ -135,10 +130,10 @@ module Karafka
|
|
|
135
130
|
# @return [Hash] message default options
|
|
136
131
|
def _karafka_message_metadata_defaults
|
|
137
132
|
{
|
|
138
|
-
|
|
133
|
+
deserializers: @consumer.topic.deserializers,
|
|
139
134
|
timestamp: Time.now,
|
|
140
|
-
|
|
141
|
-
|
|
135
|
+
raw_headers: {},
|
|
136
|
+
raw_key: nil,
|
|
142
137
|
offset: @_karafka_consumer_messages.size,
|
|
143
138
|
partition: 0,
|
|
144
139
|
received_at: Time.now,
|
|
@@ -184,6 +179,7 @@ module Karafka
|
|
|
184
179
|
rescue Karafka::Errors::TopicNotFoundError
|
|
185
180
|
nil
|
|
186
181
|
end
|
|
182
|
+
.uniq(&:consumer_group)
|
|
187
183
|
end
|
|
188
184
|
|
|
189
185
|
# Finds subscription groups from the requested consumer group or selects all if no
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'waterdrop'
|
|
4
|
+
require 'karafka/testing'
|
|
4
5
|
require 'karafka/testing/errors'
|
|
5
6
|
require 'karafka/testing/spec_consumer_client'
|
|
6
7
|
require 'karafka/testing/spec_producer_client'
|
|
@@ -30,6 +31,8 @@ module Karafka
|
|
|
30
31
|
base.let(:_karafka_producer_client) { Karafka::Testing::SpecProducerClient.new(self) }
|
|
31
32
|
|
|
32
33
|
base.prepend_before do
|
|
34
|
+
Karafka::Testing.ensure_karafka_initialized!
|
|
35
|
+
|
|
33
36
|
_karafka_consumer_messages.clear
|
|
34
37
|
_karafka_producer_client.reset
|
|
35
38
|
|
|
@@ -144,10 +147,10 @@ module Karafka
|
|
|
144
147
|
# @return [Hash] message default options
|
|
145
148
|
def _karafka_message_metadata_defaults
|
|
146
149
|
{
|
|
147
|
-
|
|
150
|
+
deserializers: consumer.topic.deserializers,
|
|
148
151
|
timestamp: Time.now,
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
raw_headers: {},
|
|
153
|
+
raw_key: nil,
|
|
151
154
|
offset: _karafka_consumer_messages.size,
|
|
152
155
|
partition: 0,
|
|
153
156
|
received_at: Time.now,
|
|
@@ -194,6 +197,7 @@ module Karafka
|
|
|
194
197
|
rescue Karafka::Errors::TopicNotFoundError
|
|
195
198
|
nil
|
|
196
199
|
end
|
|
200
|
+
.uniq(&:consumer_group)
|
|
197
201
|
end
|
|
198
202
|
|
|
199
203
|
# Finds subscription groups from the requested consumer group or selects all if no
|
data/lib/karafka/testing.rb
CHANGED
|
@@ -4,5 +4,32 @@
|
|
|
4
4
|
module Karafka
|
|
5
5
|
# Testing lib module
|
|
6
6
|
module Testing
|
|
7
|
+
class << self
|
|
8
|
+
# Makes sure, that we do not use the testing stubs, etc when Karafka app is not loaded
|
|
9
|
+
#
|
|
10
|
+
# You should never use karafka-testing primitives when framework is not loaded because
|
|
11
|
+
# testing lib stubs certain pieces of Karafka that need to be initialized.
|
|
12
|
+
def ensure_karafka_loaded!
|
|
13
|
+
return if ::Karafka.const_defined?('App', false)
|
|
14
|
+
|
|
15
|
+
raise(
|
|
16
|
+
Karafka::Testing::Errors::KarafkaNotLoadedError,
|
|
17
|
+
'Make sure to load Karafka framework prior to usage of the testing components.'
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# If you do not initialize Karafka always within your specs, do not include/use this lib
|
|
22
|
+
# in places where Karafka would not be loaded.
|
|
23
|
+
def ensure_karafka_initialized!
|
|
24
|
+
ensure_karafka_loaded!
|
|
25
|
+
|
|
26
|
+
return unless Karafka::App.initializing?
|
|
27
|
+
|
|
28
|
+
raise(
|
|
29
|
+
Karafka::Testing::Errors::KarafkaNotInitializedError,
|
|
30
|
+
'Make sure to initialize Karafka framework prior to usage of the testing components.'
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
7
34
|
end
|
|
8
35
|
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
|
+
version: 2.4.0.beta1
|
|
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-
|
|
38
|
+
date: 2024-03-27 00:00:00.000000000 Z
|
|
39
39
|
dependencies:
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: karafka
|
|
@@ -46,7 +46,7 @@ dependencies:
|
|
|
46
46
|
version: 2.3.0
|
|
47
47
|
- - "<"
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 2.
|
|
49
|
+
version: 2.5.0
|
|
50
50
|
type: :runtime
|
|
51
51
|
prerelease: false
|
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -56,21 +56,21 @@ dependencies:
|
|
|
56
56
|
version: 2.3.0
|
|
57
57
|
- - "<"
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: 2.
|
|
59
|
+
version: 2.5.0
|
|
60
60
|
- !ruby/object:Gem::Dependency
|
|
61
61
|
name: waterdrop
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements:
|
|
64
64
|
- - ">="
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
version: 2.
|
|
66
|
+
version: 2.7.0.beta2
|
|
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.
|
|
73
|
+
version: 2.7.0.beta2
|
|
74
74
|
description: Library which provides helpers for easier Karafka consumers tests
|
|
75
75
|
email:
|
|
76
76
|
- contact@karafka.io
|
|
@@ -124,7 +124,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
124
124
|
requirements:
|
|
125
125
|
- - ">="
|
|
126
126
|
- !ruby/object:Gem::Version
|
|
127
|
-
version:
|
|
127
|
+
version: 3.0.0
|
|
128
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
129
|
requirements:
|
|
130
130
|
- - ">="
|
metadata.gz.sig
CHANGED
|
Binary file
|