elastic-transport 8.1.2 → 8.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f977afd217e311b260201a62db8a2a2a672441c105a24a01d57dca297589c03
4
- data.tar.gz: 4c10a784bc750400d6461095c7ff82a37efbc0d5968726f9776488b19b33c97a
3
+ metadata.gz: aca3fc15486eeb7455f903dbaa5b6a594d4fd410f895cff6b3bf832c0dcad8b4
4
+ data.tar.gz: 4fd798b71008e3bba436434a5c98321fcd2b15934a6244908966c8b9cdd5c3e0
5
5
  SHA512:
6
- metadata.gz: 29e8f88f113b5322a40bd26f32adfb4712ea8274ac7b3520ee2f366fb48db8e223da353264cace594c0567614ec589180046fbfe1f89c8157e2643a93478ff83
7
- data.tar.gz: d1e142bd3b71f246bfb56100d5e61d8d8e70360502eaa1e2071b848367b5f56f1020dba78f69aa38524a011ba0d7b96c18085aa37195e033fcf8aad3cbd6e990
6
+ metadata.gz: a33a557b17fc75fbc2cd9b8fb713603b67c35097fce929ccdee0b81b76c58c05885286aeb1aeed8c72068d6c12a83b51e6dc1f9f07678d6e17f51ce962cb0af8
7
+ data.tar.gz: 5105d1a01106314206e250a105329abfb9553f6c12170bafaf8b7eb4741f5d7b9b414027919aac9df9867ee0859fbfce6b492fbc64a8335f17eebcc7fd109cf4
@@ -4,7 +4,7 @@ jobs:
4
4
  build:
5
5
  runs-on: ubuntu-latest
6
6
  steps:
7
- - uses: actions/checkout@v3
7
+ - uses: actions/checkout@v2
8
8
  - uses: ruby/setup-ruby@v1
9
9
  with:
10
10
  ruby-version: 3
@@ -1,13 +1,14 @@
1
- name: 8.1 tests
1
+ name: main tests
2
2
  on:
3
3
  push:
4
4
  branches:
5
- - 8.1
5
+ - main
6
6
  pull_request:
7
7
  branches:
8
- - 8.1
8
+ - main
9
9
  jobs:
10
- test-ruby:
10
+ test:
11
+ name: 'Main tests'
11
12
  env:
12
13
  TEST_ES_SERVER: http://localhost:9250
13
14
  PORT: 9250
@@ -15,9 +16,10 @@ jobs:
15
16
  fail-fast: false
16
17
  matrix:
17
18
  ruby: [ '2.7', '3.0', '3.1', '3.2', 'jruby-9.3', 'jruby-9.4' ]
19
+ es_version: ['8.4-SNAPSHOT', '8.5-SNAPSHOT', '8.6-SNAPSHOT']
18
20
  runs-on: ubuntu-latest
19
21
  steps:
20
- - uses: actions/checkout@v3
22
+ - uses: actions/checkout@v2
21
23
  - name: Increase system limits
22
24
  run: |
23
25
  sudo swapoff -a
@@ -26,7 +28,7 @@ jobs:
26
28
  sudo sysctl -w vm.max_map_count=262144
27
29
  - uses: elastic/elastic-github-actions/elasticsearch@master
28
30
  with:
29
- stack-version: 8.9-SNAPSHOT
31
+ stack-version: ${{ matrix.es_version }}
30
32
  security-enabled: false
31
33
  - uses: ruby/setup-ruby@v1
32
34
  with:
@@ -43,4 +45,42 @@ jobs:
43
45
  run: bundle exec rake test:spec
44
46
  - name: integration tests
45
47
  run: bundle exec rake test:integration
46
-
48
+ test-faraday1:
49
+ name: 'Test Faraday 1'
50
+ env:
51
+ TEST_ES_SERVER: http://localhost:9250
52
+ PORT: 9250
53
+ strategy:
54
+ fail-fast: false
55
+ matrix:
56
+ ruby: [ '2.7', '3.0', '3.1', '3.2', 'jruby-9.3' ]
57
+ es_version: ['8.6-SNAPSHOT']
58
+ runs-on: ubuntu-latest
59
+ steps:
60
+ - uses: actions/checkout@v2
61
+ - name: Increase system limits
62
+ run: |
63
+ sudo swapoff -a
64
+ sudo sysctl -w vm.swappiness=1
65
+ sudo sysctl -w fs.file-max=262144
66
+ sudo sysctl -w vm.max_map_count=262144
67
+ - uses: elastic/elastic-github-actions/elasticsearch@master
68
+ with:
69
+ stack-version: ${{ matrix.es_version }}
70
+ security-enabled: false
71
+ - uses: ruby/setup-ruby@v1
72
+ with:
73
+ ruby-version: ${{ matrix.ruby }}
74
+ - name: Build and test with Rake
75
+ run: |
76
+ sudo apt-get update
77
+ sudo apt-get install libcurl4-openssl-dev
78
+ ruby -v
79
+ gem install bundler
80
+ BUNDLE_GEMFILE=./Gemfile-faraday1.gemfile bundle install
81
+ - name: faraday1 unit tests
82
+ run: BUNDLE_GEMFILE=./Gemfile-faraday1.gemfile bundle exec rake test:faraday1:unit
83
+ - name: specs
84
+ run: BUNDLE_GEMFILE=./Gemfile-faraday1.gemfile bundle exec rake test:faraday1:spec
85
+ - name: integration tests
86
+ run: BUNDLE_GEMFILE=./Gemfile-faraday1.gemfile bundle exec rake test:faraday1:integration
data/.gitignore CHANGED
@@ -5,7 +5,7 @@
5
5
  .bundle
6
6
  .config
7
7
  .yardoc
8
- Gemfile.lock
8
+ Gemfile*.lock
9
9
  InstalledFiles
10
10
  _yardoc
11
11
  coverage
data/CHANGELOG.md CHANGED
@@ -1,16 +1,11 @@
1
- ## 8.1.2
1
+ ## 8.2.0
2
2
 
3
- Backports the following fix from 8.2:
3
+ Tested versions of Ruby: (MRI) 2.7, 3.0, 3.1, 3.2, JRuby 9.3 and JRuby 9.4.
4
4
 
5
- - Fixes enforcing UTF-8 in Response body, causing an error when the string is frozen, particularly when using webmock. [issue #63](https://github.com/elastic/elastic-transport-ruby/issues/63)
6
-
7
- ## 8.1.1
8
-
9
- Backports the following updates from 8.2:
10
-
11
- - Refactors `apply_headers` in base and manticore implementation: When passing in an object to the initializer, `apply_headers` would mutate this object and in certain conditions, this would raise `RuntimeError` in JRuby 9.3 and `ConcurrencyError` in JRuby 9.4. This update clones the options object instead.
12
- - Fixes [issue #44](https://github.com/elastic/elastic-transport-ruby/issues/44), raising `Elastic::Transport::Transport::Error` instead of `Faraday::ConnectionFailed` (or any other Faraday error class) when a host is unreachable.
13
- - Fixes parsing ipv4 addresses like `inet[/127.0.0.1:9200]` in sniffer, [issue #48](https://github.com/elastic/elastic-transport-ruby/issues/48). [Pull Request](https://github.com/elastic/elastic-transport-ruby/pull/49) by [@robbat2](https://github.com/robbat2), thank you!
5
+ - Fixes [issue #44](https://github.com/elastic/elastic-transport-ruby/issues/44), raising `Elasticsearch::Transport::Transport::Error` instead of `Faraday::ConnectionFailed` (or any other Faraday error class) when a host is unreachable.
6
+ - Removes development dependency on `ansi`, it hasn't been updated for years.
7
+ - Adds `rake console` task to run IRB with the Elastic transport client libraries loaded.
8
+ - General refactors, cleanup and updates in code for `base.rb` (The base class used by HTTP implementations Faraday, Manticore, Curb), `errors.rb`, `faraday.rb`, and more.
14
9
 
15
10
  ## 8.1.0
16
11
 
data/Gemfile CHANGED
@@ -20,15 +20,11 @@ source 'https://rubygems.org'
20
20
  # Specify your gem's dependencies in elasticsearch-transport.gemspec
21
21
  gemspec
22
22
 
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
25
- end
26
-
27
- if File.exist? File.expand_path('../elasticsearch/elasticsearch.gemspec', __dir__)
28
- gem 'elasticsearch', path: File.expand_path('../elasticsearch', __dir__), require: false
29
- end
30
-
31
23
  group :development, :test do
24
+ gem 'faraday-httpclient'
25
+ gem 'faraday-net_http_persistent'
26
+ gem 'faraday-patron' unless defined? JRUBY_VERSION
27
+ gem 'faraday-typhoeus'
32
28
  gem 'rspec'
33
29
  if defined?(JRUBY_VERSION)
34
30
  gem 'pry-nav'
@@ -0,0 +1,39 @@
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
+
18
+ source 'https://rubygems.org'
19
+
20
+ # Usage:
21
+ #
22
+ # $ BUNDLE_GEMFILE=./Gemfile-faraday1.gemfile bundle install
23
+ # $ BUNDLE_GEMFILE=./Gemfile-faraday1.gemfile bundle exec rake test:faraday1:unit
24
+
25
+ gem 'faraday', '~> 1'
26
+ gemspec path: './'
27
+
28
+ group :development, :test do
29
+ gem 'httpclient'
30
+ gem 'net-http-persistent'
31
+ gem 'patron' unless defined? JRUBY_VERSION
32
+ gem 'rspec'
33
+ gem 'typhoeus'
34
+ if defined?(JRUBY_VERSION)
35
+ gem 'pry-nav'
36
+ else
37
+ gem 'pry-byebug'
38
+ end
39
+ end
data/README.md CHANGED
@@ -15,7 +15,7 @@ response = client.perform_request('GET', '_cluster/health')
15
15
 
16
16
  **Refer to [the official documentation on Elastic Transport](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/transport.html).**
17
17
 
18
- **Refer to [Advanced Configuration](https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/advanced-config.html) to read about more configuration options.**
18
+ **Refer to [Advanced Configuration](https://elasticsearch-ruby_1881.docs-preview.app.elstc.co/guide/en/elasticsearch/client/ruby-api/master/advanced-config.html) to read about more configuration options.**
19
19
 
20
20
  ## Compatibility
21
21
 
data/Rakefile CHANGED
@@ -18,13 +18,22 @@
18
18
  require 'bundler/gem_tasks'
19
19
  require 'mkmf'
20
20
 
21
- desc "Run unit tests"
21
+ desc 'Run unit tests'
22
22
  task default: 'test:unit'
23
23
  task test: 'test:unit'
24
24
 
25
25
  # ----- Test tasks ------------------------------------------------------------
26
26
  require 'rake/testtask'
27
27
  require 'rspec/core/rake_task'
28
+ FARADAY1_GEMFILE = 'Gemfile-faraday1.gemfile'.freeze
29
+ GEMFILES = ['Gemfile', FARADAY1_GEMFILE].freeze
30
+
31
+ task :install do
32
+ GEMFILES.each do |gemfile|
33
+ gemfile = File.expand_path("../#{gemfile}", __FILE__)
34
+ sh "bundle install --gemfile #{gemfile}"
35
+ end
36
+ end
28
37
 
29
38
  namespace :test do
30
39
  RSpec::Core::RakeTask.new(:spec)
@@ -46,6 +55,7 @@ namespace :test do
46
55
  desc 'Run all tests'
47
56
  task :all do
48
57
  Rake::Task['test:unit'].invoke
58
+ Rake::Task['test:spec'].invoke
49
59
  Rake::Task['test:integration'].invoke
50
60
  end
51
61
 
@@ -53,6 +63,34 @@ namespace :test do
53
63
  test.libs << 'lib' << 'test'
54
64
  test.test_files = FileList['test/profile/**/*_test.rb']
55
65
  end
66
+
67
+ namespace :faraday1 do
68
+ desc 'Faraday 1: Run RSpec with dependency on Faraday 1'
69
+ task :spec do
70
+ sh "BUNDLE_GEMFILE=#{FARADAY1_GEMFILE} bundle exec rspec"
71
+ end
72
+
73
+ desc 'Faraday 1: Run unit tests with dependency on Faraday 1'
74
+ task :unit do
75
+ Dir.glob('./test/unit/**/**.rb').each do |test|
76
+ sh "BUNDLE_GEMFILE=#{FARADAY1_GEMFILE} ruby -Ilib:test #{test}"
77
+ end
78
+ end
79
+
80
+ desc 'Faraday 1: Run integration tests with dependency on Faraday 1'
81
+ task :integration do
82
+ Dir.glob('./test/integration/**/**.rb').each do |test|
83
+ sh "BUNDLE_GEMFILE=#{FARADAY1_GEMFILE} ruby -Ilib:test #{test}"
84
+ end
85
+ end
86
+
87
+ desc 'Faraday 1: Run all tests'
88
+ task :all do
89
+ Rake::Task['test:faraday1:unit'].invoke
90
+ Rake::Task['test:faraday1:spec'].invoke
91
+ Rake::Task['test:faraday1:integration'].invoke
92
+ end
93
+ end
56
94
  end
57
95
 
58
96
  namespace :docker do
@@ -72,6 +110,15 @@ namespace :docker do
72
110
  end
73
111
  end
74
112
 
113
+ desc 'Run Ruby console with the Elastic transport client libraries loaded'
114
+ task :console do
115
+ require 'irb'
116
+ require 'irb/completion'
117
+ require 'elastic-transport'
118
+ ARGV.clear
119
+ IRB.start
120
+ end
121
+
75
122
  # ----- Documentation tasks ---------------------------------------------------
76
123
  require 'yard'
77
124
  YARD::Rake::YardocTask.new(:doc) do |t|
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.name = "elastic-transport"
25
25
  s.version = Elastic::Transport::VERSION
26
26
  s.authors = ['Karel Minarik', 'Emily Stolfo', 'Fernando Briano']
27
- s.email = ['clients-team@elastic.co']
27
+ s.email = ['support@elastic.co']
28
28
  s.summary = 'Low level Ruby client for Elastic services.'
29
29
  s.homepage = 'https://github.com/elastic/elastic-transport-ruby'
30
30
  s.license = 'Apache-2.0'
@@ -44,20 +44,18 @@ Gem::Specification.new do |s|
44
44
 
45
45
  s.required_ruby_version = '>= 2.5'
46
46
 
47
+ s.add_dependency 'faraday', '< 3'
47
48
  s.add_dependency 'multi_json'
48
- s.add_dependency 'faraday', '~> 1'
49
49
 
50
+ # Faraday Adapters
51
+ s.add_development_dependency 'manticore' if defined? JRUBY_VERSION
52
+ s.add_development_dependency 'curb' unless defined? JRUBY_VERSION
50
53
  s.add_development_dependency 'bundler'
51
54
  s.add_development_dependency 'cane'
52
- s.add_development_dependency 'curb' unless defined? JRUBY_VERSION
53
55
  s.add_development_dependency 'hashie'
54
- s.add_development_dependency 'httpclient'
55
- s.add_development_dependency 'manticore' if defined? JRUBY_VERSION
56
56
  s.add_development_dependency 'minitest'
57
57
  s.add_development_dependency 'minitest-reporters'
58
58
  s.add_development_dependency 'mocha'
59
- s.add_development_dependency 'net-http-persistent'
60
- s.add_development_dependency 'patron' unless defined? JRUBY_VERSION
61
59
  s.add_development_dependency 'pry'
62
60
  s.add_development_dependency 'rake', '~> 13'
63
61
  s.add_development_dependency 'require-prof' unless defined?(JRUBY_VERSION) || defined?(Rubinius)
@@ -65,7 +63,6 @@ Gem::Specification.new do |s|
65
63
  s.add_development_dependency 'shoulda-context'
66
64
  s.add_development_dependency 'simplecov'
67
65
  s.add_development_dependency 'test-unit', '~> 2'
68
- s.add_development_dependency 'typhoeus', '~> 1.4'
69
66
  s.add_development_dependency 'yard'
70
67
 
71
68
  s.description = <<-DESC.gsub(/^ /, '')
@@ -283,24 +283,26 @@ module Elastic
283
283
  # Auto-detect the best adapter (HTTP "driver") available, based on libraries
284
284
  # loaded by the user, preferring those with persistent connections
285
285
  # ("keep-alive") by default
286
+ # Check adapters based on the usage of Faraday 1 or 2. Faraday should be defined here
287
+ # since this is only called when transport class is Transport::HTTP::Faraday
286
288
  #
287
289
  # @return [Symbol]
288
290
  #
289
291
  # @api private
290
292
  #
291
293
  def __auto_detect_adapter
292
- case
293
- when defined?(::Patron)
294
- :patron
295
- when defined?(::Typhoeus)
296
- :typhoeus
297
- when defined?(::HTTPClient)
298
- :httpclient
299
- when defined?(::Net::HTTP::Persistent)
300
- :net_http_persistent
294
+ if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new(2)
295
+ return :patron if defined?(Faraday::Adapter::Patron)
296
+ return :typhoeus if defined?(Faraday::Adapter::Typhoeus)
297
+ return :httpclient if defined?(Faraday::Adapter::HTTPClient)
298
+ return :net_http_persistent if defined?(Faraday::Adapter::NetHttpPersistent)
301
299
  else
302
- ::Faraday.default_adapter
300
+ return :patron if defined?(::Patron)
301
+ return :typhoeus if defined?(::Typhoeus)
302
+ return :httpclient if defined?(::HTTPClient)
303
+ return :net_http_persistent if defined?(::Net::HTTP::Persistent)
303
304
  end
305
+ ::Faraday.default_adapter
304
306
  end
305
307
  end
306
308
  end
@@ -103,31 +103,31 @@ module Elastic
103
103
  adapter_version = case @arguments[:adapter]
104
104
  when :patron
105
105
  version = Patron::VERSION if defined?(::Patron::VERSION)
106
- {pt: version}
106
+ { pt: version }
107
107
  when :net_http
108
108
  version = if defined?(Net::HTTP::VERSION)
109
109
  Net::HTTP::VERSION
110
110
  elsif defined?(Net::HTTP::HTTPVersion)
111
111
  Net::HTTP::HTTPVersion
112
112
  end
113
- {nh: version}
113
+ { nh: version }
114
114
  when :typhoeus
115
115
  version = Typhoeus::VERSION if defined?(::Typhoeus::VERSION)
116
- {ty: version}
116
+ { ty: version }
117
117
  when :httpclient
118
118
  version = HTTPClient::VERSION if defined?(HTTPClient::VERSION)
119
- {hc: version}
119
+ { hc: version }
120
120
  when :net_http_persistent
121
121
  version = Net::HTTP::Persistent::VERSION if defined?(Net::HTTP::Persistent::VERSION)
122
- {np: version}
122
+ { np: version }
123
123
  else
124
124
  {}
125
125
  end
126
- {fd: Faraday::VERSION}.merge(adapter_version)
126
+ { fd: Faraday::VERSION }.merge(adapter_version)
127
127
  elsif defined?(Transport::HTTP::Curb) && @transport_class == Transport::HTTP::Curb
128
- {cl: Curl::CURB_VERSION}
128
+ { cl: Curl::CURB_VERSION }
129
129
  elsif defined?(Transport::HTTP::Manticore) && @transport_class == Transport::HTTP::Manticore
130
- {mc: Manticore::VERSION}
130
+ { mc: Manticore::VERSION }
131
131
  end
132
132
  end
133
133
  end