elasticsearch-transport 5.0.5 → 6.8.3
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 +45 -63
- data/lib/elasticsearch/transport/client.rb +207 -67
- 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 +1063 -0
- data/spec/elasticsearch/transport/meta_header_spec.rb +214 -0
- data/spec/elasticsearch/transport/sniffer_spec.rb +269 -0
- data/spec/spec_helper.rb +72 -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 +90 -76
- data/test/integration/client_test.rb +0 -237
- data/test/unit/client_test.rb +0 -366
- data/test/unit/sniffer_test.rb +0 -179
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.3
|
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: 2021-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -28,44 +28,44 @@ dependencies:
|
|
28
28
|
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: ansi
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: elasticsearch-extensions
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: mocha
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: pry
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -109,21 +109,21 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '13'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
124
|
+
version: '13'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: shoulda-context
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: turn
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: yard
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
@@ -165,21 +165,21 @@ dependencies:
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: cane
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- - "
|
171
|
+
- - ">="
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
173
|
+
version: '0'
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- - "
|
178
|
+
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
180
|
+
version: '0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
182
|
+
name: hashie
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - ">="
|
@@ -193,7 +193,7 @@ dependencies:
|
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
196
|
+
name: httpclient
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
199
|
- - ">="
|
@@ -207,19 +207,19 @@ dependencies:
|
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
210
|
+
name: minitest
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
213
|
- - "~>"
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version: '0
|
215
|
+
version: '4.0'
|
216
216
|
type: :development
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
220
|
- - "~>"
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version: '0
|
222
|
+
version: '4.0'
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
224
|
name: net-http-persistent
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -235,7 +235,27 @@ dependencies:
|
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: '0'
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
|
-
name:
|
238
|
+
name: simplecov
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - "~>"
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0.17'
|
244
|
+
- - "<"
|
245
|
+
- !ruby/object:Gem::Version
|
246
|
+
version: '0.18'
|
247
|
+
type: :development
|
248
|
+
prerelease: false
|
249
|
+
version_requirements: !ruby/object:Gem::Requirement
|
250
|
+
requirements:
|
251
|
+
- - "~>"
|
252
|
+
- !ruby/object:Gem::Version
|
253
|
+
version: '0.17'
|
254
|
+
- - "<"
|
255
|
+
- !ruby/object:Gem::Version
|
256
|
+
version: '0.18'
|
257
|
+
- !ruby/object:Gem::Dependency
|
258
|
+
name: simplecov-rcov
|
239
259
|
requirement: !ruby/object:Gem::Requirement
|
240
260
|
requirements:
|
241
261
|
- - ">="
|
@@ -249,35 +269,35 @@ dependencies:
|
|
249
269
|
- !ruby/object:Gem::Version
|
250
270
|
version: '0'
|
251
271
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
272
|
+
name: test-unit
|
253
273
|
requirement: !ruby/object:Gem::Requirement
|
254
274
|
requirements:
|
255
275
|
- - "~>"
|
256
276
|
- !ruby/object:Gem::Version
|
257
|
-
version: '
|
277
|
+
version: '2'
|
258
278
|
type: :development
|
259
279
|
prerelease: false
|
260
280
|
version_requirements: !ruby/object:Gem::Requirement
|
261
281
|
requirements:
|
262
282
|
- - "~>"
|
263
283
|
- !ruby/object:Gem::Version
|
264
|
-
version: '
|
284
|
+
version: '2'
|
265
285
|
- !ruby/object:Gem::Dependency
|
266
|
-
name:
|
286
|
+
name: typhoeus
|
267
287
|
requirement: !ruby/object:Gem::Requirement
|
268
288
|
requirements:
|
269
|
-
- - "
|
289
|
+
- - "~>"
|
270
290
|
- !ruby/object:Gem::Version
|
271
|
-
version: '
|
291
|
+
version: '1.4'
|
272
292
|
type: :development
|
273
293
|
prerelease: false
|
274
294
|
version_requirements: !ruby/object:Gem::Requirement
|
275
295
|
requirements:
|
276
|
-
- - "
|
296
|
+
- - "~>"
|
277
297
|
- !ruby/object:Gem::Version
|
278
|
-
version: '
|
298
|
+
version: '1.4'
|
279
299
|
- !ruby/object:Gem::Dependency
|
280
|
-
name:
|
300
|
+
name: curb
|
281
301
|
requirement: !ruby/object:Gem::Requirement
|
282
302
|
requirements:
|
283
303
|
- - ">="
|
@@ -291,7 +311,7 @@ dependencies:
|
|
291
311
|
- !ruby/object:Gem::Version
|
292
312
|
version: '0'
|
293
313
|
- !ruby/object:Gem::Dependency
|
294
|
-
name:
|
314
|
+
name: patron
|
295
315
|
requirement: !ruby/object:Gem::Requirement
|
296
316
|
requirements:
|
297
317
|
- - ">="
|
@@ -305,7 +325,7 @@ dependencies:
|
|
305
325
|
- !ruby/object:Gem::Version
|
306
326
|
version: '0'
|
307
327
|
- !ruby/object:Gem::Dependency
|
308
|
-
name:
|
328
|
+
name: require-prof
|
309
329
|
requirement: !ruby/object:Gem::Requirement
|
310
330
|
requirements:
|
311
331
|
- - ">="
|
@@ -319,7 +339,7 @@ dependencies:
|
|
319
339
|
- !ruby/object:Gem::Version
|
320
340
|
version: '0'
|
321
341
|
- !ruby/object:Gem::Dependency
|
322
|
-
name:
|
342
|
+
name: ruby-prof
|
323
343
|
requirement: !ruby/object:Gem::Requirement
|
324
344
|
requirements:
|
325
345
|
- - ">="
|
@@ -332,24 +352,10 @@ dependencies:
|
|
332
352
|
- - ">="
|
333
353
|
- !ruby/object:Gem::Version
|
334
354
|
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
355
|
description: 'Ruby client for Elasticsearch. See the `elasticsearch` gem for full
|
350
356
|
integration.
|
351
357
|
|
352
|
-
'
|
358
|
+
'
|
353
359
|
email:
|
354
360
|
- karel.minarik@elasticsearch.org
|
355
361
|
executables: []
|
@@ -367,6 +373,7 @@ files:
|
|
367
373
|
- lib/elasticsearch-transport.rb
|
368
374
|
- lib/elasticsearch/transport.rb
|
369
375
|
- lib/elasticsearch/transport/client.rb
|
376
|
+
- lib/elasticsearch/transport/redacted.rb
|
370
377
|
- lib/elasticsearch/transport/transport/base.rb
|
371
378
|
- lib/elasticsearch/transport/transport/connections/collection.rb
|
372
379
|
- lib/elasticsearch/transport/transport/connections/connection.rb
|
@@ -379,25 +386,31 @@ files:
|
|
379
386
|
- lib/elasticsearch/transport/transport/serializer/multi_json.rb
|
380
387
|
- lib/elasticsearch/transport/transport/sniffer.rb
|
381
388
|
- lib/elasticsearch/transport/version.rb
|
382
|
-
-
|
389
|
+
- spec/elasticsearch/transport/base_spec.rb
|
390
|
+
- spec/elasticsearch/transport/client_spec.rb
|
391
|
+
- spec/elasticsearch/transport/meta_header_spec.rb
|
392
|
+
- spec/elasticsearch/transport/sniffer_spec.rb
|
393
|
+
- spec/spec_helper.rb
|
383
394
|
- test/integration/transport_test.rb
|
384
395
|
- test/profile/client_benchmark_test.rb
|
385
396
|
- test/test_helper.rb
|
386
|
-
- test/unit/client_test.rb
|
387
397
|
- test/unit/connection_collection_test.rb
|
388
398
|
- test/unit/connection_selector_test.rb
|
389
399
|
- test/unit/connection_test.rb
|
390
400
|
- test/unit/response_test.rb
|
391
401
|
- test/unit/serializer_test.rb
|
392
|
-
- test/unit/sniffer_test.rb
|
393
402
|
- test/unit/transport_base_test.rb
|
394
403
|
- test/unit/transport_curb_test.rb
|
395
404
|
- test/unit/transport_faraday_test.rb
|
396
405
|
- test/unit/transport_manticore_test.rb
|
397
|
-
homepage: https://
|
406
|
+
homepage: https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/index.html
|
398
407
|
licenses:
|
399
|
-
- Apache
|
400
|
-
metadata:
|
408
|
+
- Apache-2.0
|
409
|
+
metadata:
|
410
|
+
homepage_uri: https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/index.html
|
411
|
+
changelog_uri: https://github.com/elastic/elasticsearch-ruby/blob/6.x/CHANGELOG.md
|
412
|
+
source_code_uri: https://github.com/elastic/elasticsearch-ruby/tree/6.x/elasticsearch-transport
|
413
|
+
bug_tracker_uri: https://github.com/elastic/elasticsearch-ruby/issues
|
401
414
|
post_install_message:
|
402
415
|
rdoc_options:
|
403
416
|
- "--charset=UTF-8"
|
@@ -407,30 +420,31 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
407
420
|
requirements:
|
408
421
|
- - ">="
|
409
422
|
- !ruby/object:Gem::Version
|
410
|
-
version: '
|
423
|
+
version: '2.4'
|
411
424
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
412
425
|
requirements:
|
413
426
|
- - ">="
|
414
427
|
- !ruby/object:Gem::Version
|
415
428
|
version: '0'
|
416
429
|
requirements: []
|
417
|
-
|
418
|
-
rubygems_version: 2.6.11
|
430
|
+
rubygems_version: 3.1.4
|
419
431
|
signing_key:
|
420
432
|
specification_version: 4
|
421
433
|
summary: Ruby client for Elasticsearch.
|
422
434
|
test_files:
|
423
|
-
-
|
435
|
+
- spec/elasticsearch/transport/base_spec.rb
|
436
|
+
- spec/elasticsearch/transport/client_spec.rb
|
437
|
+
- spec/elasticsearch/transport/meta_header_spec.rb
|
438
|
+
- spec/elasticsearch/transport/sniffer_spec.rb
|
439
|
+
- spec/spec_helper.rb
|
424
440
|
- test/integration/transport_test.rb
|
425
441
|
- test/profile/client_benchmark_test.rb
|
426
442
|
- test/test_helper.rb
|
427
|
-
- test/unit/client_test.rb
|
428
443
|
- test/unit/connection_collection_test.rb
|
429
444
|
- test/unit/connection_selector_test.rb
|
430
445
|
- test/unit/connection_test.rb
|
431
446
|
- test/unit/response_test.rb
|
432
447
|
- test/unit/serializer_test.rb
|
433
|
-
- test/unit/sniffer_test.rb
|
434
448
|
- test/unit/transport_base_test.rb
|
435
449
|
- test/unit/transport_curb_test.rb
|
436
450
|
- 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
|