karafka-testing 2.3.3 → 2.4.2
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/.ruby-version +1 -1
- data/CHANGELOG.md +9 -1
- data/Gemfile.lock +13 -13
- data/karafka-testing.gemspec +4 -2
- data/lib/karafka/testing/errors.rb +11 -1
- data/lib/karafka/testing/minitest/helpers.rb +8 -5
- data/lib/karafka/testing/rspec/helpers.rb +7 -4
- data/lib/karafka/testing/version.rb +1 -1
- data/lib/karafka/testing.rb +27 -0
- data.tar.gz.sig +0 -0
- metadata +10 -10
- 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: 6aecdc81babc8c73c80c65934abb2dfcddd59a919228cf0a62afe4fa787c7e68
|
|
4
|
+
data.tar.gz: 1be6197c9e2f9186b8e56e176351254eb54726166cfdf4ebbd2ee48836c08048
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7a2ec5091955cafed3cafcd29407ac8ac38b90c378c2a950fd9ad7690582c9a1b7553ad64bbd0763783ecda5b75d507f821f8f6555fe81c665b4cf78c0b175e3
|
|
7
|
+
data.tar.gz: 406958b6a7c9ee99e446ebe33564a7ebb9e87c50384c89fc7b855ff280c68b51e15b2f3d50f0daa14faefcd58caed8bc0028a0bdb68cb3d26697dc49b2a54aab
|
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/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.3.
|
|
1
|
+
3.3.1
|
data/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
# Karafka Test gem changelog
|
|
2
2
|
|
|
3
|
-
## 2.
|
|
3
|
+
## 2.4.2 (2024-06-30)
|
|
4
|
+
- [Fix] Fix FrozenError when accessing key and headers in `Karafka::Messages::Metadata` (tldn0718)
|
|
5
|
+
|
|
6
|
+
## 2.4.1 (2024-06-29)
|
|
7
|
+
- [Fix] Fix instance variable in minitest helper (tldn0718)
|
|
8
|
+
|
|
9
|
+
## 2.4.0 (2024-04-26)
|
|
10
|
+
- **[Breaking]** Drop Ruby `2.7` support.
|
|
4
11
|
- [Refactor] Extract common components for Minitest and RSpec.
|
|
12
|
+
- [Fix] Support again `require: false` on gem loading.
|
|
5
13
|
- [Fix] Fix a case where multiplexed SG would fail with `TopicInManyConsumerGroupsError`
|
|
6
14
|
|
|
7
15
|
## 2.3.2 (2024-04-03)
|
data/Gemfile.lock
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
karafka-testing (2.
|
|
5
|
-
karafka (>= 2.
|
|
6
|
-
waterdrop (>= 2.
|
|
4
|
+
karafka-testing (2.4.2)
|
|
5
|
+
karafka (>= 2.4.0, < 2.5.0)
|
|
6
|
+
waterdrop (>= 2.7.0)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
11
|
ffi (1.16.3)
|
|
12
|
-
karafka (2.
|
|
13
|
-
karafka-core (>= 2.
|
|
14
|
-
waterdrop (>= 2.
|
|
12
|
+
karafka (2.4.0)
|
|
13
|
+
karafka-core (>= 2.4.0, < 2.5.0)
|
|
14
|
+
waterdrop (>= 2.7.0, < 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)
|
|
17
|
+
karafka-rdkafka (>= 0.15.0, < 0.16.0)
|
|
18
|
+
karafka-rdkafka (0.15.0)
|
|
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
|
|
24
|
-
waterdrop (2.
|
|
25
|
-
karafka-core (>= 2.
|
|
23
|
+
rake (13.2.1)
|
|
24
|
+
waterdrop (2.7.0)
|
|
25
|
+
karafka-core (>= 2.4.0, < 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.
|
|
37
|
+
2.5.7
|
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.
|
|
28
|
-
spec.add_dependency 'waterdrop', '>= 2.
|
|
27
|
+
spec.add_dependency 'karafka', '>= 2.4.0', '< 2.5.0'
|
|
28
|
+
spec.add_dependency 'waterdrop', '>= 2.7.0'
|
|
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/helpers'
|
|
5
6
|
require 'karafka/testing/spec_consumer_client'
|
|
@@ -18,6 +19,8 @@ module Karafka
|
|
|
18
19
|
# @param base [Class] Minitest example group we want to extend
|
|
19
20
|
def included(base)
|
|
20
21
|
eval_flow = lambda do
|
|
22
|
+
Karafka::Testing.ensure_karafka_initialized!
|
|
23
|
+
|
|
21
24
|
@karafka = Karafka::Testing::Minitest::Proxy.new(self)
|
|
22
25
|
@_karafka_consumer_messages = []
|
|
23
26
|
@_karafka_consumer_client = Karafka::Testing::SpecConsumerClient.new
|
|
@@ -97,7 +100,7 @@ module Karafka
|
|
|
97
100
|
# Add this message to previously produced messages
|
|
98
101
|
@_karafka_consumer_messages << Karafka::Messages::Message.new(
|
|
99
102
|
message[:payload],
|
|
100
|
-
Karafka::Messages::Metadata.new(metadata)
|
|
103
|
+
Karafka::Messages::Metadata.new(metadata)
|
|
101
104
|
)
|
|
102
105
|
# Update batch metadata
|
|
103
106
|
batch_metadata = Karafka::Messages::Builders::BatchMetadata.call(
|
|
@@ -136,10 +139,10 @@ module Karafka
|
|
|
136
139
|
# @return [Hash] message default options
|
|
137
140
|
def _karafka_message_metadata_defaults
|
|
138
141
|
{
|
|
139
|
-
|
|
142
|
+
deserializers: @consumer.topic.deserializers,
|
|
140
143
|
timestamp: Time.now,
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
raw_headers: {},
|
|
145
|
+
raw_key: nil,
|
|
143
146
|
offset: @_karafka_consumer_messages.size,
|
|
144
147
|
partition: 0,
|
|
145
148
|
received_at: Time.now,
|
|
@@ -160,7 +163,7 @@ module Karafka
|
|
|
160
163
|
# Inject appropriate strategy so needed options and components are available
|
|
161
164
|
strategy = Karafka::App.config.internal.processing.strategy_selector.find(topic)
|
|
162
165
|
@consumer.singleton_class.include(strategy)
|
|
163
|
-
@consumer.client = @
|
|
166
|
+
@consumer.client = @_karafka_consumer_client
|
|
164
167
|
@consumer.coordinator = coordinators.find_or_create(topic.name, 0)
|
|
165
168
|
@consumer.coordinator.seek_offset = 0
|
|
166
169
|
# Indicate usage as for tests no direct enqueuing happens
|
|
@@ -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/helpers'
|
|
6
7
|
require 'karafka/testing/spec_consumer_client'
|
|
@@ -31,6 +32,8 @@ module Karafka
|
|
|
31
32
|
base.let(:_karafka_producer_client) { Karafka::Testing::SpecProducerClient.new(self) }
|
|
32
33
|
|
|
33
34
|
base.prepend_before do
|
|
35
|
+
Karafka::Testing.ensure_karafka_initialized!
|
|
36
|
+
|
|
34
37
|
_karafka_consumer_messages.clear
|
|
35
38
|
_karafka_producer_client.reset
|
|
36
39
|
|
|
@@ -105,7 +108,7 @@ module Karafka
|
|
|
105
108
|
# Add this message to previously produced messages
|
|
106
109
|
_karafka_consumer_messages << Karafka::Messages::Message.new(
|
|
107
110
|
message[:payload],
|
|
108
|
-
Karafka::Messages::Metadata.new(metadata)
|
|
111
|
+
Karafka::Messages::Metadata.new(metadata)
|
|
109
112
|
)
|
|
110
113
|
|
|
111
114
|
# Update batch metadata
|
|
@@ -145,10 +148,10 @@ module Karafka
|
|
|
145
148
|
# @return [Hash] message default options
|
|
146
149
|
def _karafka_message_metadata_defaults
|
|
147
150
|
{
|
|
148
|
-
|
|
151
|
+
deserializers: consumer.topic.deserializers,
|
|
149
152
|
timestamp: Time.now,
|
|
150
|
-
|
|
151
|
-
|
|
153
|
+
raw_headers: {},
|
|
154
|
+
raw_key: nil,
|
|
152
155
|
offset: _karafka_consumer_messages.size,
|
|
153
156
|
partition: 0,
|
|
154
157
|
received_at: Time.now,
|
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.2
|
|
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-04-
|
|
38
|
+
date: 2024-04-30 00:00:00.000000000 Z
|
|
39
39
|
dependencies:
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: karafka
|
|
@@ -43,34 +43,34 @@ dependencies:
|
|
|
43
43
|
requirements:
|
|
44
44
|
- - ">="
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 2.
|
|
46
|
+
version: 2.4.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
|
|
53
53
|
requirements:
|
|
54
54
|
- - ">="
|
|
55
55
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: 2.
|
|
56
|
+
version: 2.4.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
|
|
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
|
|
74
74
|
description: Library which provides helpers for easier Karafka consumers tests
|
|
75
75
|
email:
|
|
76
76
|
- contact@karafka.io
|
|
@@ -125,14 +125,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
125
125
|
requirements:
|
|
126
126
|
- - ">="
|
|
127
127
|
- !ruby/object:Gem::Version
|
|
128
|
-
version:
|
|
128
|
+
version: 3.0.0
|
|
129
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
requirements:
|
|
131
131
|
- - ">="
|
|
132
132
|
- !ruby/object:Gem::Version
|
|
133
133
|
version: '0'
|
|
134
134
|
requirements: []
|
|
135
|
-
rubygems_version: 3.5.
|
|
135
|
+
rubygems_version: 3.5.9
|
|
136
136
|
signing_key:
|
|
137
137
|
specification_version: 4
|
|
138
138
|
summary: Library which provides helpers for easier Karafka consumers tests
|
metadata.gz.sig
CHANGED
|
Binary file
|