elasticsearch-transport 7.14.0 → 7.14.1.pre

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88ee4e1ccbc2d04cc4e6581a80f8ab3e0ab8f09eae398eeacd395709eb103c40
4
- data.tar.gz: b0314674f2e91da921549f4694a1e885d0cf51b5ca7ef9201aef3f063243c346
3
+ metadata.gz: 69804f86ed3bff5b4277e47adb97b727e3324cc2f5a7a7da2155266433d29b39
4
+ data.tar.gz: 4ed9685fca9531e8caff5396cfefe5b7f2e429b2b9b2a48dc325e73d3bae7c9f
5
5
  SHA512:
6
- metadata.gz: 95a622b3a2e4ab25c5b9eb4e35fab83b6dd7aae8896ccbfe75ad5c52c1f6b7b3ffe04582d5b6106c4c6f2ea9a3e9cbc7b8a6182a58fd5c1a0c1b65168547b35b
7
- data.tar.gz: 8d59c0dfd2bd0de4744e59ebba0d6e600bbd39f8e13486e901fb4e01f6a221477c7dd0205f3201767b26dd5ec5d0c6133210fb4a7aba37553f1c4ed4c5f56d08
6
+ metadata.gz: b958fb03c5494824be0c6683c751ec22cdac5d7cf270824ba62e746b93abbefc9ede940955408e8f228adb424f78364cd7452e28c965019476a65854026ad07a
7
+ data.tar.gz: b2f73320b43a84a8bb1de43c6afa9d37fa162d48fe587c7a9b8b78fd3c4a010c240f6f160ccbc596bb0e393d5279aa913fa930d46e6ced540ec2b5b6982c8781
@@ -63,6 +63,7 @@ module Elasticsearch
63
63
  include Base
64
64
 
65
65
  def initialize(arguments={}, &block)
66
+ @request_options = { headers: (arguments.dig(:transport_options, :headers) || {}) }
66
67
  @manticore = build_client(arguments[:options] || {})
67
68
  super(arguments, &block)
68
69
  end
@@ -109,7 +110,6 @@ module Elasticsearch
109
110
  # @return [Connections::Collection]
110
111
  #
111
112
  def __build_connections
112
- @request_options = {}
113
113
  apply_headers(@request_options, options[:transport_options])
114
114
  apply_headers(@request_options, options)
115
115
 
@@ -155,11 +155,11 @@ module Elasticsearch
155
155
  private
156
156
 
157
157
  def apply_headers(request_options, options)
158
- headers = (options && options[:headers]) || {}
158
+ headers = options&.[](:headers) || {}
159
159
  headers[CONTENT_TYPE_STR] = find_value(headers, CONTENT_TYPE_REGEX) || DEFAULT_CONTENT_TYPE
160
160
  headers[USER_AGENT_STR] = find_value(headers, USER_AGENT_REGEX) || user_agent_header
161
161
  headers[ACCEPT_ENCODING] = GZIP if use_compression?
162
- request_options.merge!(headers: headers)
162
+ request_options[:headers].merge!(headers)
163
163
  end
164
164
 
165
165
  def user_agent_header
@@ -17,6 +17,6 @@
17
17
 
18
18
  module Elasticsearch
19
19
  module Transport
20
- VERSION = '7.14.0'.freeze
20
+ VERSION = '7.14.1.pre'.freeze
21
21
  end
22
22
  end
@@ -17,166 +17,235 @@
17
17
 
18
18
  require 'test_helper'
19
19
 
20
- unless JRUBY
21
- version = ( defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'Ruby' ) + ' ' + RUBY_VERSION
22
- puts "SKIP: '#{File.basename(__FILE__)}' only supported on JRuby (you're running #{version})"
23
- else
20
+ if JRUBY
24
21
  require 'elasticsearch/transport/transport/http/manticore'
25
22
  require 'manticore'
26
23
 
27
- class Elasticsearch::Transport::Transport::HTTP::ManticoreTest < Minitest::Test
28
- include Elasticsearch::Transport::Transport::HTTP
29
-
30
- context "Manticore transport" do
31
- setup do
32
- @transport = Manticore.new :hosts => [ { :host => '127.0.0.1', :port => 8080 } ]
33
- end
34
-
35
- should "implement host_unreachable_exceptions" do
36
- assert_instance_of Array, @transport.host_unreachable_exceptions
37
- end
38
-
39
- should "implement __build_connections" do
40
- assert_equal 1, @transport.hosts.size
41
- assert_equal 1, @transport.connections.size
42
-
43
- assert_instance_of ::Manticore::Client, @transport.connections.first.connection
44
- end
45
-
46
- should "not close connections in __close_connections" do
47
- assert_equal 1, @transport.connections.size
48
- @transport.__close_connections
49
- assert_equal 1, @transport.connections.size
50
- end
51
-
52
- should "perform the request" do
53
- @transport.connections.first.connection.expects(:get).returns(stub_everything)
54
- @transport.perform_request 'GET', '/'
55
- end
56
-
57
- should "set body for GET request" do
58
- @transport.connections.first.connection.expects(:get).
59
- with('http://127.0.0.1:8080/', {:body => '{"foo":"bar"}',
60
- :headers => {"Content-Type" => "application/json",
61
- "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
62
- @transport.perform_request 'GET', '/', {}, '{"foo":"bar"}'
63
- end
64
-
65
- should "set body for PUT request" do
66
- @transport.connections.first.connection.expects(:put).
67
- with('http://127.0.0.1:8080/', {:body => '{"foo":"bar"}',
68
- :headers => {"Content-Type" => "application/json",
69
- "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
70
- @transport.perform_request 'PUT', '/', {}, {:foo => 'bar'}
71
- end
72
-
73
- should "serialize the request body" do
74
- @transport.connections.first.connection.expects(:post).
75
- with('http://127.0.0.1:8080/', {:body => '{"foo":"bar"}',
76
- :headers => {"Content-Type" => "application/json",
77
- "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
78
- @transport.perform_request 'POST', '/', {}, {'foo' => 'bar'}
79
- end
80
-
81
- should "set custom headers for PUT request" do
82
- @transport.connections.first.connection.expects(:put).
83
- with('http://127.0.0.1:8080/', {:body => '{"foo":"bar"}',
84
- :headers => {"Content-Type" => "application/json",
85
- "User-Agent" => @transport.send(:user_agent_header)}})
86
- .returns(stub_everything)
87
- @transport.perform_request 'PUT', '/', {}, '{"foo":"bar"}', {"Content-Type" => "application/x-ndjson"}
88
- end
89
-
90
- should "not serialize a String request body" do
91
- @transport.connections.first.connection.expects(:post).
92
- with('http://127.0.0.1:8080/', {:body => '{"foo":"bar"}',
93
- :headers => {"Content-Type" => "application/json",
94
- "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
95
- @transport.serializer.expects(:dump).never
96
- @transport.perform_request 'POST', '/', {}, '{"foo":"bar"}'
97
- end
98
-
99
- should "set application/json header" do
100
- options = {
101
- :headers => { "content-type" => "application/json"}
102
- }
103
-
104
- transport = Manticore.new :hosts => [ { :host => 'localhost', :port => 8080 } ], :options => options
105
-
106
- transport.connections.first.connection.stub("http://localhost:8080/", :body => "\"\"", :headers => {"Content-Type" => "application/x-ndjson",
107
- "User-Agent" => @transport.send(:user_agent_header)}, :code => 200 )
108
-
109
- response = transport.perform_request 'GET', '/', {}
110
- assert_equal response.status, 200
111
- end
112
-
113
- should "set headers from 'transport_options'" do
114
- options = {
115
- :transport_options => {
116
- :headers => { "Content-Type" => "foo/bar"}
117
- }
118
- }
119
-
120
- transport = Manticore.new :hosts => [ { :host => 'localhost', :port => 8080 } ], :options => options
121
-
122
- assert_equal('foo/bar', transport.connections.first.connection.instance_variable_get(:@options)[:headers]['Content-Type'])
123
- # TODO: Needs to check @request_options
124
- end
125
-
126
- should "handle HTTP methods" do
127
- @transport.connections.first.connection.expects(:delete).with('http://127.0.0.1:8080/', { headers: {"Content-Type" => "application/json",
128
- "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
129
- @transport.connections.first.connection.expects(:head).with('http://127.0.0.1:8080/', { headers: {"Content-Type" => "application/json",
130
- "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
131
- @transport.connections.first.connection.expects(:get).with('http://127.0.0.1:8080/', { headers: {"Content-Type" => "application/json",
132
- "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
133
- @transport.connections.first.connection.expects(:put).with('http://127.0.0.1:8080/', { headers: {"Content-Type" => "application/json",
134
- "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
135
- @transport.connections.first.connection.expects(:post).with('http://127.0.0.1:8080/', { headers: {"Content-Type" => "application/json",
136
- "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
137
-
138
- %w| HEAD GET PUT POST DELETE |.each { |method| @transport.perform_request method, '/' }
139
-
140
- assert_raise(ArgumentError) { @transport.perform_request 'FOOBAR', '/' }
141
- end
142
-
143
- should "allow to set options for Manticore" do
144
- options = { :headers => {"User-Agent" => "myapp-0.0" }}
145
- transport = Manticore.new :hosts => [ { :host => 'foobar', :port => 1234 } ], :options => options
146
- transport.connections.first.connection
147
- .expects(:get)
148
- .with do |host, _options|
149
- assert_equal 'myapp-0.0', _options[:headers]['User-Agent']
150
- true
24
+ module Elasticsearch
25
+ module Transport
26
+ module Transport
27
+ module HTTP
28
+ class ManticoreTest < Minitest::Test
29
+ include Elasticsearch::Transport::Transport::HTTP
30
+
31
+ def common_headers
32
+ {
33
+ 'Content-Type' => 'application/json',
34
+ 'User-Agent' => @transport.send(:user_agent_header)
35
+ }
36
+ end
37
+
38
+ context 'Manticore transport' do
39
+ setup do
40
+ @transport = Manticore.new(hosts: [{ host: '127.0.0.1', port: 8080 }])
41
+ end
42
+
43
+ should 'implement host_unreachable_exceptions' do
44
+ assert_instance_of Array, @transport.host_unreachable_exceptions
45
+ end
46
+
47
+ should 'implement __build_connections' do
48
+ assert_equal 1, @transport.hosts.size
49
+ assert_equal 1, @transport.connections.size
50
+
51
+ assert_instance_of(::Manticore::Client, @transport.connections.first.connection)
52
+ end
53
+
54
+ should 'not close connections in __close_connections' do
55
+ assert_equal 1, @transport.connections.size
56
+ @transport.__close_connections
57
+ assert_equal 1, @transport.connections.size
58
+ end
59
+
60
+ should 'perform the request' do
61
+ @transport.connections.first.connection.expects(:get).returns(stub_everything)
62
+ response = @transport.perform_request('GET', '/')
63
+ end
64
+
65
+ should 'set body for GET request' do
66
+ @transport.connections.first.connection.expects(:get)
67
+ .with(
68
+ 'http://127.0.0.1:8080/',
69
+ {
70
+ body: '{"foo":"bar"}',
71
+ headers: common_headers
72
+ }
73
+ ).returns(stub_everything)
74
+ @transport.perform_request 'GET', '/', {}, '{"foo":"bar"}'
75
+ end
76
+
77
+ should 'set body for PUT request' do
78
+ @transport.connections.first.connection.expects(:put)
79
+ .with(
80
+ 'http://127.0.0.1:8080/',
81
+ {
82
+ body: '{"foo":"bar"}',
83
+ headers: {
84
+ 'Content-Type' => 'application/json',
85
+ 'User-Agent' => @transport.send(:user_agent_header)
86
+ }
87
+ }
88
+ ).returns(stub_everything)
89
+ @transport.perform_request 'PUT', '/', {}, { foo: 'bar' }
90
+ end
91
+
92
+ should 'serialize the request body' do
93
+ @transport.connections.first.connection.expects(:post)
94
+ .with(
95
+ 'http://127.0.0.1:8080/',
96
+ {
97
+ body: '{"foo":"bar"}',
98
+ headers: {
99
+ 'Content-Type' => 'application/json',
100
+ 'User-Agent' => @transport.send(:user_agent_header)
101
+ }
102
+ }
103
+ ).returns(stub_everything)
104
+ @transport.perform_request 'POST', '/', {}, { 'foo' => 'bar' }
105
+ end
106
+
107
+ should 'set custom headers for PUT request' do
108
+ @transport.connections.first.connection.expects(:put)
109
+ .with(
110
+ 'http://127.0.0.1:8080/',
111
+ {
112
+ body: '{"foo":"bar"}',
113
+ headers: {
114
+ 'Content-Type' => 'application/json',
115
+ 'User-Agent' => @transport.send(:user_agent_header)
116
+ }
117
+ }
118
+ ).returns(stub_everything)
119
+ @transport.perform_request 'PUT', '/', {}, '{"foo":"bar"}', { 'Content-Type' => 'application/x-ndjson' }
120
+ end
121
+
122
+ should 'not serialize a String request body' do
123
+ @transport.connections.first.connection.expects(:post)
124
+ .with(
125
+ 'http://127.0.0.1:8080/',
126
+ {
127
+ body: '{"foo":"bar"}',
128
+ headers: {
129
+ 'Content-Type' => 'application/json',
130
+ 'User-Agent' => @transport.send(:user_agent_header)
131
+ }
132
+ }
133
+ ).returns(stub_everything)
134
+ @transport.serializer.expects(:dump).never
135
+ @transport.perform_request 'POST', '/', {}, '{"foo":"bar"}'
136
+ end
137
+
138
+ should 'set application/json header' do
139
+ options = {
140
+ headers: { 'content-type' => 'application/json' }
141
+ }
142
+
143
+ transport = Manticore.new(hosts: [{ host: 'localhost', port: 8080 }], options: options)
144
+ transport.connections.first.connection.stub(
145
+ 'http://localhost:8080/',
146
+ body: '""',
147
+ headers: {
148
+ 'Content-Type' => 'application/x-ndjson',
149
+ 'User-Agent' => @transport.send(:user_agent_header)
150
+ },
151
+ code: 200
152
+ )
153
+ response = transport.perform_request('GET', '/', {})
154
+ assert_equal response.status, 200
155
+ end
156
+
157
+ should "set headers from 'transport_options'" do
158
+ options = {
159
+ transport_options: {
160
+ headers: { 'Content-Type' => 'foo/bar' }
161
+ }
162
+ }
163
+
164
+ transport = Manticore.new(hosts: [{ host: 'localhost', port: 8080 }], options: options)
165
+
166
+ assert_equal(
167
+ 'foo/bar',
168
+ transport.connections.first.connection.instance_variable_get(:@options)[:headers]['Content-Type']
169
+ )
170
+ # TODO: Needs to check @request_options
171
+ end
172
+
173
+ should 'handle HTTP methods' do
174
+ @transport.connections.first.connection.expects(:delete).with('http://127.0.0.1:8080/', { headers: common_headers }).returns(stub_everything)
175
+ @transport.connections.first.connection.expects(:head).with('http://127.0.0.1:8080/', { headers: common_headers }).returns(stub_everything)
176
+ @transport.connections.first.connection.expects(:get).with('http://127.0.0.1:8080/', { headers: common_headers }).returns(stub_everything)
177
+ @transport.connections.first.connection.expects(:put).with('http://127.0.0.1:8080/', { headers: common_headers }).returns(stub_everything)
178
+ @transport.connections.first.connection.expects(:post).with('http://127.0.0.1:8080/', { headers: common_headers }).returns(stub_everything)
179
+
180
+ %w[HEAD GET PUT POST DELETE].each { |method| @transport.perform_request method, '/' }
181
+
182
+ assert_raise(ArgumentError) { @transport.perform_request 'FOOBAR', '/' }
183
+ end
184
+
185
+ should 'allow to set options for Manticore' do
186
+ options = { headers: { 'User-Agent' => 'myapp-0.0' } }
187
+ transport = Manticore.new(hosts: [{ host: 'foobar', port: 1234 }], options: options)
188
+ transport.connections.first.connection
189
+ .expects(:get)
190
+ .with do |_host, _options|
191
+ assert_equal 'myapp-0.0', _options[:headers]['User-Agent']
192
+ true
193
+ end
194
+ .returns(stub_everything)
195
+
196
+ transport.perform_request 'GET', '/', {}
197
+ end
198
+
199
+ should 'allow to set ssl options for Manticore' do
200
+ options = {
201
+ ssl: {
202
+ truststore: 'test.jks',
203
+ truststore_password: 'test',
204
+ verify: false
205
+ }
206
+ }
207
+
208
+ ::Manticore::Client.expects(:new).with(options)
209
+ transport = Manticore.new hosts: [{ host: 'foobar', port: 1234 }], options: options
210
+ end
211
+
212
+ should 'allow custom headers' do
213
+ transport_options = { headers: { 'Authorization' => 'Basic token' } }
214
+ transport = Manticore.new(
215
+ hosts: [{ host: 'foobar', port: 1234 }],
216
+ transport_options: transport_options
217
+ )
218
+
219
+ assert_equal(
220
+ transport.instance_variable_get(:@request_options)[:headers]['Authorization'],
221
+ 'Basic token'
222
+ )
223
+ transport.connections.first.connection
224
+ .expects(:get)
225
+ .with do |_host, _options|
226
+ assert_equal('Basic token', _options[:headers]['Authorization'])
227
+ true
228
+ end
229
+ .returns(stub_everything)
230
+
231
+ transport.perform_request('GET', '/', {})
232
+ end
233
+
234
+ should 'pass :transport_options to Manticore::Client' do
235
+ options = {
236
+ transport_options: { potatoes: 1 }
237
+ }
238
+
239
+ ::Manticore::Client.expects(:new).with(potatoes: 1, ssl: {})
240
+ transport = Manticore.new(hosts: [{ host: 'foobar', port: 1234 }], options: options)
241
+ end
242
+ end
151
243
  end
152
- .returns(stub_everything)
153
-
154
- transport.perform_request 'GET', '/', {}
155
- end
156
-
157
- should "allow to set ssl options for Manticore" do
158
- options = {
159
- :ssl => {
160
- :truststore => "test.jks",
161
- :truststore_password => "test",
162
- :verify => false
163
- }
164
- }
165
-
166
- ::Manticore::Client.expects(:new).with(options)
167
- transport = Manticore.new :hosts => [ { :host => 'foobar', :port => 1234 } ], :options => options
168
- end
169
-
170
- should "pass :transport_options to Manticore::Client" do
171
- options = {
172
- :transport_options => { :potatoes => 1 }
173
- }
174
-
175
- ::Manticore::Client.expects(:new).with(:potatoes => 1, :ssl => {})
176
- transport = Manticore.new :hosts => [ { :host => 'foobar', :port => 1234 } ], :options => options
244
+ end
177
245
  end
178
246
  end
179
-
180
247
  end
181
-
248
+ else
249
+ version = "#{defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'Ruby'} #{RUBY_VERSION}"
250
+ puts "SKIP: '#{File.basename(__FILE__)}' only supported on JRuby (you're running #{version})"
182
251
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticsearch-transport
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.14.0
4
+ version: 7.14.1.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karel Minarik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-04 00:00:00.000000000 Z
11
+ date: 2021-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -425,11 +425,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
425
425
  version: '2.4'
426
426
  required_rubygems_version: !ruby/object:Gem::Requirement
427
427
  requirements:
428
- - - ">="
428
+ - - ">"
429
429
  - !ruby/object:Gem::Version
430
- version: '0'
430
+ version: 1.3.1
431
431
  requirements: []
432
- rubygems_version: 3.2.15
432
+ rubygems_version: 3.1.6
433
433
  signing_key:
434
434
  specification_version: 4
435
435
  summary: Ruby client for Elasticsearch.