elasticsearch-transport 7.14.0.pre → 7.15.0
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
- data/lib/elasticsearch/transport/transport/base.rb +12 -13
- data/lib/elasticsearch/transport/transport/http/manticore.rb +3 -3
- data/lib/elasticsearch/transport/version.rb +1 -1
- data/test/integration/jruby_test.rb +43 -0
- data/test/integration/transport_test.rb +18 -27
- data/test/unit/transport_manticore_test.rb +224 -155
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 013ab25456f1d6d612e5aae61b72c761998ec6483141399482b7457ed6cfe697
|
4
|
+
data.tar.gz: d5d88475a41abb557a8ec9557a2306bb3098941bf2b031c62f24c0ace9a94859
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
340
|
-
__trace
|
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
|
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 =
|
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
|
162
|
+
request_options[:headers].merge!(headers)
|
163
163
|
end
|
164
164
|
|
165
165
|
def user_agent_header
|
@@ -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
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
65
|
-
|
66
|
-
|
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
|
-
|
81
|
-
|
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
|
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
|
-
|
94
|
-
|
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
|
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
|
-
|
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
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
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
|
-
|
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.
|
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-
|
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:
|
431
|
+
version: '0'
|
431
432
|
requirements: []
|
432
|
-
rubygems_version: 3.2.
|
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
|