elasticsearch-transport 7.5.0 → 7.17.7
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/Gemfile +26 -13
- data/README.md +159 -64
- data/Rakefile +25 -13
- data/elasticsearch-transport.gemspec +57 -63
- data/lib/elasticsearch/transport/client.rb +183 -58
- data/lib/elasticsearch/transport/meta_header.rb +135 -0
- data/lib/elasticsearch/transport/redacted.rb +16 -3
- data/lib/elasticsearch/transport/transport/base.rb +69 -30
- data/lib/elasticsearch/transport/transport/connections/collection.rb +18 -8
- data/lib/elasticsearch/transport/transport/connections/connection.rb +25 -9
- data/lib/elasticsearch/transport/transport/connections/selector.rb +16 -3
- data/lib/elasticsearch/transport/transport/errors.rb +17 -3
- data/lib/elasticsearch/transport/transport/http/curb.rb +60 -35
- data/lib/elasticsearch/transport/transport/http/faraday.rb +32 -9
- data/lib/elasticsearch/transport/transport/http/manticore.rb +51 -31
- data/lib/elasticsearch/transport/transport/loggable.rb +16 -3
- data/lib/elasticsearch/transport/transport/response.rb +16 -4
- data/lib/elasticsearch/transport/transport/serializer/multi_json.rb +16 -3
- data/lib/elasticsearch/transport/transport/sniffer.rb +35 -15
- data/lib/elasticsearch/transport/version.rb +17 -4
- data/lib/elasticsearch/transport.rb +35 -33
- data/lib/elasticsearch-transport.rb +16 -3
- data/spec/elasticsearch/connections/collection_spec.rb +28 -3
- data/spec/elasticsearch/connections/selector_spec.rb +16 -3
- data/spec/elasticsearch/transport/base_spec.rb +104 -43
- data/spec/elasticsearch/transport/client_spec.rb +727 -163
- data/spec/elasticsearch/transport/http/curb_spec.rb +126 -0
- data/spec/elasticsearch/transport/http/faraday_spec.rb +141 -0
- data/spec/elasticsearch/transport/http/manticore_spec.rb +143 -0
- data/spec/elasticsearch/transport/meta_header_spec.rb +301 -0
- data/spec/elasticsearch/transport/sniffer_spec.rb +16 -16
- data/spec/spec_helper.rb +28 -6
- data/test/integration/jruby_test.rb +43 -0
- data/test/integration/transport_test.rb +46 -29
- data/test/profile/client_benchmark_test.rb +16 -3
- data/test/test_helper.rb +22 -25
- data/test/unit/connection_test.rb +23 -5
- data/test/unit/response_test.rb +18 -5
- data/test/unit/serializer_test.rb +16 -3
- data/test/unit/transport_base_test.rb +33 -11
- data/test/unit/transport_curb_test.rb +16 -4
- data/test/unit/transport_faraday_test.rb +18 -5
- data/test/unit/transport_manticore_test.rb +258 -158
- metadata +80 -71
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 515176cfbf829f3153d85e4975eebed91424aaa14256d332f0dc3f87030ce671
|
4
|
+
data.tar.gz: c8bdcb22a2f81446f55d4d3025f05863020629eb0ff139e80832a3dc8f43eb8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 850fc6102767844a698044cbc3cef9e63f01895ef5735e9c9e831db4e62dac9f448c71cc6eac591f5ce3e225b35106a083366ead9e3267d24f8723f81a792f8c
|
7
|
+
data.tar.gz: 18ba115ba8d1b55866806c75845c8a39dd920c9bd227b64e586ecdedc7274530c28dcc3f62bfb70f61510091f2acc3aa67511323e0b6b70c5afdbf5df035f175
|
data/Gemfile
CHANGED
@@ -1,25 +1,38 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more
|
2
|
-
#
|
3
|
-
#
|
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.
|
4
17
|
|
5
18
|
source 'https://rubygems.org'
|
6
19
|
|
7
20
|
# Specify your gem's dependencies in elasticsearch-transport.gemspec
|
8
21
|
gemspec
|
9
22
|
|
10
|
-
if File.exist? File.expand_path(
|
11
|
-
gem 'elasticsearch-api', :
|
23
|
+
if File.exist? File.expand_path('../elasticsearch-api/elasticsearch-api.gemspec', __dir__)
|
24
|
+
gem 'elasticsearch-api', path: File.expand_path('../elasticsearch-api', __dir__), require: false
|
12
25
|
end
|
13
26
|
|
14
|
-
if File.exist? File.expand_path(
|
15
|
-
gem 'elasticsearch
|
27
|
+
if File.exist? File.expand_path('../elasticsearch/elasticsearch.gemspec', __dir__)
|
28
|
+
gem 'elasticsearch', path: File.expand_path('../elasticsearch', __dir__), require: false
|
16
29
|
end
|
17
30
|
|
18
|
-
|
19
|
-
gem 'elasticsearch', :path => File.expand_path("../../elasticsearch", __FILE__), :require => false
|
20
|
-
end
|
21
|
-
|
22
|
-
group :development do
|
31
|
+
group :development, :test do
|
23
32
|
gem 'rspec'
|
24
|
-
|
33
|
+
if defined?(JRUBY_VERSION)
|
34
|
+
gem 'pry-nav'
|
35
|
+
else
|
36
|
+
gem 'pry-byebug'
|
37
|
+
end
|
25
38
|
end
|
data/README.md
CHANGED
@@ -28,12 +28,16 @@ Features overview:
|
|
28
28
|
* Node reloading (based on cluster state) on errors or on demand
|
29
29
|
|
30
30
|
For optimal performance, use a HTTP library which supports persistent ("keep-alive") connections,
|
31
|
-
such as [Typhoeus](https://github.com/typhoeus/typhoeus).
|
32
|
-
Just require the library (`require '
|
33
|
-
|
34
|
-
|
35
|
-
[
|
36
|
-
[
|
31
|
+
such as [patron](https://github.com/toland/patron) or [Typhoeus](https://github.com/typhoeus/typhoeus).
|
32
|
+
Just require the library (`require 'patron'`) in your code, and it will be automatically used.
|
33
|
+
|
34
|
+
Currently these libraries will be automatically detected and used:
|
35
|
+
- [Patron](https://github.com/toland/patron)
|
36
|
+
- [Typhoeus](https://github.com/typhoeus/typhoeus)
|
37
|
+
- [HTTPClient](https://rubygems.org/gems/httpclient)
|
38
|
+
- [Net::HTTP::Persistent](https://rubygems.org/gems/net-http-persistent)
|
39
|
+
|
40
|
+
**Note on [Typhoeus](https://github.com/typhoeus/typhoeus)**: You need to use v1.4.0 or up since older versions are not compatible with Faraday 1.0.
|
37
41
|
|
38
42
|
For detailed information, see example configurations [below](#transport-implementations).
|
39
43
|
|
@@ -69,6 +73,23 @@ Full documentation is available at <http://rubydoc.info/gems/elasticsearch-trans
|
|
69
73
|
|
70
74
|
## Configuration
|
71
75
|
|
76
|
+
* [Setting Hosts](#setting-hosts)
|
77
|
+
* [Default port](#default-port)
|
78
|
+
* [Connect using an Elastic Cloud ID](#connect-using-an-elastic-cloud-id)
|
79
|
+
* [Authentication](#authentication)
|
80
|
+
* [Logging](#logging)
|
81
|
+
* [Custom HTTP Headers](#custom-http-headers)
|
82
|
+
* [Identifying running tasks with X-Opaque-Id](#identifying-running-tasks-with-x-opaque-id)
|
83
|
+
* [Setting Timeouts](#setting-timeouts)
|
84
|
+
* [Randomizing Hosts](#randomizing-hosts)
|
85
|
+
* [Retrying on Failures](#retrying-on-failures)
|
86
|
+
* [Reloading Hosts](#reloading-hosts)
|
87
|
+
* [Connection Selector](#connection-selector)
|
88
|
+
* [Transport Implementations](#transport-implementations)
|
89
|
+
* [Serializer implementations](#serializer-implementations)
|
90
|
+
* [Exception Handling](#exception-handling)
|
91
|
+
* [Development and Community](#development-and-community)
|
92
|
+
|
72
93
|
The client supports many configurations options for setting up and managing connections,
|
73
94
|
configuring logging, customizing the transport library, etc.
|
74
95
|
|
@@ -115,7 +136,7 @@ Please see below for an exception to this when connecting using an Elastic Cloud
|
|
115
136
|
|
116
137
|
If you are using [Elastic Cloud](https://www.elastic.co/cloud), you can provide your cloud id to the client.
|
117
138
|
You must supply your username and password separately, and optionally a port. If no port is supplied,
|
118
|
-
port
|
139
|
+
port 443 will be used.
|
119
140
|
|
120
141
|
Note: Do not enable sniffing when using Elastic Cloud. The nodes are behind a load balancer so
|
121
142
|
Elastic Cloud will take care of everything for you.
|
@@ -144,35 +165,114 @@ use the `transport_options` option:
|
|
144
165
|
Elasticsearch::Client.new url: 'https://username:password@example.com:9200',
|
145
166
|
transport_options: { ssl: { ca_file: '/path/to/cacert.pem' } }
|
146
167
|
|
168
|
+
You can also use [**API Key authentication**](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html):
|
169
|
+
|
170
|
+
``` ruby
|
171
|
+
Elasticsearch::Client.new(
|
172
|
+
host: host,
|
173
|
+
transport_options: transport_options,
|
174
|
+
api_key: credentials
|
175
|
+
)
|
176
|
+
```
|
177
|
+
|
178
|
+
Where credentials is either the base64 encoding of `id` and `api_key` joined by a colon or a hash with the `id` and `api_key`:
|
179
|
+
|
180
|
+
``` ruby
|
181
|
+
Elasticsearch::Client.new(
|
182
|
+
host: host,
|
183
|
+
transport_options: transport_options,
|
184
|
+
api_key: {id: 'my_id', api_key: 'my_api_key'}
|
185
|
+
)
|
186
|
+
```
|
187
|
+
|
147
188
|
### Logging
|
148
189
|
|
149
|
-
To log requests and responses to standard output with the default logger (an instance of Ruby's {::Logger} class),
|
150
|
-
|
190
|
+
To log requests and responses to standard output with the default logger (an instance of Ruby's {::Logger} class), set the `log` argument to true:
|
191
|
+
|
192
|
+
```ruby
|
193
|
+
Elasticsearch::Client.new(log: true)
|
194
|
+
```
|
195
|
+
|
196
|
+
You can also use [ecs-logging](https://github.com/elastic/ecs-logging-ruby). `ecs-logging` is a set of libraries that allows you to transform your application logs to structured logs that comply with the [Elastic Common Schema (ECS)](https://www.elastic.co/guide/en/ecs/current/ecs-reference.html):
|
197
|
+
|
198
|
+
```ruby
|
199
|
+
logger = EcsLogging::Logger.new($stdout)
|
200
|
+
Elasticsearch::Client.new(logger: logger)
|
201
|
+
```
|
151
202
|
|
152
|
-
Elasticsearch::Client.new log: true
|
153
203
|
|
154
204
|
To trace requests and responses in the _Curl_ format, set the `trace` argument:
|
155
205
|
|
156
|
-
|
206
|
+
```ruby
|
207
|
+
Elasticsearch::Client.new(trace: true)
|
208
|
+
```
|
157
209
|
|
158
210
|
You can customize the default logger or tracer:
|
159
211
|
|
212
|
+
```ruby
|
160
213
|
client.transport.logger.formatter = proc { |s, d, p, m| "#{s}: #{m}\n" }
|
161
214
|
client.transport.logger.level = Logger::INFO
|
215
|
+
```
|
162
216
|
|
163
217
|
Or, you can use a custom `::Logger` instance:
|
164
218
|
|
165
|
-
|
219
|
+
```ruby
|
220
|
+
Elasticsearch::Client.new(logger: Logger.new(STDERR))
|
221
|
+
```
|
166
222
|
|
167
223
|
You can pass the client any conforming logger implementation:
|
168
224
|
|
169
|
-
|
225
|
+
```ruby
|
226
|
+
require 'logging' # https://github.com/TwP/logging/
|
227
|
+
|
228
|
+
log = Logging.logger['elasticsearch']
|
229
|
+
log.add_appenders Logging.appenders.stdout
|
230
|
+
log.level = :info
|
231
|
+
|
232
|
+
client = Elasticsearch::Client.new(logger: log)
|
233
|
+
```
|
234
|
+
|
235
|
+
### Custom HTTP Headers
|
170
236
|
|
171
|
-
|
172
|
-
log.add_appenders Logging.appenders.stdout
|
173
|
-
log.level = :info
|
237
|
+
You can set a custom HTTP header on the client's initializer:
|
174
238
|
|
175
|
-
|
239
|
+
```ruby
|
240
|
+
client = Elasticsearch::Client.new(
|
241
|
+
transport_options: {
|
242
|
+
headers:
|
243
|
+
{user_agent: "My App"}
|
244
|
+
}
|
245
|
+
)
|
246
|
+
```
|
247
|
+
|
248
|
+
You can also pass in `headers` as a parameter to any of the API Endpoints to set custom headers for the request:
|
249
|
+
|
250
|
+
```ruby
|
251
|
+
client.search(index: 'myindex', q: 'title:test', headers: {user_agent: "My App"})
|
252
|
+
```
|
253
|
+
|
254
|
+
### Identifying running tasks with X-Opaque-Id
|
255
|
+
|
256
|
+
The X-Opaque-Id header allows to track certain calls, or associate certain tasks with the client that started them ([more on the Elasticsearch docs](https://www.elastic.co/guide/en/elasticsearch/reference/master/tasks.html#_identifying_running_tasks)). To use this feature, you need to set an id for `opaque_id` on the client on each request. Example:
|
257
|
+
|
258
|
+
```ruby
|
259
|
+
client = Elasticsearch::Client.new
|
260
|
+
client.search(index: 'myindex', q: 'title:test', opaque_id: '123456')
|
261
|
+
```
|
262
|
+
The search request will include the following HTTP Header:
|
263
|
+
```
|
264
|
+
X-Opaque-Id: 123456
|
265
|
+
```
|
266
|
+
|
267
|
+
You can also set a prefix for X-Opaque-Id when initializing the client. This will be prepended to the id you set before each request if you're using X-Opaque-Id. Example:
|
268
|
+
```ruby
|
269
|
+
client = Elasticsearch::Client.new(opaque_id_prefix: 'eu-west1')
|
270
|
+
client.search(index: 'myindex', q: 'title:test', opaque_id: '123456')
|
271
|
+
```
|
272
|
+
The request will include the following HTTP Header:
|
273
|
+
```
|
274
|
+
X-Opaque-Id: eu-west1_123456
|
275
|
+
```
|
176
276
|
|
177
277
|
### Setting Timeouts
|
178
278
|
|
@@ -199,11 +299,16 @@ on a different host:
|
|
199
299
|
|
200
300
|
Elasticsearch::Client.new hosts: ['localhost:9200', 'localhost:9201'], retry_on_failure: true
|
201
301
|
|
202
|
-
You can specify how many times
|
203
|
-
(the default is 3 times):
|
302
|
+
By default, the client will retry the request 3 times. You can specify how many times to retry before it raises an exception by passing a number to `retry_on_failure`:
|
204
303
|
|
205
304
|
Elasticsearch::Client.new hosts: ['localhost:9200', 'localhost:9201'], retry_on_failure: 5
|
206
305
|
|
306
|
+
These two parameters can also be used together:
|
307
|
+
|
308
|
+
```ruby
|
309
|
+
Elasticsearch::Client.new hosts: ['localhost:9200', 'localhost:9201'], retry_on_status: [502, 503], retry_on_failure: 10
|
310
|
+
```
|
311
|
+
|
207
312
|
### Reloading Hosts
|
208
313
|
|
209
314
|
Elasticsearch by default dynamically discovers new nodes in the cluster. You can leverage this
|
@@ -268,25 +373,29 @@ preferring HTTP clients with support for persistent connections.
|
|
268
373
|
|
269
374
|
To use the [_Patron_](https://github.com/toland/patron) HTTP, for example, just require it:
|
270
375
|
|
271
|
-
|
376
|
+
```ruby
|
377
|
+
require 'patron'
|
378
|
+
```
|
272
379
|
|
273
380
|
Then, create a new client, and the _Patron_ gem will be used as the "driver":
|
274
381
|
|
275
|
-
|
382
|
+
```ruby
|
383
|
+
client = Elasticsearch::Client.new
|
276
384
|
|
277
|
-
|
278
|
-
|
385
|
+
client.transport.connections.first.connection.builder.adapter
|
386
|
+
# => Faraday::Adapter::Patron
|
279
387
|
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
388
|
+
10.times do
|
389
|
+
client.nodes.stats(metric: 'http')['nodes'].values.each do |n|
|
390
|
+
puts "#{n['name']} : #{n['http']['total_opened']}"
|
391
|
+
end
|
392
|
+
end
|
285
393
|
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
394
|
+
# => Stiletoo : 24
|
395
|
+
# => Stiletoo : 24
|
396
|
+
# => Stiletoo : 24
|
397
|
+
# => ...
|
398
|
+
```
|
290
399
|
|
291
400
|
To use a specific adapter for _Faraday_, pass it as the `adapter` argument:
|
292
401
|
|
@@ -308,44 +417,32 @@ constructor, use the `transport_options` key:
|
|
308
417
|
|
309
418
|
To configure the _Faraday_ instance directly, use a block:
|
310
419
|
|
311
|
-
require '
|
312
|
-
require 'typhoeus/adapters/faraday'
|
420
|
+
require 'patron'
|
313
421
|
|
314
422
|
client = Elasticsearch::Client.new(host: 'localhost', port: '9200') do |f|
|
315
423
|
f.response :logger
|
316
|
-
f.adapter :
|
424
|
+
f.adapter :patron
|
317
425
|
end
|
318
426
|
|
319
|
-
You can use any standard Faraday middleware and plugins in the configuration block,
|
320
|
-
for example sign the requests for the [AWS Elasticsearch service](https://aws.amazon.com/elasticsearch-service/):
|
427
|
+
You can use any standard Faraday middleware and plugins in the configuration block. You can also initialize the transport class yourself, and pass it to the client constructor as the `transport` argument:
|
321
428
|
|
322
|
-
|
429
|
+
```ruby
|
430
|
+
require 'patron'
|
323
431
|
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
region: 'us-east-1'
|
329
|
-
end
|
330
|
-
|
331
|
-
You can also initialize the transport class yourself, and pass it to the client constructor
|
332
|
-
as the `transport` argument:
|
432
|
+
transport_configuration = lambda do |f|
|
433
|
+
f.response :logger
|
434
|
+
f.adapter :patron
|
435
|
+
end
|
333
436
|
|
334
|
-
|
335
|
-
|
437
|
+
transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new \
|
438
|
+
hosts: [ { host: 'localhost', port: '9200' } ],
|
439
|
+
&transport_configuration
|
336
440
|
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new \
|
343
|
-
hosts: [ { host: 'localhost', port: '9200' } ],
|
344
|
-
&transport_configuration
|
441
|
+
# Pass the transport to the client
|
442
|
+
#
|
443
|
+
client = Elasticsearch::Client.new transport: transport
|
444
|
+
```
|
345
445
|
|
346
|
-
# Pass the transport to the client
|
347
|
-
#
|
348
|
-
client = Elasticsearch::Client.new transport: transport
|
349
446
|
|
350
447
|
Instead of passing the transport to the constructor, you can inject it at run time:
|
351
448
|
|
@@ -461,16 +558,14 @@ Github's pull requests and issues are used to communicate, send bug reports and
|
|
461
558
|
To work on the code, clone and bootstrap the main repository first --
|
462
559
|
please see instructions in the main [README](../README.md#development).
|
463
560
|
|
464
|
-
To run tests, launch a testing cluster
|
465
|
-
in the main [README](../README.md#development) -- and use the Rake tasks:
|
561
|
+
To run tests, launch a testing cluster and use the Rake tasks:
|
466
562
|
|
467
563
|
```
|
468
564
|
time rake test:unit
|
469
565
|
time rake test:integration
|
470
566
|
```
|
471
567
|
|
472
|
-
|
473
|
-
can use Ruby 2.x syntax and features.
|
568
|
+
Use `COVERAGE=true` before running a test task to check coverage with Simplecov.
|
474
569
|
|
475
570
|
## License
|
476
571
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,19 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more
|
2
|
-
#
|
3
|
-
#
|
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.
|
4
17
|
|
5
18
|
require "bundler/gem_tasks"
|
6
19
|
|
@@ -14,38 +27,37 @@ require 'rake/testtask'
|
|
14
27
|
require 'rspec/core/rake_task'
|
15
28
|
|
16
29
|
namespace :test do
|
17
|
-
|
18
|
-
desc "Wait for Elasticsearch to be in a green state"
|
30
|
+
desc 'Wait for Elasticsearch to be in a green state'
|
19
31
|
task :wait_for_green do
|
20
32
|
sh '../scripts/wait-cluster.sh'
|
21
33
|
end
|
22
34
|
|
23
|
-
task :spec => :wait_for_green
|
24
35
|
RSpec::Core::RakeTask.new(:spec)
|
25
36
|
|
26
37
|
Rake::TestTask.new(:unit) do |test|
|
27
38
|
test.libs << 'lib' << 'test'
|
28
|
-
test.test_files = FileList[
|
39
|
+
test.test_files = FileList['test/unit/**/*_test.rb']
|
29
40
|
test.verbose = false
|
30
41
|
test.warning = false
|
31
42
|
end
|
32
43
|
|
33
44
|
Rake::TestTask.new(:integration) do |test|
|
34
45
|
test.libs << 'lib' << 'test'
|
35
|
-
test.test_files = FileList[
|
36
|
-
test.deps = [
|
46
|
+
test.test_files = FileList['test/integration/**/*_test.rb']
|
47
|
+
test.deps = ['test:wait_for_green', 'test:spec']
|
37
48
|
test.verbose = false
|
38
49
|
test.warning = false
|
39
50
|
end
|
40
51
|
|
41
|
-
|
42
|
-
|
43
|
-
|
52
|
+
desc 'Run all tests'
|
53
|
+
task :all do
|
54
|
+
Rake::Task['test:unit'].invoke
|
55
|
+
Rake::Task['test:integration'].invoke
|
44
56
|
end
|
45
57
|
|
46
58
|
Rake::TestTask.new(:profile) do |test|
|
47
59
|
test.libs << 'lib' << 'test'
|
48
|
-
test.test_files = FileList[
|
60
|
+
test.test_files = FileList['test/profile/**/*_test.rb']
|
49
61
|
end
|
50
62
|
|
51
63
|
namespace :cluster do
|
@@ -1,6 +1,19 @@
|
|
1
|
-
# Licensed to Elasticsearch B.V under one or more
|
2
|
-
#
|
3
|
-
#
|
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.
|
4
17
|
|
5
18
|
# coding: utf-8
|
6
19
|
lib = File.expand_path('../lib', __FILE__)
|
@@ -8,74 +21,55 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
8
21
|
require 'elasticsearch/transport/version'
|
9
22
|
|
10
23
|
Gem::Specification.new do |s|
|
11
|
-
s.name =
|
24
|
+
s.name = 'elasticsearch-transport'
|
12
25
|
s.version = Elasticsearch::Transport::VERSION
|
13
|
-
s.authors = [
|
14
|
-
s.email = [
|
15
|
-
s.summary =
|
16
|
-
s.homepage =
|
17
|
-
s.license =
|
18
|
-
|
26
|
+
s.authors = ['Karel Minarik']
|
27
|
+
s.email = ['karel.minarik@elasticsearch.org']
|
28
|
+
s.summary = 'Ruby client for Elasticsearch.'
|
29
|
+
s.homepage = 'https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/7.16/index.html'
|
30
|
+
s.license = 'Apache-2.0'
|
31
|
+
s.metadata = {
|
32
|
+
'homepage_uri' => 'https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/7.16/index.html',
|
33
|
+
'changelog_uri' => 'https://github.com/elastic/elasticsearch-ruby/blob/7.16/CHANGELOG.md',
|
34
|
+
'source_code_uri' => 'https://github.com/elastic/elasticsearch-ruby/tree/7.16/elasticsearch-transport',
|
35
|
+
'bug_tracker_uri' => 'https://github.com/elastic/elasticsearch-ruby/issues'
|
36
|
+
}
|
19
37
|
s.files = `git ls-files`.split($/)
|
20
38
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
39
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
22
|
-
s.require_paths = [
|
23
|
-
|
24
|
-
s.extra_rdoc_files = [ "README.md", "LICENSE" ]
|
25
|
-
s.rdoc_options = [ "--charset=UTF-8" ]
|
26
|
-
|
27
|
-
s.required_ruby_version = '>= 1.9'
|
28
|
-
|
29
|
-
s.add_dependency "multi_json"
|
30
|
-
s.add_dependency "faraday", '>= 0.14', "< 1"
|
31
|
-
|
32
|
-
if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
|
33
|
-
s.add_dependency "system_timer"
|
34
|
-
end
|
35
|
-
|
36
|
-
s.add_development_dependency "bundler"
|
37
|
-
|
38
|
-
if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
|
39
|
-
s.add_development_dependency "rake", "~> 11.1"
|
40
|
-
else
|
41
|
-
s.add_development_dependency "rake", "< 11.0"
|
42
|
-
end
|
43
|
-
|
44
|
-
s.add_development_dependency "ansi"
|
45
|
-
s.add_development_dependency "shoulda-context"
|
46
|
-
s.add_development_dependency "mocha"
|
47
|
-
s.add_development_dependency "yard"
|
48
|
-
s.add_development_dependency "pry"
|
40
|
+
s.require_paths = ['lib']
|
49
41
|
|
50
|
-
|
51
|
-
s.
|
52
|
-
s.add_development_dependency "patron" unless defined? JRUBY_VERSION
|
53
|
-
s.add_development_dependency "typhoeus", '~> 0.6'
|
54
|
-
s.add_development_dependency "net-http-persistent"
|
55
|
-
s.add_development_dependency "httpclient"
|
56
|
-
s.add_development_dependency "manticore", '~> 0.6' if defined? JRUBY_VERSION
|
57
|
-
s.add_development_dependency "hashie"
|
42
|
+
s.extra_rdoc_files = [ 'README.md', 'LICENSE' ]
|
43
|
+
s.rdoc_options = [ '--charset=UTF-8' ]
|
58
44
|
|
59
|
-
|
60
|
-
if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
|
61
|
-
s.add_development_dependency "test-unit", '~> 2'
|
62
|
-
s.add_development_dependency "json", '~> 1.8'
|
63
|
-
end
|
45
|
+
s.required_ruby_version = '>= 2.4'
|
64
46
|
|
65
|
-
|
66
|
-
|
67
|
-
s.add_development_dependency "minitest-reporters"
|
68
|
-
s.add_development_dependency "elasticsearch-extensions"
|
69
|
-
s.add_development_dependency "ruby-prof" unless defined?(JRUBY_VERSION) || defined?(Rubinius)
|
70
|
-
s.add_development_dependency "require-prof" unless defined?(JRUBY_VERSION) || defined?(Rubinius)
|
71
|
-
s.add_development_dependency "simplecov", '~> 0.17', '< 0.18'
|
72
|
-
s.add_development_dependency "simplecov-rcov"
|
73
|
-
s.add_development_dependency "cane"
|
74
|
-
end
|
47
|
+
s.add_dependency 'multi_json'
|
48
|
+
s.add_dependency 'faraday', '~> 1'
|
75
49
|
|
76
|
-
|
77
|
-
|
78
|
-
|
50
|
+
s.add_development_dependency 'ansi'
|
51
|
+
s.add_development_dependency 'bundler'
|
52
|
+
s.add_development_dependency 'cane'
|
53
|
+
s.add_development_dependency 'curb' unless defined? JRUBY_VERSION
|
54
|
+
s.add_development_dependency 'elasticsearch', ['>= 7', '< 8.0.0']
|
55
|
+
s.add_development_dependency 'elasticsearch-extensions'
|
56
|
+
s.add_development_dependency 'hashie'
|
57
|
+
s.add_development_dependency 'httpclient'
|
58
|
+
s.add_development_dependency 'manticore' if defined? JRUBY_VERSION
|
59
|
+
s.add_development_dependency 'minitest'
|
60
|
+
s.add_development_dependency 'minitest-reporters'
|
61
|
+
s.add_development_dependency 'mocha'
|
62
|
+
s.add_development_dependency 'net-http-persistent'
|
63
|
+
s.add_development_dependency 'patron' unless defined? JRUBY_VERSION
|
64
|
+
s.add_development_dependency 'pry'
|
65
|
+
s.add_development_dependency 'rake', '~> 13'
|
66
|
+
s.add_development_dependency 'require-prof' unless defined?(JRUBY_VERSION) || defined?(Rubinius)
|
67
|
+
s.add_development_dependency 'ruby-prof' unless defined?(JRUBY_VERSION) || defined?(Rubinius)
|
68
|
+
s.add_development_dependency 'shoulda-context'
|
69
|
+
s.add_development_dependency 'simplecov'
|
70
|
+
s.add_development_dependency 'test-unit', '~> 2'
|
71
|
+
s.add_development_dependency 'typhoeus', '~> 1.4'
|
72
|
+
s.add_development_dependency 'yard'
|
79
73
|
|
80
74
|
s.description = <<-DESC.gsub(/^ /, '')
|
81
75
|
Ruby client for Elasticsearch. See the `elasticsearch` gem for full integration.
|