elasticsearch-transport 7.14.0.pre → 7.15.0

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: 341409417b3cc66b9ee4cb700fe52dedad30c2278369837bd0c72d1e415b5bb1
4
- data.tar.gz: bd9fd4f3852d78bd0e52023e7b4b7a0e6011d3fd1ffe6d204e1ef9778eb68d50
3
+ metadata.gz: 013ab25456f1d6d612e5aae61b72c761998ec6483141399482b7457ed6cfe697
4
+ data.tar.gz: d5d88475a41abb557a8ec9557a2306bb3098941bf2b031c62f24c0ace9a94859
5
5
  SHA512:
6
- metadata.gz: 206773e88adf3d19c10405e5729f664c3a90544c2030a432853bc7d2481cfe7d75b50f1f9fb8b5cf3c89b999c3ae6096b269e5b796e0d052535abb58134f74cb
7
- data.tar.gz: 91e412682b10b32641f44951e40161e37ffa51d11642707aab7e2dd1e711621cc97a0054adcfb2a9b1994a354e5b6094bf1fe46b8ad2eabe731e9c9f90f4446c
6
+ metadata.gz: 0db31f9306cecfcbddf99a4ebeb953c48ab4f949a5607fb58307601a7f90f0e859ee2d9016b68eea9d0cd13e080d56219a24b166dc7b2d68b3492cd6e24e0cb7
7
+ data.tar.gz: 06bfbb100a2205868ab071aea96c9827a8fbcdd55530b64eb639b8f27e0244b5d908ed93f33f914e14d3afd38bac84abba43dfb68c9990bb34760a32d9ca4af8
@@ -272,7 +272,6 @@ module Elasticsearch
272
272
  end
273
273
 
274
274
  params = params.clone
275
-
276
275
  ignore = Array(params.delete(:ignore)).compact.map { |s| s.to_i }
277
276
 
278
277
  begin
@@ -284,9 +283,7 @@ module Elasticsearch
284
283
  end
285
284
 
286
285
  url = connection.full_url(path, params)
287
-
288
286
  response = block.call(connection, url)
289
-
290
287
  connection.healthy! if connection.failures > 0
291
288
 
292
289
  # Raise an exception so we can catch it for `retry_on_status`
@@ -336,14 +333,10 @@ module Elasticsearch
336
333
  duration = Time.now - start
337
334
 
338
335
  if response.status.to_i >= 300
339
- __log_response method, path, params, body, url, response, nil, 'N/A', duration
340
- __trace method, path, params, connection.connection.headers, body, url, response, nil, 'N/A', duration if tracer
341
-
336
+ __log_response(method, path, params, body, url, response, nil, 'N/A', duration)
337
+ __trace(method, path, params, connection_headers(connection), body, url, response, nil, 'N/A', duration) if tracer
342
338
  # Log the failure only when `ignore` doesn't match the response status
343
- unless ignore.include?(response.status.to_i)
344
- log_fatal "[#{response.status}] #{response.body}"
345
- end
346
-
339
+ log_fatal "[#{response.status}] #{response.body}" unless ignore.include?(response.status.to_i)
347
340
  __raise_transport_error response unless ignore.include?(response.status.to_i)
348
341
  end
349
342
 
@@ -354,10 +347,8 @@ module Elasticsearch
354
347
  __log_response method, path, params, body, url, response, json, took, duration
355
348
  end
356
349
 
357
- __trace method, path, params, connection.connection.headers, body, url, response, nil, 'N/A', duration if tracer
358
-
350
+ __trace(method, path, params, connection_headers(connection), body, url, response, nil, 'N/A', duration) if tracer
359
351
  warnings(response.headers['warning']) if response.headers&.[]('warning')
360
-
361
352
  Response.new response.status, json || response.body, response.headers
362
353
  ensure
363
354
  @last_request_at = Time.now
@@ -435,6 +426,14 @@ module Elasticsearch
435
426
  def warnings(warning)
436
427
  warn("warning: #{warning}")
437
428
  end
429
+
430
+ def connection_headers(connection)
431
+ if defined?(Elasticsearch::Transport::Transport::HTTP::Manticore) && self.class == Elasticsearch::Transport::Transport::HTTP::Manticore
432
+ @request_options[:headers]
433
+ else
434
+ connection.connection.headers
435
+ end
436
+ end
438
437
  end
439
438
  end
440
439
  end
@@ -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.pre'.freeze
20
+ VERSION = '7.15.0'.freeze
21
21
  end
22
22
  end
@@ -0,0 +1,43 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+ require 'test_helper'
18
+
19
+ if JRUBY
20
+ require 'elasticsearch/transport/transport/http/manticore'
21
+
22
+ class Elasticsearch::Transport::ClientManticoreIntegrationTest < Elasticsearch::Test::IntegrationTestCase
23
+ context "Transport" do
24
+ setup do
25
+ @host, @port = ELASTICSEARCH_HOSTS.first.split(':')
26
+ end
27
+
28
+ shutdown do
29
+ begin; Object.send(:remove_const, :Manticore); rescue NameError; end
30
+ end
31
+
32
+ should 'allow to customize the Faraday adapter to Manticore' do
33
+ client = Elasticsearch::Transport::Client.new(
34
+ transport_class: Elasticsearch::Transport::Transport::HTTP::Manticore,
35
+ trace: true,
36
+ hosts: [ { host: @host, port: @port } ]
37
+ )
38
+ response = client.perform_request 'GET', ''
39
+ assert_respond_to(response.body, :to_hash)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -29,6 +29,7 @@ class Elasticsearch::Transport::ClientIntegrationTest < Elasticsearch::Test::Int
29
29
  context "Transport" do
30
30
  setup do
31
31
  @host, @port = ELASTICSEARCH_HOSTS.first.split(':')
32
+ @hosts = { hosts: [ { host: @host, port: @port } ] }
32
33
  begin; Object.send(:remove_const, :Patron); rescue NameError; end
33
34
  end
34
35
 
@@ -36,11 +37,10 @@ class Elasticsearch::Transport::ClientIntegrationTest < Elasticsearch::Test::Int
36
37
  require 'typhoeus'
37
38
  require 'typhoeus/adapters/faraday'
38
39
 
39
- transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new \
40
- :hosts => [ { host: @host, port: @port } ] do |f|
41
- f.response :logger
42
- f.adapter :typhoeus
43
- end
40
+ transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(@hosts) do |f|
41
+ f.response :logger
42
+ f.adapter :typhoeus
43
+ end
44
44
 
45
45
  client = Elasticsearch::Transport::Client.new transport: transport
46
46
  client.perform_request 'GET', ''
@@ -49,8 +49,7 @@ class Elasticsearch::Transport::ClientIntegrationTest < Elasticsearch::Test::Int
49
49
  should "allow to customize the Faraday adapter to NetHttpPersistent" do
50
50
  require 'net/http/persistent'
51
51
 
52
- transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new \
53
- :hosts => [ { host: @host, port: @port } ] do |f|
52
+ transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(@hosts) do |f|
54
53
  f.response :logger
55
54
  f.adapter :net_http_persistent
56
55
  end
@@ -60,13 +59,10 @@ class Elasticsearch::Transport::ClientIntegrationTest < Elasticsearch::Test::Int
60
59
  end
61
60
 
62
61
  should "allow to define connection parameters and pass them" do
63
- transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new \
64
- :hosts => [ { host: @host, port: @port } ],
65
- :options => { :transport_options => {
66
- :params => { :format => 'yaml' }
67
- }
68
- }
69
-
62
+ transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(
63
+ hosts: [ { host: @host, port: @port } ],
64
+ options: { transport_options: { params: { :format => 'yaml' } } }
65
+ )
70
66
  client = Elasticsearch::Transport::Client.new transport: transport
71
67
  response = client.perform_request 'GET', ''
72
68
 
@@ -76,24 +72,20 @@ class Elasticsearch::Transport::ClientIntegrationTest < Elasticsearch::Test::Int
76
72
  should "use the Curb client" do
77
73
  require 'curb'
78
74
  require 'elasticsearch/transport/transport/http/curb'
79
-
80
- transport = Elasticsearch::Transport::Transport::HTTP::Curb.new \
81
- :hosts => [ { host: @host, port: @port } ] do |curl|
82
- curl.verbose = true
83
- end
75
+ transport = Elasticsearch::Transport::Transport::HTTP::Curb.new(@hosts) do |curl|
76
+ curl.verbose = true
77
+ end
84
78
 
85
79
  client = Elasticsearch::Transport::Client.new transport: transport
86
80
  client.perform_request 'GET', ''
87
- end unless JRUBY
81
+ end unless jruby?
88
82
 
89
83
  should "deserialize JSON responses in the Curb client" do
90
84
  require 'curb'
91
85
  require 'elasticsearch/transport/transport/http/curb'
92
-
93
- transport = Elasticsearch::Transport::Transport::HTTP::Curb.new \
94
- :hosts => [ { host: @host, port: @port } ] do |curl|
95
- curl.verbose = true
96
- end
86
+ transport = Elasticsearch::Transport::Transport::HTTP::Curb.new(@hosts) do |curl|
87
+ curl.verbose = true
88
+ end
97
89
 
98
90
  client = Elasticsearch::Transport::Client.new transport: transport
99
91
  response = client.perform_request 'GET', ''
@@ -101,7 +93,6 @@ class Elasticsearch::Transport::ClientIntegrationTest < Elasticsearch::Test::Int
101
93
  assert_respond_to(response.body, :to_hash)
102
94
  assert_not_nil response.body['name']
103
95
  assert_equal 'application/json', response.headers['content-type']
104
- end unless JRUBY
96
+ end unless jruby?
105
97
  end
106
-
107
98
  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.pre
4
+ version: 7.15.0
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-07-14 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -395,6 +395,7 @@ files:
395
395
  - spec/elasticsearch/transport/meta_header_spec.rb
396
396
  - spec/elasticsearch/transport/sniffer_spec.rb
397
397
  - spec/spec_helper.rb
398
+ - test/integration/jruby_test.rb
398
399
  - test/integration/transport_test.rb
399
400
  - test/profile/client_benchmark_test.rb
400
401
  - test/test_helper.rb
@@ -425,11 +426,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
425
426
  version: '2.4'
426
427
  required_rubygems_version: !ruby/object:Gem::Requirement
427
428
  requirements:
428
- - - ">"
429
+ - - ">="
429
430
  - !ruby/object:Gem::Version
430
- version: 1.3.1
431
+ version: '0'
431
432
  requirements: []
432
- rubygems_version: 3.2.15
433
+ rubygems_version: 3.2.22
433
434
  signing_key:
434
435
  specification_version: 4
435
436
  summary: Ruby client for Elasticsearch.
@@ -441,6 +442,7 @@ test_files:
441
442
  - spec/elasticsearch/transport/meta_header_spec.rb
442
443
  - spec/elasticsearch/transport/sniffer_spec.rb
443
444
  - spec/spec_helper.rb
445
+ - test/integration/jruby_test.rb
444
446
  - test/integration/transport_test.rb
445
447
  - test/profile/client_benchmark_test.rb
446
448
  - test/test_helper.rb