elasticsearch-transport 5.0.5 → 6.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/Gemfile +5 -0
- data/README.md +88 -34
- data/Rakefile +14 -17
- data/elasticsearch-transport.gemspec +44 -63
- data/lib/elasticsearch/transport/client.rb +120 -61
- data/lib/elasticsearch/transport/redacted.rb +79 -0
- data/lib/elasticsearch/transport/transport/base.rb +28 -14
- data/lib/elasticsearch/transport/transport/connections/collection.rb +4 -0
- data/lib/elasticsearch/transport/transport/connections/connection.rb +5 -1
- data/lib/elasticsearch/transport/transport/connections/selector.rb +4 -0
- data/lib/elasticsearch/transport/transport/errors.rb +4 -0
- data/lib/elasticsearch/transport/transport/http/curb.rb +7 -2
- data/lib/elasticsearch/transport/transport/http/faraday.rb +11 -8
- data/lib/elasticsearch/transport/transport/http/manticore.rb +6 -1
- data/lib/elasticsearch/transport/transport/response.rb +4 -0
- data/lib/elasticsearch/transport/transport/serializer/multi_json.rb +4 -0
- data/lib/elasticsearch/transport/transport/sniffer.rb +31 -3
- data/lib/elasticsearch/transport/version.rb +5 -1
- data/lib/elasticsearch/transport.rb +5 -0
- data/lib/elasticsearch-transport.rb +4 -0
- data/spec/elasticsearch/transport/base_spec.rb +260 -0
- data/spec/elasticsearch/transport/client_spec.rb +1025 -0
- data/spec/elasticsearch/transport/sniffer_spec.rb +269 -0
- data/spec/spec_helper.rb +65 -0
- data/test/integration/transport_test.rb +9 -5
- data/test/profile/client_benchmark_test.rb +23 -25
- data/test/test_helper.rb +10 -0
- data/test/unit/connection_collection_test.rb +4 -0
- data/test/unit/connection_selector_test.rb +4 -0
- data/test/unit/connection_test.rb +4 -0
- data/test/unit/response_test.rb +5 -1
- data/test/unit/serializer_test.rb +4 -0
- data/test/unit/transport_base_test.rb +21 -1
- data/test/unit/transport_curb_test.rb +12 -0
- data/test/unit/transport_faraday_test.rb +16 -0
- data/test/unit/transport_manticore_test.rb +11 -0
- metadata +82 -84
- data/test/integration/client_test.rb +0 -237
- data/test/unit/client_test.rb +0 -366
- data/test/unit/sniffer_test.rb +0 -179
@@ -1,3 +1,7 @@
|
|
1
|
+
# Licensed to Elasticsearch B.V under one or more agreements.
|
2
|
+
# Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
|
3
|
+
# See the LICENSE file in the project root for more information
|
4
|
+
|
1
5
|
require 'test_helper'
|
2
6
|
|
3
7
|
unless JRUBY
|
@@ -55,6 +59,13 @@ else
|
|
55
59
|
@transport.perform_request 'POST', '/', {}, {'foo' => 'bar'}
|
56
60
|
end
|
57
61
|
|
62
|
+
should "set custom headers for PUT request" do
|
63
|
+
@transport.connections.first.connection.expects(:put).
|
64
|
+
with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}', :headers => {"Content-Type" => "application/x-ndjson"}})
|
65
|
+
.returns(stub_everything)
|
66
|
+
@transport.perform_request 'PUT', '/', {}, '{"foo":"bar"}', {"Content-Type" => "application/x-ndjson"}
|
67
|
+
end
|
68
|
+
|
58
69
|
should "not serialize a String request body" do
|
59
70
|
@transport.connections.first.connection.expects(:post).
|
60
71
|
with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}'}).returns(stub_everything)
|
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:
|
4
|
+
version: 6.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karel Minarik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -28,46 +28,32 @@ dependencies:
|
|
28
28
|
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: bundler
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">"
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
33
|
version: '1'
|
48
|
-
type: :
|
34
|
+
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - "
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '1'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
42
|
+
name: ansi
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- - "
|
45
|
+
- - ">="
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
47
|
+
version: '0'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- - "
|
52
|
+
- - ">="
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
54
|
+
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
56
|
+
name: bundler
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - ">="
|
@@ -81,7 +67,7 @@ dependencies:
|
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
70
|
+
name: elasticsearch-extensions
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
73
|
- - ">="
|
@@ -95,7 +81,7 @@ dependencies:
|
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
84
|
+
name: mocha
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - ">="
|
@@ -109,7 +95,7 @@ dependencies:
|
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: '0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
98
|
+
name: pry
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - ">="
|
@@ -123,21 +109,21 @@ dependencies:
|
|
123
109
|
- !ruby/object:Gem::Version
|
124
110
|
version: '0'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
112
|
+
name: rake
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
|
-
- - "
|
115
|
+
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
117
|
+
version: '13'
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
|
-
- - "
|
122
|
+
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
124
|
+
version: '13'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
126
|
+
name: shoulda-context
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
129
|
- - ">="
|
@@ -151,7 +137,7 @@ dependencies:
|
|
151
137
|
- !ruby/object:Gem::Version
|
152
138
|
version: '0'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
140
|
+
name: turn
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
143
|
- - ">="
|
@@ -165,21 +151,21 @@ dependencies:
|
|
165
151
|
- !ruby/object:Gem::Version
|
166
152
|
version: '0'
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
154
|
+
name: yard
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
170
156
|
requirements:
|
171
|
-
- - "
|
157
|
+
- - ">="
|
172
158
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
159
|
+
version: '0'
|
174
160
|
type: :development
|
175
161
|
prerelease: false
|
176
162
|
version_requirements: !ruby/object:Gem::Requirement
|
177
163
|
requirements:
|
178
|
-
- - "
|
164
|
+
- - ">="
|
179
165
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
166
|
+
version: '0'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
168
|
+
name: cane
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
184
170
|
requirements:
|
185
171
|
- - ">="
|
@@ -193,7 +179,7 @@ dependencies:
|
|
193
179
|
- !ruby/object:Gem::Version
|
194
180
|
version: '0'
|
195
181
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
182
|
+
name: hashie
|
197
183
|
requirement: !ruby/object:Gem::Requirement
|
198
184
|
requirements:
|
199
185
|
- - ">="
|
@@ -207,19 +193,19 @@ dependencies:
|
|
207
193
|
- !ruby/object:Gem::Version
|
208
194
|
version: '0'
|
209
195
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
196
|
+
name: minitest
|
211
197
|
requirement: !ruby/object:Gem::Requirement
|
212
198
|
requirements:
|
213
199
|
- - "~>"
|
214
200
|
- !ruby/object:Gem::Version
|
215
|
-
version: '0
|
201
|
+
version: '4.0'
|
216
202
|
type: :development
|
217
203
|
prerelease: false
|
218
204
|
version_requirements: !ruby/object:Gem::Requirement
|
219
205
|
requirements:
|
220
206
|
- - "~>"
|
221
207
|
- !ruby/object:Gem::Version
|
222
|
-
version: '0
|
208
|
+
version: '4.0'
|
223
209
|
- !ruby/object:Gem::Dependency
|
224
210
|
name: net-http-persistent
|
225
211
|
requirement: !ruby/object:Gem::Requirement
|
@@ -235,7 +221,27 @@ dependencies:
|
|
235
221
|
- !ruby/object:Gem::Version
|
236
222
|
version: '0'
|
237
223
|
- !ruby/object:Gem::Dependency
|
238
|
-
name:
|
224
|
+
name: simplecov
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0.17'
|
230
|
+
- - "<"
|
231
|
+
- !ruby/object:Gem::Version
|
232
|
+
version: '0.18'
|
233
|
+
type: :development
|
234
|
+
prerelease: false
|
235
|
+
version_requirements: !ruby/object:Gem::Requirement
|
236
|
+
requirements:
|
237
|
+
- - "~>"
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: '0.17'
|
240
|
+
- - "<"
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: '0.18'
|
243
|
+
- !ruby/object:Gem::Dependency
|
244
|
+
name: simplecov-rcov
|
239
245
|
requirement: !ruby/object:Gem::Requirement
|
240
246
|
requirements:
|
241
247
|
- - ">="
|
@@ -249,35 +255,35 @@ dependencies:
|
|
249
255
|
- !ruby/object:Gem::Version
|
250
256
|
version: '0'
|
251
257
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
258
|
+
name: test-unit
|
253
259
|
requirement: !ruby/object:Gem::Requirement
|
254
260
|
requirements:
|
255
261
|
- - "~>"
|
256
262
|
- !ruby/object:Gem::Version
|
257
|
-
version: '
|
263
|
+
version: '2'
|
258
264
|
type: :development
|
259
265
|
prerelease: false
|
260
266
|
version_requirements: !ruby/object:Gem::Requirement
|
261
267
|
requirements:
|
262
268
|
- - "~>"
|
263
269
|
- !ruby/object:Gem::Version
|
264
|
-
version: '
|
270
|
+
version: '2'
|
265
271
|
- !ruby/object:Gem::Dependency
|
266
|
-
name:
|
272
|
+
name: typhoeus
|
267
273
|
requirement: !ruby/object:Gem::Requirement
|
268
274
|
requirements:
|
269
|
-
- - "
|
275
|
+
- - "~>"
|
270
276
|
- !ruby/object:Gem::Version
|
271
|
-
version: '0'
|
277
|
+
version: '0.6'
|
272
278
|
type: :development
|
273
279
|
prerelease: false
|
274
280
|
version_requirements: !ruby/object:Gem::Requirement
|
275
281
|
requirements:
|
276
|
-
- - "
|
282
|
+
- - "~>"
|
277
283
|
- !ruby/object:Gem::Version
|
278
|
-
version: '0'
|
284
|
+
version: '0.6'
|
279
285
|
- !ruby/object:Gem::Dependency
|
280
|
-
name:
|
286
|
+
name: curb
|
281
287
|
requirement: !ruby/object:Gem::Requirement
|
282
288
|
requirements:
|
283
289
|
- - ">="
|
@@ -291,7 +297,7 @@ dependencies:
|
|
291
297
|
- !ruby/object:Gem::Version
|
292
298
|
version: '0'
|
293
299
|
- !ruby/object:Gem::Dependency
|
294
|
-
name:
|
300
|
+
name: patron
|
295
301
|
requirement: !ruby/object:Gem::Requirement
|
296
302
|
requirements:
|
297
303
|
- - ">="
|
@@ -305,7 +311,7 @@ dependencies:
|
|
305
311
|
- !ruby/object:Gem::Version
|
306
312
|
version: '0'
|
307
313
|
- !ruby/object:Gem::Dependency
|
308
|
-
name:
|
314
|
+
name: require-prof
|
309
315
|
requirement: !ruby/object:Gem::Requirement
|
310
316
|
requirements:
|
311
317
|
- - ">="
|
@@ -319,7 +325,7 @@ dependencies:
|
|
319
325
|
- !ruby/object:Gem::Version
|
320
326
|
version: '0'
|
321
327
|
- !ruby/object:Gem::Dependency
|
322
|
-
name:
|
328
|
+
name: ruby-prof
|
323
329
|
requirement: !ruby/object:Gem::Requirement
|
324
330
|
requirements:
|
325
331
|
- - ">="
|
@@ -332,20 +338,6 @@ dependencies:
|
|
332
338
|
- - ">="
|
333
339
|
- !ruby/object:Gem::Version
|
334
340
|
version: '0'
|
335
|
-
- !ruby/object:Gem::Dependency
|
336
|
-
name: test-unit
|
337
|
-
requirement: !ruby/object:Gem::Requirement
|
338
|
-
requirements:
|
339
|
-
- - "~>"
|
340
|
-
- !ruby/object:Gem::Version
|
341
|
-
version: '2'
|
342
|
-
type: :development
|
343
|
-
prerelease: false
|
344
|
-
version_requirements: !ruby/object:Gem::Requirement
|
345
|
-
requirements:
|
346
|
-
- - "~>"
|
347
|
-
- !ruby/object:Gem::Version
|
348
|
-
version: '2'
|
349
341
|
description: 'Ruby client for Elasticsearch. See the `elasticsearch` gem for full
|
350
342
|
integration.
|
351
343
|
|
@@ -367,6 +359,7 @@ files:
|
|
367
359
|
- lib/elasticsearch-transport.rb
|
368
360
|
- lib/elasticsearch/transport.rb
|
369
361
|
- lib/elasticsearch/transport/client.rb
|
362
|
+
- lib/elasticsearch/transport/redacted.rb
|
370
363
|
- lib/elasticsearch/transport/transport/base.rb
|
371
364
|
- lib/elasticsearch/transport/transport/connections/collection.rb
|
372
365
|
- lib/elasticsearch/transport/transport/connections/connection.rb
|
@@ -379,25 +372,30 @@ files:
|
|
379
372
|
- lib/elasticsearch/transport/transport/serializer/multi_json.rb
|
380
373
|
- lib/elasticsearch/transport/transport/sniffer.rb
|
381
374
|
- lib/elasticsearch/transport/version.rb
|
382
|
-
-
|
375
|
+
- spec/elasticsearch/transport/base_spec.rb
|
376
|
+
- spec/elasticsearch/transport/client_spec.rb
|
377
|
+
- spec/elasticsearch/transport/sniffer_spec.rb
|
378
|
+
- spec/spec_helper.rb
|
383
379
|
- test/integration/transport_test.rb
|
384
380
|
- test/profile/client_benchmark_test.rb
|
385
381
|
- test/test_helper.rb
|
386
|
-
- test/unit/client_test.rb
|
387
382
|
- test/unit/connection_collection_test.rb
|
388
383
|
- test/unit/connection_selector_test.rb
|
389
384
|
- test/unit/connection_test.rb
|
390
385
|
- test/unit/response_test.rb
|
391
386
|
- test/unit/serializer_test.rb
|
392
|
-
- test/unit/sniffer_test.rb
|
393
387
|
- test/unit/transport_base_test.rb
|
394
388
|
- test/unit/transport_curb_test.rb
|
395
389
|
- test/unit/transport_faraday_test.rb
|
396
390
|
- test/unit/transport_manticore_test.rb
|
397
|
-
homepage: https://
|
391
|
+
homepage: https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/index.html
|
398
392
|
licenses:
|
399
|
-
- Apache
|
400
|
-
metadata:
|
393
|
+
- Apache-2.0
|
394
|
+
metadata:
|
395
|
+
homepage_uri: https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/index.html
|
396
|
+
changelog_uri: https://github.com/elastic/elasticsearch-ruby/blob/6.x/CHANGELOG.md
|
397
|
+
source_code_uri: https://github.com/elastic/elasticsearch-ruby/tree/6.x/elasticsearch-transport
|
398
|
+
bug_tracker_uri: https://github.com/elastic/elasticsearch-ruby/issues
|
401
399
|
post_install_message:
|
402
400
|
rdoc_options:
|
403
401
|
- "--charset=UTF-8"
|
@@ -407,30 +405,30 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
407
405
|
requirements:
|
408
406
|
- - ">="
|
409
407
|
- !ruby/object:Gem::Version
|
410
|
-
version: '
|
408
|
+
version: '2.4'
|
411
409
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
412
410
|
requirements:
|
413
411
|
- - ">="
|
414
412
|
- !ruby/object:Gem::Version
|
415
413
|
version: '0'
|
416
414
|
requirements: []
|
417
|
-
|
418
|
-
rubygems_version: 2.6.11
|
415
|
+
rubygems_version: 3.1.2
|
419
416
|
signing_key:
|
420
417
|
specification_version: 4
|
421
418
|
summary: Ruby client for Elasticsearch.
|
422
419
|
test_files:
|
423
|
-
-
|
420
|
+
- spec/elasticsearch/transport/base_spec.rb
|
421
|
+
- spec/elasticsearch/transport/client_spec.rb
|
422
|
+
- spec/elasticsearch/transport/sniffer_spec.rb
|
423
|
+
- spec/spec_helper.rb
|
424
424
|
- test/integration/transport_test.rb
|
425
425
|
- test/profile/client_benchmark_test.rb
|
426
426
|
- test/test_helper.rb
|
427
|
-
- test/unit/client_test.rb
|
428
427
|
- test/unit/connection_collection_test.rb
|
429
428
|
- test/unit/connection_selector_test.rb
|
430
429
|
- test/unit/connection_test.rb
|
431
430
|
- test/unit/response_test.rb
|
432
431
|
- test/unit/serializer_test.rb
|
433
|
-
- test/unit/sniffer_test.rb
|
434
432
|
- test/unit/transport_base_test.rb
|
435
433
|
- test/unit/transport_curb_test.rb
|
436
434
|
- test/unit/transport_faraday_test.rb
|
@@ -1,237 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class Elasticsearch::Transport::ClientIntegrationTest < Elasticsearch::Test::IntegrationTestCase
|
4
|
-
startup do
|
5
|
-
Elasticsearch::Extensions::Test::Cluster.start(number_of_nodes: 2) if ENV['SERVER'] and not Elasticsearch::Extensions::Test::Cluster.running?(number_of_nodes: 2)
|
6
|
-
end
|
7
|
-
|
8
|
-
shutdown do
|
9
|
-
Elasticsearch::Extensions::Test::Cluster.stop(number_of_nodes: 2) if ENV['SERVER'] and Elasticsearch::Extensions::Test::Cluster.running?(number_of_nodes: 2)
|
10
|
-
end
|
11
|
-
|
12
|
-
context "Elasticsearch client" do
|
13
|
-
teardown do
|
14
|
-
begin; Object.send(:remove_const, :Typhoeus); rescue NameError; end
|
15
|
-
begin; Net::HTTP.send(:remove_const, :Persistent); rescue NameError; end
|
16
|
-
end
|
17
|
-
|
18
|
-
setup do
|
19
|
-
@port = (ENV['TEST_CLUSTER_PORT'] || 9250).to_i
|
20
|
-
system "curl -X DELETE http://127.0.0.1:#{@port}/_all > /dev/null 2>&1"
|
21
|
-
|
22
|
-
@logger = Logger.new(STDERR)
|
23
|
-
@logger.formatter = proc do |severity, datetime, progname, msg|
|
24
|
-
color = case severity
|
25
|
-
when /INFO/ then :green
|
26
|
-
when /ERROR|WARN|FATAL/ then :red
|
27
|
-
when /DEBUG/ then :cyan
|
28
|
-
else :white
|
29
|
-
end
|
30
|
-
ANSI.ansi(severity[0] + ' ', color, :faint) + ANSI.ansi(msg, :white, :faint) + "\n"
|
31
|
-
end
|
32
|
-
|
33
|
-
@client = Elasticsearch::Client.new host: "127.0.0.1:#{@port}"
|
34
|
-
end
|
35
|
-
|
36
|
-
should "connect to the cluster" do
|
37
|
-
assert_nothing_raised do
|
38
|
-
response = @client.perform_request 'GET', '_cluster/health'
|
39
|
-
assert_equal 2, response.body['number_of_nodes']
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
should "handle paths and URL parameters" do
|
44
|
-
@client.perform_request 'PUT', 'myindex/mydoc/1', {routing: 'XYZ'}, {foo: 'bar'}
|
45
|
-
@client.perform_request 'GET', '_cluster/health?wait_for_status=green', {}
|
46
|
-
|
47
|
-
response = @client.perform_request 'GET', 'myindex/mydoc/1?routing=XYZ'
|
48
|
-
assert_equal 200, response.status
|
49
|
-
assert_equal 'bar', response.body['_source']['foo']
|
50
|
-
|
51
|
-
assert_raise Elasticsearch::Transport::Transport::Errors::NotFound do
|
52
|
-
@client.perform_request 'GET', 'myindex/mydoc/1?routing=ABC'
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
should "ignore specified response codes" do
|
57
|
-
response = @client.perform_request 'GET', '/_foobar', ignore: 400
|
58
|
-
assert_equal 400, response.status
|
59
|
-
|
60
|
-
assert_instance_of Hash, response.body
|
61
|
-
assert_match /illegal_argument_exception/, response.body.inspect
|
62
|
-
end
|
63
|
-
|
64
|
-
should "pass options to the transport" do
|
65
|
-
@client = Elasticsearch::Client.new \
|
66
|
-
host: "127.0.0.1:#{@port}",
|
67
|
-
logger: (ENV['QUIET'] ? nil : @logger),
|
68
|
-
transport_options: { headers: { accept: 'application/yaml', content_type: 'application/yaml' } }
|
69
|
-
|
70
|
-
response = @client.perform_request 'GET', '_cluster/health'
|
71
|
-
|
72
|
-
assert response.body.to_s.start_with?("---\n"), "Response body should be YAML: #{response.body.inspect}"
|
73
|
-
assert_equal 'application/yaml', response.headers['content-type']
|
74
|
-
end
|
75
|
-
|
76
|
-
should "pass options to the Faraday::Connection with a block" do
|
77
|
-
@client = Elasticsearch::Client.new(
|
78
|
-
host: "127.0.0.1:#{@port}",
|
79
|
-
logger: (ENV['QUIET'] ? nil : @logger)
|
80
|
-
) do |client|
|
81
|
-
client.headers['Content-Type'] = 'application/yaml' # For ES 2.x
|
82
|
-
client.headers['Accept'] = 'application/yaml' # For ES 5.x
|
83
|
-
end
|
84
|
-
|
85
|
-
response = @client.perform_request 'GET', '_cluster/health'
|
86
|
-
|
87
|
-
assert response.body.to_s.start_with?("---\n"), "Response body should be YAML: #{response.body.inspect}"
|
88
|
-
assert_equal 'application/yaml', response.headers['content-type']
|
89
|
-
end
|
90
|
-
|
91
|
-
context "with round robin selector" do
|
92
|
-
setup do
|
93
|
-
@client = Elasticsearch::Client.new \
|
94
|
-
hosts: ["127.0.0.1:#{@port}", "127.0.0.1:#{@port+1}" ],
|
95
|
-
logger: (ENV['QUIET'] ? nil : @logger)
|
96
|
-
end
|
97
|
-
|
98
|
-
should "rotate nodes" do
|
99
|
-
# Hit node 1
|
100
|
-
response = @client.perform_request 'GET', '_nodes/_local'
|
101
|
-
assert_equal 'node-1', response.body['nodes'].to_a[0][1]['name']
|
102
|
-
|
103
|
-
# Hit node 2
|
104
|
-
response = @client.perform_request 'GET', '_nodes/_local'
|
105
|
-
assert_equal 'node-2', response.body['nodes'].to_a[0][1]['name']
|
106
|
-
|
107
|
-
# Hit node 1
|
108
|
-
response = @client.perform_request 'GET', '_nodes/_local'
|
109
|
-
assert_equal 'node-1', response.body['nodes'].to_a[0][1]['name']
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
context "with a sick node and retry on failure" do
|
114
|
-
setup do
|
115
|
-
@port = (ENV['TEST_CLUSTER_PORT'] || 9250).to_i
|
116
|
-
@client = Elasticsearch::Client.new \
|
117
|
-
hosts: ["127.0.0.1:#{@port}", "foobar1"],
|
118
|
-
logger: (ENV['QUIET'] ? nil : @logger),
|
119
|
-
retry_on_failure: true
|
120
|
-
end
|
121
|
-
|
122
|
-
should "retry the request with next server" do
|
123
|
-
assert_nothing_raised do
|
124
|
-
5.times { @client.perform_request 'GET', '_nodes/_local' }
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
should "raise exception when it cannot get any healthy server" do
|
129
|
-
@client = Elasticsearch::Client.new \
|
130
|
-
hosts: ["127.0.0.1:#{@port}", "foobar1", "foobar2", "foobar3"],
|
131
|
-
logger: (ENV['QUIET'] ? nil : @logger),
|
132
|
-
retry_on_failure: 1
|
133
|
-
|
134
|
-
assert_nothing_raised do
|
135
|
-
# First hit is OK
|
136
|
-
@client.perform_request 'GET', '_nodes/_local'
|
137
|
-
end
|
138
|
-
|
139
|
-
assert_raise Faraday::Error::ConnectionFailed do
|
140
|
-
# Second hit fails
|
141
|
-
@client.perform_request 'GET', '_nodes/_local'
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
context "with a sick node and reloading on failure" do
|
147
|
-
setup do
|
148
|
-
@client = Elasticsearch::Client.new \
|
149
|
-
hosts: ["127.0.0.1:#{@port}", "foobar1", "foobar2"],
|
150
|
-
logger: (ENV['QUIET'] ? nil : @logger),
|
151
|
-
reload_on_failure: true
|
152
|
-
end
|
153
|
-
|
154
|
-
should "reload the connections" do
|
155
|
-
assert_equal 3, @client.transport.connections.size
|
156
|
-
assert_nothing_raised do
|
157
|
-
5.times { @client.perform_request 'GET', '_nodes/_local' }
|
158
|
-
end
|
159
|
-
assert_equal 2, @client.transport.connections.size
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
context "with retrying on status" do
|
164
|
-
should "retry when the status does match" do
|
165
|
-
@client = Elasticsearch::Client.new \
|
166
|
-
hosts: ["127.0.0.1:#{@port}"],
|
167
|
-
logger: (ENV['QUIET'] ? nil : @logger),
|
168
|
-
retry_on_status: 400
|
169
|
-
|
170
|
-
# Set the logger when the `QUIET` option is set
|
171
|
-
@client.transport.logger ||= Logger.new(STDERR)
|
172
|
-
|
173
|
-
@client.transport.logger.stubs(:fatal)
|
174
|
-
@client.transport.logger
|
175
|
-
.expects(:warn)
|
176
|
-
.with( regexp_matches(/Attempt \d to get response/) )
|
177
|
-
.times(4)
|
178
|
-
|
179
|
-
assert_raise Elasticsearch::Transport::Transport::Errors::BadRequest do
|
180
|
-
@client.perform_request 'GET', '_foobar'
|
181
|
-
end
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
context "when reloading connections" do
|
186
|
-
should "keep existing connections" do
|
187
|
-
require 'patron' # We need a client with keep-alive
|
188
|
-
client = Elasticsearch::Transport::Client.new host: "127.0.0.1:#{@port}",
|
189
|
-
adapter: :patron,
|
190
|
-
logger: (ENV['QUIET'] ? nil : @logger)
|
191
|
-
|
192
|
-
assert_equal 'Faraday::Adapter::Patron',
|
193
|
-
client.transport.connections.first.connection.builder.handlers.first.name
|
194
|
-
|
195
|
-
response = client.perform_request 'GET', '_nodes/stats/http'
|
196
|
-
|
197
|
-
a = response.body['nodes'].values.select { |n| n['name'] == 'node-1' }.first['http']['total_opened']
|
198
|
-
|
199
|
-
client.transport.reload_connections!
|
200
|
-
|
201
|
-
response = client.perform_request 'GET', '_nodes/stats/http'
|
202
|
-
b = response.body['nodes'].values.select { |n| n['name'] == 'node-1' }.first['http']['total_opened']
|
203
|
-
|
204
|
-
assert_equal a, b
|
205
|
-
end unless JRUBY
|
206
|
-
end
|
207
|
-
|
208
|
-
context "with Faraday adapters" do
|
209
|
-
should "set the adapter with a block" do
|
210
|
-
require 'net/http/persistent'
|
211
|
-
|
212
|
-
client = Elasticsearch::Transport::Client.new url: "127.0.0.1:#{@port}" do |f|
|
213
|
-
f.adapter :net_http_persistent
|
214
|
-
end
|
215
|
-
|
216
|
-
assert_equal 'Faraday::Adapter::NetHttpPersistent',
|
217
|
-
client.transport.connections.first.connection.builder.handlers.first.name
|
218
|
-
|
219
|
-
response = @client.perform_request 'GET', '_cluster/health'
|
220
|
-
assert_equal 200, response.status
|
221
|
-
end
|
222
|
-
|
223
|
-
should "automatically use the Patron client when loaded" do
|
224
|
-
teardown { begin; Object.send(:remove_const, :Patron); rescue NameError; end }
|
225
|
-
|
226
|
-
require 'patron'
|
227
|
-
client = Elasticsearch::Transport::Client.new host: "127.0.0.1:#{@port}"
|
228
|
-
|
229
|
-
assert_equal 'Faraday::Adapter::Patron',
|
230
|
-
client.transport.connections.first.connection.builder.handlers.first.name
|
231
|
-
|
232
|
-
response = @client.perform_request 'GET', '_cluster/health'
|
233
|
-
assert_equal 200, response.status
|
234
|
-
end unless JRUBY
|
235
|
-
end
|
236
|
-
end
|
237
|
-
end
|