receptor_controller-client 0.0.4 → 0.0.9

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: 7e0fca40eecf936d8ef48f10f5ff0a9c0a8f285496d504a4942b85f5ad43b679
4
- data.tar.gz: c48de26017a7f7b2193d13603abe1ebfafaf55974efd1e1cc5700e89b3097394
3
+ metadata.gz: e823afbcd50c71fe25cbcc19a828b3e7824128fde0399f4baf6723abba8f1914
4
+ data.tar.gz: 92b63586cb4af841dc414a88ef3402cc1755b80dbbba153432d401f244eef6cf
5
5
  SHA512:
6
- metadata.gz: 9cabdb3d3176a0d6591a4b4fb06422481cf51f248edf669db455fc9f1ab9a98c19887d2b3b4780568be92058477d424164c158f49bc5ec9afbe1630becd273d6
7
- data.tar.gz: fbe4d361bb3dfff586d6e6da8391623a5a92fcdc224a15c6c3ace6379105748562b6bc87f360d84556170b271298b3661985b88bddd3b8d8fe9ab60e0e8f4e6c
6
+ metadata.gz: e39101cf83fa1eedb41283089272d0b2eda3513caa6de909b20955b573c46879f04a7fbc3e6d66482a61310650590752c6ea79dd1b0eab988cfa6ff1ac74d63a
7
+ data.tar.gz: 7ab770c3b989a310002baee1895b6fb05303c462fd3fd39ba6edfb5fea2fec84d44163e1038ac0a171a96e0503e0a129f6652dd6f1f665ded24b129bc4f5834e
data/CHANGELOG.md CHANGED
@@ -5,6 +5,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
+ ## [0.0.9]
9
+ - Fix rubocop yaml #39
10
+ - Configurable Receptor Client ID header #38
11
+
12
+ ## [0.0.8]
13
+ - Fix LOG_ALL_RECEPTOR_MESSAGES check #34
14
+ - Fix Directives with PSK header #33
15
+
16
+ ## [0.0.7]
17
+ - rdkafka changes #32
18
+
19
+ ## [0.0.6]
20
+ - Waiting for response-worker kafka init #20
21
+ - Fix href_slug in directives log #29
22
+
23
+ ## [0.0.5] - 2020-08-11
24
+ ### Added
25
+ - Unique Persist-ref for every response worker #18
8
26
 
9
27
  ## [0.0.4] - 2020-08-04
10
28
  ### Added
@@ -20,7 +38,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
20
38
  ### Added
21
39
  - Added extra logging for messages
22
40
 
23
- [Unreleased]: https://github.com/RedHatInsights/receptor_controller-client-ruby/compare/v0.0.4...HEAD
24
- [0.0.4]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.4
25
- [0.0.3]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.3
26
- [0.0.2]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.2
41
+ [Unreleased]: https://github.com/RedHatInsights/receptor_controller-client-ruby/compare/v0.0.9.freeze...HEAD
42
+ [0.0.9]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.9.freeze
43
+ [0.0.8]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.8.freeze
44
+ [0.0.7]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.7.freeze
45
+ [0.0.6]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.6.freeze
46
+ [0.0.5]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.5.freeze
47
+ [0.0.4]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.4.freeze
48
+ [0.0.3]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.3.freeze
49
+ [0.0.2]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.2.freeze
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ReceptorController::Client
2
2
 
3
- [![Build Status](https://travis-ci.org/RedHatInsights/receptor_controller-client-ruby.svg?branch=master)](https://travis-ci.org/RedHatInsights/receptor_controller-client-ruby)
3
+ [![Build Status](https://travis-ci.com/RedHatInsights/receptor_controller-client-ruby.svg?branch=master)](https://travis-ci.com/RedHatInsights/receptor_controller-client-ruby)
4
4
  [![Maintainability](https://api.codeclimate.com/v1/badges/cb9e7859bcda536345f8/maintainability)](https://codeclimate.com/github/RedHatInsights/receptor_controller-client-ruby/maintainability)
5
5
  [![Test Coverage](https://api.codeclimate.com/v1/badges/cb9e7859bcda536345f8/test_coverage)](https://codeclimate.com/github/RedHatInsights/receptor_controller-client-ruby/test_coverage)
6
6
  [![security](https://hakiri.io/github/RedHatInsights/receptor_controller-client-ruby/master.svg)](https://hakiri.io/github/RedHatInsights/receptor_controller-client-ruby/master)
@@ -83,7 +83,7 @@ module ReceptorController
83
83
  if config.pre_shared_key.present? && account.present?
84
84
  {
85
85
  'x-rh-receptor-controller-psk' => config.pre_shared_key,
86
- 'x-rh-receptor-controller-client-id' => "topological-inventory",
86
+ 'x-rh-receptor-controller-client-id' => config.client_id_header,
87
87
  'x-rh-receptor-controller-account' => account
88
88
  }
89
89
  else
@@ -1,5 +1,8 @@
1
1
  module ReceptorController
2
2
  class Client::Configuration
3
+
4
+ # x-rh-receptor-controller-client-id header for authentication with receptor controller (replaces x-rh-identity)
5
+ attr_reader :client_id_header
3
6
  # Scheme of cloud receptor controller
4
7
  attr_reader :controller_scheme
5
8
  # Host name of cloud receptor controller
@@ -10,7 +13,7 @@ module ReceptorController
10
13
  # Path to sending directive requests
11
14
  attr_accessor :job_path
12
15
 
13
- # x-rh-rbac-psk header for authentication with receptor controller (replaces x-rh-identity)
16
+ # x-rh-receptor-controller-psk header for authentication with receptor controller (replaces x-rh-identity)
14
17
  attr_accessor :pre_shared_key
15
18
 
16
19
  # Kafka message auto-ack (default false)
@@ -38,11 +41,12 @@ module ReceptorController
38
41
  @connection_status_path = '/connection/status'
39
42
  @job_path = '/job'
40
43
  @pre_shared_key = nil
44
+ @client_id_header = 'topological-inventory'
41
45
 
42
46
  @queue_auto_ack = true
43
47
  @queue_host = nil
44
48
  @queue_max_bytes = nil
45
- @queue_persist_ref = nil
49
+ @queue_persist_ref = "receptor-client.#{SecureRandom.uuid}"
46
50
  @queue_port = nil
47
51
  @queue_topic = 'platform.receptor-controller.responses'
48
52
 
@@ -20,7 +20,7 @@ module ReceptorController
20
20
 
21
21
  msg_id = JSON.parse(response.body)['id']
22
22
 
23
- logger.debug("Receptor response: registering message #{msg_id}".tap { |msg| msg << " req: #{body[:payload]}" if ENV["LOG_ALL_RECEPTOR_MESSAGES"]&.to_i != 0 })
23
+ logger.debug("Receptor response [#{ReceptorController::Client::Configuration.default.queue_persist_ref}]: registering message #{msg_id}, href_slug: #{log_message_common}")
24
24
  # registers message id for kafka responses
25
25
  response_worker.register_message(msg_id, self)
26
26
  wait_for_response(msg_id)
@@ -74,7 +74,7 @@ module ReceptorController
74
74
  attr_accessor :response_data, :response_exception, :response_lock, :response_waiting
75
75
 
76
76
  def connection
77
- @connection ||= Faraday.new(config.controller_url, :headers => client.headers) do |c|
77
+ @connection ||= Faraday.new(config.controller_url, :headers => client.headers(account)) do |c|
78
78
  c.use(Faraday::Response::RaiseError)
79
79
  c.adapter(Faraday.default_adapter)
80
80
  end
@@ -42,12 +42,13 @@ module ReceptorController
42
42
 
43
43
  # Entrypoint for request
44
44
  def call(body = default_body)
45
- response = Faraday.post(config.job_url, body.to_json, client.headers)
45
+ response = Faraday.post(config.job_url, body.to_json, client.headers(account))
46
46
  if response.success?
47
47
  msg_id = JSON.parse(response.body)['id']
48
48
 
49
49
  # registers message id for kafka responses
50
50
  response_worker.register_message(msg_id, self)
51
+ logger.debug("Receptor response [#{ReceptorController::Client::Configuration.default.queue_persist_ref}]: registering message #{msg_id}, href_slug: #{log_message_common}")
51
52
 
52
53
  msg_id
53
54
  else
@@ -1,3 +1,4 @@
1
+ require 'active_support/notifications'
1
2
  require 'base64'
2
3
  require "concurrent"
3
4
  require 'stringio'
@@ -20,6 +21,7 @@ module ReceptorController
20
21
  class Client::ResponseWorker
21
22
  EOF = "eof".freeze
22
23
  RESPONSE = "response".freeze
24
+ INITIALIZATION_TIMEOUT = 20
23
25
 
24
26
  attr_reader :started
25
27
  alias started? started
@@ -39,13 +41,19 @@ module ReceptorController
39
41
 
40
42
  # Start listening on Kafka
41
43
  def start
44
+ init_lock, init_wait = Mutex.new, ConditionVariable.new
45
+
42
46
  lock.synchronize do
43
47
  return if started.value
44
48
 
49
+ default_messaging_opts # Thread-safe init
50
+
45
51
  started.value = true
46
52
  workers[:maintenance] = Thread.new { check_timeouts while started.value }
47
53
  workers[:listener] = Thread.new { listen while started.value }
48
54
  end
55
+
56
+ logger.info("Receptor Response worker started...")
49
57
  end
50
58
 
51
59
  # Stop listener
@@ -84,12 +92,11 @@ module ReceptorController
84
92
  # Open a connection to the messaging service
85
93
  client = ManageIQ::Messaging::Client.open(default_messaging_opts)
86
94
 
87
- logger.info("Receptor Response worker started...")
88
95
  client.subscribe_topic(queue_opts) do |message|
89
96
  process_message(message)
90
97
  end
91
98
  rescue => err
92
- logger.error("Exception in kafka listener: #{err}\n#{err.backtrace.join("\n")}")
99
+ logger.error(response_log("Exception in kafka listener: #{err}\n#{err.backtrace.join("\n")}"))
93
100
  ensure
94
101
  client&.close
95
102
  end
@@ -98,8 +105,10 @@ module ReceptorController
98
105
  response = JSON.parse(message.payload)
99
106
 
100
107
  if (message_id = response['in_response_to'])
101
- logger.debug("Receptor response for message #{message_id}: serial: #{response["serial"]}, type: #{response['message_type']}, payload: #{response['payload'] || "n/a"}")
102
- if (callbacks = registered_messages[message_id]).present?
108
+ callbacks = registered_messages[message_id]
109
+ log_received_message(callbacks, message_id, response)
110
+
111
+ if callbacks.present?
103
112
  # Reset last_checked_at to avoid timeout in multi-response messages
104
113
  reset_last_checked_at(callbacks)
105
114
 
@@ -121,6 +130,7 @@ module ReceptorController
121
130
  callbacks[:receiver].send(callbacks[:response_callback], message_id, message_type, payload)
122
131
  else
123
132
  # Send the callback to release the thread.
133
+ logger.warn(response_log("Unexpected type | message #{message_id}, type: #{message_type}"))
124
134
  callbacks[:receiver].send(callbacks[:response_callback], message_id, message_type, payload)
125
135
  end
126
136
 
@@ -128,31 +138,31 @@ module ReceptorController
128
138
  if callbacks[:received_msgs] == callbacks[:total_msgs]
129
139
  registered_messages.delete(message_id)
130
140
  callbacks[:receiver].send(callbacks[:response_callback], message_id, EOF, payload)
131
- logger.debug("Receptor Message #{message_id} complete, total bytes: #{callbacks[:msg_size]}")
141
+ logger.debug(response_log("Message #{message_id} complete, total bytes: #{callbacks[:msg_size]}"))
132
142
  end
133
143
 
134
- logger.debug("Receptor response: OK | message: #{message_id}, serial: #{response["serial"]}, type: #{message_type}, payload: #{payload || "n/a"}")
144
+ logger.debug(response_log("OK | message: #{message_id}, serial: #{response["serial"]}, type: #{message_type}, payload: #{payload || "n/a"}"))
135
145
  else
136
146
  #
137
147
  # Response Error
138
148
  #
139
149
  registered_messages.delete(message_id)
140
150
 
141
- logger.error("Receptor response: ERROR | message #{message_id} (#{response})")
151
+ logger.error(response_log("ERROR | message #{message_id} (#{response})"))
142
152
 
143
153
  callbacks[:receiver].send(callbacks[:error_callback], message_id, response['code'], response['payload'])
144
154
  end
145
- elsif ENV["LOG_ALL_RECEPTOR_MESSAGES"]&.to_i != 0
155
+ elsif (ENV["LOG_ALL_RECEPTOR_MESSAGES"] || 0)&.to_i != 0
146
156
  # noop, it's not error if not registered, can be processed by another pod
147
- logger.debug("Receptor response unhandled: #{message_id} (#{response['code']})")
157
+ logger.debug(response_log("NOT REGISTERED | #{message_id} (#{response['code']})"))
148
158
  end
149
159
  else
150
- logger.error("Receptor response: Message id (in_response_to) not received! #{response}")
160
+ logger.error(response_log("MISSING | Message id (in_response_to) not received! #{response}"))
151
161
  end
152
162
  rescue JSON::ParserError => e
153
- logger.error("Receptor response: Failed to parse Kafka response (#{e.message})\n#{message.payload}")
163
+ logger.error(response_log("Failed to parse Kafka response (#{e.message})\n#{message.payload}"))
154
164
  rescue => e
155
- logger.error("Receptor response: #{e}\n#{e.backtrace.join("\n")}")
165
+ logger.error(response_log("#{e}\n#{e.backtrace.join("\n")}"))
156
166
  ensure
157
167
  message.ack unless config.queue_auto_ack
158
168
  end
@@ -213,21 +223,37 @@ module ReceptorController
213
223
  end
214
224
 
215
225
  # No persist_ref here, because all instances (pods) needs to receive kafka message
226
+ # TODO: temporary changed to unique persist_ref
216
227
  def queue_opts
217
- opts = {:service => config.queue_topic,
218
- :auto_ack => config.queue_auto_ack}
219
- opts[:max_bytes] = config.queue_max_bytes if config.queue_max_bytes
220
- opts[:persist_ref] = config.queue_persist_ref if config.queue_persist_ref
221
- opts
228
+ return @queue_opts if @queue_opts
229
+
230
+ @queue_opts = {:service => config.queue_topic,
231
+ :auto_ack => config.queue_auto_ack}
232
+ @queue_opts[:max_bytes] = config.queue_max_bytes if config.queue_max_bytes
233
+ @queue_opts[:persist_ref] = ENV['HOSTNAME']
234
+ @queue_opts
222
235
  end
223
236
 
224
237
  def default_messaging_opts
225
- {
238
+ return @default_messaging_opts if @default_messaging_opts
239
+
240
+ @default_messaging_opts = {
226
241
  :host => config.queue_host,
227
242
  :port => config.queue_port,
228
243
  :protocol => :Kafka,
229
244
  :client_ref => "receptor_client-responses-#{Time.now.to_i}", # A reference string to identify the client
230
245
  }
231
246
  end
247
+
248
+ def log_received_message(callbacks, message_id, response)
249
+ log_all = (ENV["LOG_ALL_RECEPTOR_MESSAGES"] || 0).to_i != 0
250
+ if log_all || (!log_all && callbacks.present?)
251
+ logger.debug(response_log("Received message #{message_id}: serial: #{response["serial"]}, type: #{response['message_type']}, payload: #{response['payload'] || "n/a"}"))
252
+ end
253
+ end
254
+
255
+ def response_log(message)
256
+ "Receptor Response [#{queue_opts[:persist_ref]}]: #{message}"
257
+ end
232
258
  end
233
259
  end
@@ -1,5 +1,5 @@
1
1
  module ReceptorController
2
2
  class Client
3
- VERSION = "0.0.4".freeze
3
+ VERSION = "0.0.9".freeze
4
4
  end
5
5
  end
@@ -19,12 +19,12 @@ Gem::Specification.new do |s|
19
19
  s.license = "Apache-2.0"
20
20
  s.required_ruby_version = ">= 2.5"
21
21
 
22
- s.add_runtime_dependency 'activesupport', '~> 5.2.4.3'
22
+ s.add_runtime_dependency 'activesupport', '~> 5.2'
23
23
  s.add_runtime_dependency 'concurrent-ruby', '~> 1.1', '>= 1.1.6'
24
24
  s.add_runtime_dependency 'faraday', '~> 1.0'
25
25
  s.add_runtime_dependency 'json', '~> 2.3', '>= 2.3.0'
26
- s.add_runtime_dependency 'manageiq-loggers', '~> 0.5.0'
27
- s.add_runtime_dependency 'manageiq-messaging', '~> 0.1.5'
26
+ s.add_runtime_dependency 'manageiq-loggers', '~> 0.5'
27
+ s.add_runtime_dependency 'manageiq-messaging', '~> 1.0.0'
28
28
 
29
29
  s.add_development_dependency 'bundler', '~> 2.0'
30
30
  s.add_development_dependency 'rake', '>= 12.3.3'
data/spec/.yamllint ADDED
@@ -0,0 +1,10 @@
1
+ ---
2
+ ignore: |
3
+
4
+ extends: relaxed
5
+
6
+ rules:
7
+ indentation:
8
+ indent-sequences: false
9
+ line-length:
10
+ max: 120
@@ -7,11 +7,21 @@ RSpec.describe ReceptorController::Client::DirectiveBlocking do
7
7
  let(:identity) do
8
8
  {"x-rh-identity" => Base64.strict_encode64({"identity" => {"account_number" => external_tenant, "user" => {"is_org_admin" => true}, "internal" => {"org_id" => organization_id}}}.to_json)}
9
9
  end
10
- let(:headers) do
10
+ let(:pre_shared_key) { '1234' }
11
+ let(:pre_shared_key_headers) do
12
+ {
13
+ 'x-rh-receptor-controller-psk' => pre_shared_key,
14
+ 'x-rh-receptor-controller-client-id' => "topological-inventory",
15
+ 'x-rh-receptor-controller-account' => external_tenant
16
+ }
17
+ end
18
+ let(:headers_common) do
11
19
  {"Content-Type" => "application/json",
12
20
  "Accept" => "*/*",
13
- "Accept-Encoding" => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3'}.merge(identity)
21
+ "Accept-Encoding" => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3'}
14
22
  end
23
+ let(:headers) { headers_common.merge(identity) }
24
+ let(:headers_psk) { headers_common.merge(pre_shared_key_headers) }
15
25
  let(:receptor_scheme) { 'http' }
16
26
  let(:receptor_host) { 'localhost:9090' }
17
27
  let(:receptor_node) { 'testing-receptor' }
@@ -32,6 +42,10 @@ RSpec.describe ReceptorController::Client::DirectiveBlocking do
32
42
 
33
43
  subject { described_class.new(:name => directive, :account => external_tenant, :node_id => receptor_node, :payload => payload, :client => receptor_client) }
34
44
 
45
+ before do
46
+ allow(subject.response_worker).to receive_messages(:init_notifications => nil, :wait_for_notifications => nil)
47
+ end
48
+
35
49
  describe "#call" do
36
50
  it "makes POST /job request to receptor and registers received message ID" do
37
51
  allow(subject).to receive(:wait_for_response)
@@ -48,6 +62,22 @@ RSpec.describe ReceptorController::Client::DirectiveBlocking do
48
62
  subject.call
49
63
  end
50
64
 
65
+ it "makes POST /job request with PSK headers if set in the config" do
66
+ receptor_config.pre_shared_key = pre_shared_key
67
+ allow(subject).to receive(:wait_for_response)
68
+
69
+ response = {"id" => '1234'}
70
+
71
+ stub_request(:post, "#{receptor_scheme}://#{receptor_host}/job")
72
+ .with(:body => subject.default_body.to_json,
73
+ :headers => headers_psk)
74
+ .to_return(:status => 200, :body => response.to_json, :headers => {})
75
+
76
+ expect(subject.response_worker).to receive(:register_message).with(response['id'], subject)
77
+
78
+ subject.call
79
+ end
80
+
51
81
  it "raises ControllerResponseError if POST /job returns error" do
52
82
  stub_request(:post, "#{receptor_scheme}://#{receptor_host}/job")
53
83
  .with(:body => subject.default_body.to_json,
@@ -6,11 +6,21 @@ RSpec.describe ReceptorController::Client::DirectiveNonBlocking do
6
6
  let(:identity) do
7
7
  {"x-rh-identity" => Base64.strict_encode64({"identity" => {"account_number" => external_tenant, "user" => {"is_org_admin" => true}, "internal" => {"org_id" => organization_id}}}.to_json)}
8
8
  end
9
- let(:headers) do
9
+ let(:pre_shared_key) { '1234' }
10
+ let(:pre_shared_key_headers) do
11
+ {
12
+ 'x-rh-receptor-controller-psk' => pre_shared_key,
13
+ 'x-rh-receptor-controller-client-id' => "topological-inventory",
14
+ 'x-rh-receptor-controller-account' => external_tenant
15
+ }
16
+ end
17
+ let(:headers_common) do
10
18
  {"Content-Type" => "application/json",
11
19
  "Accept" => "*/*",
12
- "Accept-Encoding" => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3'}.merge(identity)
20
+ "Accept-Encoding" => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3'}
13
21
  end
22
+ let(:headers) { headers_common.merge(identity) }
23
+ let(:headers_psk) { headers_common.merge(pre_shared_key_headers) }
14
24
  let(:receptor_scheme) { 'http' }
15
25
  let(:receptor_host) { 'localhost:9090' }
16
26
  let(:receptor_node) { 'testing-receptor' }
@@ -21,7 +31,7 @@ RSpec.describe ReceptorController::Client::DirectiveNonBlocking do
21
31
  end
22
32
  end
23
33
  let(:receptor_client) do
24
- client = ReceptorController::Client.new
34
+ client = ReceptorController::Client.new(:config => receptor_config)
25
35
  client.identity_header = identity
26
36
  client
27
37
  end
@@ -64,6 +74,19 @@ RSpec.describe ReceptorController::Client::DirectiveNonBlocking do
64
74
 
65
75
  expect(subject.call).to be_nil
66
76
  end
77
+
78
+ it "makes a POST request with PSK headers if provided" do
79
+ receptor_config.pre_shared_key = pre_shared_key
80
+
81
+ response = {"id" => '1234'}
82
+
83
+ stub_request(:post, "#{receptor_scheme}://#{receptor_host}/job")
84
+ .with(:body => subject.default_body.to_json,
85
+ :headers => headers_psk)
86
+ .to_return(:status => 200, :body => response.to_json, :headers => {})
87
+
88
+ expect(subject.call).to eq(response['id'])
89
+ end
67
90
  end
68
91
 
69
92
  context "callbacks" do
@@ -9,7 +9,13 @@ RSpec.describe ReceptorController::Client::ResponseWorker do
9
9
 
10
10
  before do
11
11
  allow(logger).to receive_messages(%i[debug info warn error fatal])
12
- allow(config).to receive_messages(:queue_auto_ack => false, :response_timeout => 0, :response_timeout_poll_time => 0)
12
+ allow(config).to receive_messages(:queue_auto_ack => false,
13
+ :queue_max_bytes => nil,
14
+ :queue_persist_ref => 'consumer-group-1',
15
+ :queue_topic => 'receptor.kafka.topic',
16
+ :response_timeout => 0,
17
+ :response_timeout_poll_time => 0,
18
+ )
13
19
  end
14
20
 
15
21
  describe "#register_message" do
@@ -87,7 +93,7 @@ RSpec.describe ReceptorController::Client::ResponseWorker do
87
93
  end
88
94
 
89
95
  it "logs error" do
90
- expect(logger).to receive(:error).with(/Receptor response: Failed to parse Kafka response/)
96
+ expect(logger).to receive(:error).with(/Failed to parse Kafka response/)
91
97
 
92
98
  subject.send(:process_message, message)
93
99
  end
@@ -97,7 +103,7 @@ RSpec.describe ReceptorController::Client::ResponseWorker do
97
103
  let(:payload) { {'code' => 0, 'message_type' => 'response', 'payload' => response_body} }
98
104
 
99
105
  it "logs error" do
100
- expect(logger).to receive(:error).with(/Receptor response: Message id \(in_response_to\) not received!/)
106
+ expect(logger).to receive(:error).with(/Message id \(in_response_to\) not received!/)
101
107
 
102
108
  subject.send(:process_message, message)
103
109
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: receptor_controller-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Slemr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-04 00:00:00.000000000 Z
11
+ date: 2021-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.4.3
19
+ version: '5.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 5.2.4.3
26
+ version: '5.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: concurrent-ruby
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -84,28 +84,28 @@ dependencies:
84
84
  requirements:
85
85
  - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: 0.5.0
87
+ version: '0.5'
88
88
  type: :runtime
89
89
  prerelease: false
90
90
  version_requirements: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
- version: 0.5.0
94
+ version: '0.5'
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: manageiq-messaging
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: 0.1.5
101
+ version: 1.0.0
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
- version: 0.1.5
108
+ version: 1.0.0
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: bundler
111
111
  requirement: !ruby/object:Gem::Requirement
@@ -232,6 +232,7 @@ files:
232
232
  - lib/receptor_controller/client/response_worker.rb
233
233
  - lib/receptor_controller/client/version.rb
234
234
  - receptor_controller-client.gemspec
235
+ - spec/.yamllint
235
236
  - spec/receptor_controller/client_spec.rb
236
237
  - spec/receptor_controller/directive_blocking_spec.rb
237
238
  - spec/receptor_controller/directive_non_blocking_spec.rb
@@ -256,13 +257,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
256
257
  - !ruby/object:Gem::Version
257
258
  version: '0'
258
259
  requirements: []
259
- rubygems_version: 3.0.3
260
+ rubygems_version: 3.0.3.1
260
261
  signing_key:
261
262
  specification_version: 4
262
263
  summary: Client for communication with Platform Receptor Controller - Gem
263
264
  test_files:
265
+ - spec/receptor_controller/directive_non_blocking_spec.rb
264
266
  - spec/receptor_controller/directive_blocking_spec.rb
265
267
  - spec/receptor_controller/response_worker_spec.rb
266
268
  - spec/receptor_controller/client_spec.rb
267
- - spec/receptor_controller/directive_non_blocking_spec.rb
268
269
  - spec/spec_helper.rb