elasticsearch-transport 7.17.9 → 7.17.10
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 +4 -0
- data/Gemfile-faraday1.gemfile +47 -0
- data/Rakefile +38 -0
- data/elasticsearch-transport.gemspec +4 -6
- data/lib/elasticsearch/transport/version.rb +1 -1
- data/spec/elasticsearch/transport/base_spec.rb +4 -2
- data/spec/elasticsearch/transport/client_spec.rb +11 -5
- data/spec/elasticsearch/transport/meta_header_spec.rb +2 -2
- data/spec/spec_helper.rb +4 -0
- data/test/integration/transport_test.rb +90 -44
- data/test/test_helper.rb +4 -0
- data/test/unit/adapters_test.rb +88 -0
- metadata +17 -50
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9e0c37098be528ebc37efec244285f3601ba8251c355195d5d64b5d3d6146b01
         | 
| 4 | 
            +
              data.tar.gz: 7dd46af46b3ae346e4f76a6f8cae669e27964cddd8cd9e91ca4329cf34f8fb74
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7c1d381899e45182eb000f45f1e014c2944741f817276424cefcbce05e26878da524ecc0c8d64c2dba3b290e755b30a7428b11fb6d65fd417528d92007418ed6
         | 
| 7 | 
            +
              data.tar.gz: f2639368b74d2884376420cccb89e591dae6ecbfdc4632224d1f073ba34000ea54c498e5cb6256a60dda8f9a9a02a218158fbef64d62e1b6118b13b6912a2334
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -29,6 +29,10 @@ if File.exist? File.expand_path('../elasticsearch/elasticsearch.gemspec', __dir_ | |
| 29 29 | 
             
            end
         | 
| 30 30 |  | 
| 31 31 | 
             
            group :development, :test do
         | 
| 32 | 
            +
              gem 'faraday-httpclient'
         | 
| 33 | 
            +
              gem 'faraday-net_http_persistent'
         | 
| 34 | 
            +
              gem 'faraday-patron' unless defined? JRUBY_VERSION
         | 
| 35 | 
            +
              gem 'faraday-typhoeus'
         | 
| 32 36 | 
             
              gem 'rspec'
         | 
| 33 37 | 
             
              if defined?(JRUBY_VERSION)
         | 
| 34 38 | 
             
                gem 'pry-nav'
         | 
| @@ -0,0 +1,47 @@ | |
| 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 | 
            +
            if File.exist? File.expand_path('../elasticsearch-api/elasticsearch-api.gemspec', __dir__)
         | 
| 29 | 
            +
              gem 'elasticsearch-api', path: File.expand_path('../elasticsearch-api', __dir__), require: false
         | 
| 30 | 
            +
            end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            if File.exist? File.expand_path('../elasticsearch/elasticsearch.gemspec', __dir__)
         | 
| 33 | 
            +
              gem 'elasticsearch', path: File.expand_path('../elasticsearch', __dir__), require: false
         | 
| 34 | 
            +
            end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            group :development, :test do
         | 
| 37 | 
            +
              gem 'httpclient'
         | 
| 38 | 
            +
              gem 'net-http-persistent'
         | 
| 39 | 
            +
              gem 'patron' unless defined? JRUBY_VERSION
         | 
| 40 | 
            +
              gem 'typhoeus'
         | 
| 41 | 
            +
              gem 'rspec'
         | 
| 42 | 
            +
              if defined?(JRUBY_VERSION)
         | 
| 43 | 
            +
                gem 'pry-nav'
         | 
| 44 | 
            +
              else
         | 
| 45 | 
            +
                gem 'pry-byebug'
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -25,6 +25,15 @@ task :test    => 'test:unit' | |
| 25 25 |  | 
| 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 | 
             
              desc 'Wait for Elasticsearch to be in a green state'
         | 
| @@ -52,6 +61,7 @@ namespace :test do | |
| 52 61 | 
             
              desc 'Run all tests'
         | 
| 53 62 | 
             
              task :all do
         | 
| 54 63 | 
             
                Rake::Task['test:unit'].invoke
         | 
| 64 | 
            +
                Rake::Task['test:spec'].invoke
         | 
| 55 65 | 
             
                Rake::Task['test:integration'].invoke
         | 
| 56 66 | 
             
              end
         | 
| 57 67 |  | 
| @@ -60,6 +70,34 @@ namespace :test do | |
| 60 70 | 
             
                test.test_files = FileList['test/profile/**/*_test.rb']
         | 
| 61 71 | 
             
              end
         | 
| 62 72 |  | 
| 73 | 
            +
              namespace :faraday1 do
         | 
| 74 | 
            +
                desc 'Faraday 1: Run RSpec with dependency on Faraday 1'
         | 
| 75 | 
            +
                task :spec do
         | 
| 76 | 
            +
                  sh "BUNDLE_GEMFILE=#{FARADAY1_GEMFILE} bundle exec rspec"
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                desc 'Faraday 1: Run unit tests with dependency on Faraday 1'
         | 
| 80 | 
            +
                task :unit do
         | 
| 81 | 
            +
                  Dir.glob('./test/unit/**/**.rb').each do |test|
         | 
| 82 | 
            +
                    sh "BUNDLE_GEMFILE=#{FARADAY1_GEMFILE} ruby -Ilib:test #{test}"
         | 
| 83 | 
            +
                  end
         | 
| 84 | 
            +
                end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                desc 'Faraday 1: Run integration tests with dependency on Faraday 1'
         | 
| 87 | 
            +
                task :integration do
         | 
| 88 | 
            +
                  Dir.glob('./test/integration/**/**.rb').each do |test|
         | 
| 89 | 
            +
                    sh "BUNDLE_GEMFILE=#{FARADAY1_GEMFILE} ruby -Ilib:test #{test}"
         | 
| 90 | 
            +
                  end
         | 
| 91 | 
            +
                end
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                desc 'Faraday 1: Run all tests'
         | 
| 94 | 
            +
                task :all do
         | 
| 95 | 
            +
                  Rake::Task['test:faraday1:unit'].invoke
         | 
| 96 | 
            +
                  Rake::Task['test:faraday1:spec'].invoke
         | 
| 97 | 
            +
                  Rake::Task['test:faraday1:integration'].invoke
         | 
| 98 | 
            +
                end
         | 
| 99 | 
            +
              end
         | 
| 100 | 
            +
             | 
| 63 101 | 
             
              namespace :cluster do
         | 
| 64 102 | 
             
                desc "Start Elasticsearch nodes for tests"
         | 
| 65 103 | 
             
                task :start do
         | 
| @@ -45,21 +45,20 @@ Gem::Specification.new do |s| | |
| 45 45 | 
             
              s.required_ruby_version = '>= 2.4'
         | 
| 46 46 |  | 
| 47 47 | 
             
              s.add_dependency 'multi_json'
         | 
| 48 | 
            -
              s.add_dependency 'faraday', ' | 
| 48 | 
            +
              s.add_dependency 'faraday', '>= 1', '< 3'
         | 
| 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 'ansi'
         | 
| 51 54 | 
             
              s.add_development_dependency 'bundler'
         | 
| 52 55 | 
             
              s.add_development_dependency 'cane'
         | 
| 53 | 
            -
              s.add_development_dependency 'curb' unless defined? JRUBY_VERSION
         | 
| 54 56 | 
             
              s.add_development_dependency 'elasticsearch', ['>= 7', '< 8.0.0']
         | 
| 55 57 | 
             
              s.add_development_dependency 'elasticsearch-extensions'
         | 
| 56 58 | 
             
              s.add_development_dependency 'hashie'
         | 
| 57 | 
            -
              s.add_development_dependency 'httpclient'
         | 
| 58 | 
            -
              s.add_development_dependency 'manticore' if defined? JRUBY_VERSION
         | 
| 59 59 | 
             
              s.add_development_dependency 'minitest'
         | 
| 60 60 | 
             
              s.add_development_dependency 'minitest-reporters'
         | 
| 61 61 | 
             
              s.add_development_dependency 'mocha'
         | 
| 62 | 
            -
              s.add_development_dependency 'net-http-persistent'
         | 
| 63 62 | 
             
              s.add_development_dependency 'patron' unless defined? JRUBY_VERSION
         | 
| 64 63 | 
             
              s.add_development_dependency 'pry'
         | 
| 65 64 | 
             
              s.add_development_dependency 'rake', '~> 13'
         | 
| @@ -68,7 +67,6 @@ Gem::Specification.new do |s| | |
| 68 67 | 
             
              s.add_development_dependency 'shoulda-context'
         | 
| 69 68 | 
             
              s.add_development_dependency 'simplecov'
         | 
| 70 69 | 
             
              s.add_development_dependency 'test-unit', '~> 2'
         | 
| 71 | 
            -
              s.add_development_dependency 'typhoeus', '~> 1.4'
         | 
| 72 70 | 
             
              s.add_development_dependency 'yard'
         | 
| 73 71 |  | 
| 74 72 | 
             
              s.description = <<-DESC.gsub(/^    /, '')
         | 
| @@ -145,7 +145,8 @@ describe Elasticsearch::Transport::Transport::Base do | |
| 145 145 | 
             
                let(:arguments) do
         | 
| 146 146 | 
             
                  {
         | 
| 147 147 | 
             
                    hosts: ['http://unavailable:9200', 'http://unavailable:9201'],
         | 
| 148 | 
            -
                    retry_on_failure: 2
         | 
| 148 | 
            +
                    retry_on_failure: 2,
         | 
| 149 | 
            +
                    adapter: :net_http
         | 
| 149 150 | 
             
                  }
         | 
| 150 151 | 
             
                end
         | 
| 151 152 |  | 
| @@ -169,7 +170,8 @@ describe Elasticsearch::Transport::Transport::Base do | |
| 169 170 | 
             
                  let(:arguments) do
         | 
| 170 171 | 
             
                    {
         | 
| 171 172 | 
             
                      hosts: ELASTICSEARCH_HOSTS,
         | 
| 172 | 
            -
                      retry_on_status: ['404']
         | 
| 173 | 
            +
                      retry_on_status: ['404'],
         | 
| 174 | 
            +
                      adapter: :net_http
         | 
| 173 175 | 
             
                    }
         | 
| 174 176 | 
             
                  end
         | 
| 175 177 |  | 
| @@ -234,8 +234,8 @@ describe Elasticsearch::Transport::Client do | |
| 234 234 | 
             
                    it 'uses Faraday NetHttp' do
         | 
| 235 235 | 
             
                      expect(adapter).to eq Faraday::Adapter::NetHttp
         | 
| 236 236 | 
             
                    end
         | 
| 237 | 
            -
                  end | 
| 238 | 
            -
                end
         | 
| 237 | 
            +
                  end
         | 
| 238 | 
            +
                end unless jruby?
         | 
| 239 239 |  | 
| 240 240 | 
             
                context 'when the adapter is patron' do
         | 
| 241 241 | 
             
                  let(:adapter) do
         | 
| @@ -247,9 +247,10 @@ describe Elasticsearch::Transport::Client do | |
| 247 247 | 
             
                  end
         | 
| 248 248 |  | 
| 249 249 | 
             
                  it 'uses Faraday with the adapter' do
         | 
| 250 | 
            +
                    require 'faraday/patron'
         | 
| 250 251 | 
             
                    expect(adapter).to eq Faraday::Adapter::Patron
         | 
| 251 252 | 
             
                  end
         | 
| 252 | 
            -
                end
         | 
| 253 | 
            +
                end unless jruby?
         | 
| 253 254 |  | 
| 254 255 | 
             
                context 'when the adapter is typhoeus' do
         | 
| 255 256 | 
             
                  let(:adapter) do
         | 
| @@ -257,6 +258,8 @@ describe Elasticsearch::Transport::Client do | |
| 257 258 | 
             
                  end
         | 
| 258 259 |  | 
| 259 260 | 
             
                  let(:client) do
         | 
| 261 | 
            +
                    require 'faraday/typhoeus' if is_faraday_v2?
         | 
| 262 | 
            +
             | 
| 260 263 | 
             
                    described_class.new(adapter: :typhoeus, enable_meta_header: false)
         | 
| 261 264 | 
             
                  end
         | 
| 262 265 |  | 
| @@ -277,7 +280,7 @@ describe Elasticsearch::Transport::Client do | |
| 277 280 | 
             
                  it 'uses Faraday with the adapter' do
         | 
| 278 281 | 
             
                    expect(adapter).to eq Faraday::Adapter::Patron
         | 
| 279 282 | 
             
                  end
         | 
| 280 | 
            -
                end
         | 
| 283 | 
            +
                end unless jruby?
         | 
| 281 284 |  | 
| 282 285 | 
             
                context 'when the adapter can be detected', unless: jruby? do
         | 
| 283 286 |  | 
| @@ -319,7 +322,7 @@ describe Elasticsearch::Transport::Client do | |
| 319 322 | 
             
                  it 'sets the logger' do
         | 
| 320 323 | 
             
                    expect(handlers).to include(Faraday::Response::Logger)
         | 
| 321 324 | 
             
                  end
         | 
| 322 | 
            -
                end
         | 
| 325 | 
            +
                end unless jruby?
         | 
| 323 326 | 
             
              end
         | 
| 324 327 |  | 
| 325 328 | 
             
              context 'when cloud credentials are provided' do
         | 
| @@ -1587,6 +1590,8 @@ describe Elasticsearch::Transport::Client do | |
| 1587 1590 | 
             
                    end
         | 
| 1588 1591 |  | 
| 1589 1592 | 
             
                    context 'when the Faraday adapter is set in the block' do
         | 
| 1593 | 
            +
                      require 'faraday/net_http_persistent' if is_faraday_v2?
         | 
| 1594 | 
            +
             | 
| 1590 1595 | 
             
                      let(:client) do
         | 
| 1591 1596 | 
             
                        described_class.new(host: ELASTICSEARCH_HOSTS.first, logger: logger) do |client|
         | 
| 1592 1597 | 
             
                          client.adapter(:net_http_persistent)
         | 
| @@ -1747,6 +1752,7 @@ describe Elasticsearch::Transport::Client do | |
| 1747 1752 | 
             
                      end
         | 
| 1748 1753 |  | 
| 1749 1754 | 
             
                      context 'when using the HTTPClient adapter' do
         | 
| 1755 | 
            +
                        require 'faraday/httpclient'
         | 
| 1750 1756 |  | 
| 1751 1757 | 
             
                        let(:client) do
         | 
| 1752 1758 | 
             
                          described_class.new(hosts: ELASTICSEARCH_HOSTS, compression: true, adapter: :httpclient, enable_meta_header: false)
         | 
| @@ -172,7 +172,7 @@ describe Elasticsearch::Transport::Client do | |
| 172 172 | 
             
                      expect(headers).to include('x-elastic-client-meta' => meta)
         | 
| 173 173 |  | 
| 174 174 | 
             
                      Typhoeus = @klass if was_required
         | 
| 175 | 
            -
                    end | 
| 175 | 
            +
                    end
         | 
| 176 176 |  | 
| 177 177 | 
             
                    it 'sets adapter in the meta header' do
         | 
| 178 178 | 
             
                      require 'typhoeus'
         | 
| @@ -180,7 +180,7 @@ describe Elasticsearch::Transport::Client do | |
| 180 180 | 
             
                      meta = "#{meta_header},ty=#{Typhoeus::VERSION}"
         | 
| 181 181 | 
             
                      expect(headers).to include('x-elastic-client-meta' => meta)
         | 
| 182 182 | 
             
                    end
         | 
| 183 | 
            -
                  end
         | 
| 183 | 
            +
                  end unless jruby?
         | 
| 184 184 |  | 
| 185 185 | 
             
                  unless jruby?
         | 
| 186 186 | 
             
                    let(:adapter) { :patron }
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -75,6 +75,10 @@ def default_client | |
| 75 75 | 
             
              $client ||= Elasticsearch::Client.new(hosts: ELASTICSEARCH_HOSTS)
         | 
| 76 76 | 
             
            end
         | 
| 77 77 |  | 
| 78 | 
            +
            def is_faraday_v2?
         | 
| 79 | 
            +
              Gem::Version.new(Faraday::VERSION) >= Gem::Version.new(2)
         | 
| 80 | 
            +
            end
         | 
| 81 | 
            +
             | 
| 78 82 | 
             
            module Config
         | 
| 79 83 | 
             
              def self.included(context)
         | 
| 80 84 | 
             
                # Get the hosts to use to connect an elasticsearch client.
         | 
| @@ -17,7 +17,7 @@ | |
| 17 17 |  | 
| 18 18 | 
             
            require 'test_helper'
         | 
| 19 19 |  | 
| 20 | 
            -
            class Elasticsearch::Transport::ClientIntegrationTest < Elasticsearch::Test::IntegrationTestCase
         | 
| 20 | 
            +
            class Elasticsearch::Transport::Transport::ClientIntegrationTest < Elasticsearch::Test::IntegrationTestCase
         | 
| 21 21 | 
             
              startup do
         | 
| 22 22 | 
             
                Elasticsearch::Extensions::Test::Cluster.start(number_of_nodes: 2) if ENV['SERVER'] and not Elasticsearch::Extensions::Test::Cluster.running?(number_of_nodes: 2)
         | 
| 23 23 | 
             
              end
         | 
| @@ -30,69 +30,115 @@ class Elasticsearch::Transport::ClientIntegrationTest < Elasticsearch::Test::Int | |
| 30 30 | 
             
                setup do
         | 
| 31 31 | 
             
                  @host, @port = ELASTICSEARCH_HOSTS.first.split(':')
         | 
| 32 32 | 
             
                  @hosts = { hosts: [ { host: @host, port: @port } ] }
         | 
| 33 | 
            -
                  begin; Object.send(:remove_const, :Patron);   rescue NameError; end
         | 
| 34 33 | 
             
                end
         | 
| 35 34 |  | 
| 36 | 
            -
                should " | 
| 37 | 
            -
                  require 'typhoeus'
         | 
| 38 | 
            -
                  require 'typhoeus/adapters/faraday'
         | 
| 39 | 
            -
             | 
| 35 | 
            +
                should "use the default Faraday adapter" do
         | 
| 40 36 | 
             
                  transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(@hosts) do |f|
         | 
| 41 37 | 
             
                    f.response :logger
         | 
| 42 | 
            -
                    f.adapter  :typhoeus
         | 
| 43 38 | 
             
                  end
         | 
| 44 39 |  | 
| 45 40 | 
             
                  client = Elasticsearch::Transport::Client.new transport: transport
         | 
| 41 | 
            +
                  assert_equal(client.transport.connections.first.connection.adapter, Faraday::Adapter::NetHttp)
         | 
| 46 42 | 
             
                  client.perform_request 'GET', ''
         | 
| 47 | 
            -
                end | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                unless jruby?
         | 
| 46 | 
            +
                  should "allow to customize the Faraday adapter to Typhoeus" do
         | 
| 47 | 
            +
                    if is_faraday_v2?
         | 
| 48 | 
            +
                      require 'faraday/typhoeus'
         | 
| 49 | 
            +
                    else
         | 
| 50 | 
            +
                      require 'typhoeus'
         | 
| 51 | 
            +
                    end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                    transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(@hosts) do |f|
         | 
| 54 | 
            +
                      f.response :logger
         | 
| 55 | 
            +
                      f.adapter  :typhoeus
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                    client = Elasticsearch::Transport::Client.new transport: transport
         | 
| 59 | 
            +
                    assert_equal(client.transport.connections.first.connection.adapter, Faraday::Adapter::Typhoeus)
         | 
| 60 | 
            +
                    client.perform_request 'GET', ''
         | 
| 61 | 
            +
                  end
         | 
| 48 62 |  | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 63 | 
            +
                  should "use the Curb client" do
         | 
| 64 | 
            +
                    require 'curb'
         | 
| 65 | 
            +
                    require 'elasticsearch/transport/transport/http/curb'
         | 
| 66 | 
            +
                    transport = Elasticsearch::Transport::Transport::HTTP::Curb.new(@hosts) do |curl|
         | 
| 67 | 
            +
                      curl.verbose = true
         | 
| 68 | 
            +
                    end
         | 
| 51 69 |  | 
| 52 | 
            -
             | 
| 53 | 
            -
                     | 
| 54 | 
            -
                     | 
| 70 | 
            +
                    client = Elasticsearch::Transport::Client.new transport: transport
         | 
| 71 | 
            +
                    assert_equal(client.transport.class, Elasticsearch::Transport::Transport::HTTP::Curb)
         | 
| 72 | 
            +
                    client.perform_request 'GET', ''
         | 
| 55 73 | 
             
                  end
         | 
| 56 74 |  | 
| 57 | 
            -
                   | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 75 | 
            +
                  should "deserialize JSON responses in the Curb client" do
         | 
| 76 | 
            +
                    require 'curb'
         | 
| 77 | 
            +
                    require 'elasticsearch/transport/transport/http/curb'
         | 
| 78 | 
            +
                    transport = Elasticsearch::Transport::Transport::HTTP::Curb.new(@hosts) do |curl|
         | 
| 79 | 
            +
                      curl.verbose = true
         | 
| 80 | 
            +
                    end
         | 
| 60 81 |  | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
                    hosts: [ { host: @host, port: @port } ],
         | 
| 64 | 
            -
                    options: { transport_options: { params: { :format => 'yaml' } } }
         | 
| 65 | 
            -
                  )
         | 
| 66 | 
            -
                  client = Elasticsearch::Transport::Client.new transport: transport
         | 
| 67 | 
            -
                  response = client.perform_request 'GET', ''
         | 
| 82 | 
            +
                    client = Elasticsearch::Transport::Client.new transport: transport
         | 
| 83 | 
            +
                    response = client.perform_request 'GET', ''
         | 
| 68 84 |  | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 85 | 
            +
                    assert_respond_to(response.body, :to_hash)
         | 
| 86 | 
            +
                    assert_not_nil response.body['name']
         | 
| 87 | 
            +
                    assert_equal 'application/json', response.headers['content-type']
         | 
| 88 | 
            +
                  end
         | 
| 71 89 |  | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 90 | 
            +
                  should 'allow to customize the Faraday adapter to Patron' do
         | 
| 91 | 
            +
                    if is_faraday_v2?
         | 
| 92 | 
            +
                      require 'faraday/patron'
         | 
| 93 | 
            +
                    else
         | 
| 94 | 
            +
                      require 'patron'
         | 
| 95 | 
            +
                    end
         | 
| 96 | 
            +
                    transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(@hosts) do |f|
         | 
| 97 | 
            +
                      f.response :logger
         | 
| 98 | 
            +
                      f.adapter  :patron
         | 
| 99 | 
            +
                    end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                    client = Elasticsearch::Transport::Client.new(transport: transport)
         | 
| 102 | 
            +
                    assert_equal(client.transport.connections.first.connection.adapter, Faraday::Adapter::Patron)
         | 
| 103 | 
            +
                    client.perform_request 'GET', ''
         | 
| 77 104 | 
             
                  end
         | 
| 78 105 |  | 
| 79 | 
            -
                   | 
| 80 | 
            -
             | 
| 81 | 
            -
                end unless jruby?
         | 
| 106 | 
            +
                  should "allow to customize the Faraday adapter to NetHttpPersistent" do
         | 
| 107 | 
            +
                    require 'faraday/net_http_persistent'
         | 
| 82 108 |  | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 109 | 
            +
                    transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(@hosts) do |f|
         | 
| 110 | 
            +
                      f.response :logger
         | 
| 111 | 
            +
                      f.adapter  :net_http_persistent
         | 
| 112 | 
            +
                    end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                    client = Elasticsearch::Transport::Client.new transport: transport
         | 
| 115 | 
            +
                    assert_equal(client.transport.connections.first.connection.adapter, Faraday::Adapter::NetHttpPersistent)
         | 
| 116 | 
            +
                    client.perform_request 'GET', ''
         | 
| 88 117 | 
             
                  end
         | 
| 89 118 |  | 
| 90 | 
            -
                   | 
| 91 | 
            -
             | 
| 119 | 
            +
                  should 'allow to customize the Faraday adapter to HTTPClient' do
         | 
| 120 | 
            +
                    require 'faraday/httpclient'
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                    transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(@hosts) do |f|
         | 
| 123 | 
            +
                      f.response :logger
         | 
| 124 | 
            +
                      f.adapter  :httpclient
         | 
| 125 | 
            +
                    end
         | 
| 92 126 |  | 
| 93 | 
            -
             | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 127 | 
            +
                    client = Elasticsearch::Transport::Client.new(transport: transport)
         | 
| 128 | 
            +
                    assert_equal(client.transport.connections.first.connection.adapter, Faraday::Adapter::HTTPClient)
         | 
| 129 | 
            +
                    client.perform_request 'GET', ''
         | 
| 130 | 
            +
                  end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                  should "allow to define connection parameters and pass them" do
         | 
| 133 | 
            +
                    transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(
         | 
| 134 | 
            +
                      hosts: [ { host: @host, port: @port } ],
         | 
| 135 | 
            +
                      options: { transport_options: { params: { :format => 'yaml' } } }
         | 
| 136 | 
            +
                    )
         | 
| 137 | 
            +
                    client = Elasticsearch::Transport::Client.new transport: transport
         | 
| 138 | 
            +
                    response = client.perform_request 'GET', ''
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                    assert response.body.start_with?("---\n"), "Response body should be YAML: #{response.body.inspect}"
         | 
| 141 | 
            +
                  end
         | 
| 142 | 
            +
                end
         | 
| 97 143 | 
             
              end
         | 
| 98 144 | 
             
            end
         | 
    
        data/test/test_helper.rb
    CHANGED
    
    
| @@ -0,0 +1,88 @@ | |
| 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 | 
            +
            require 'test_helper'
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            class Elasticsearch::Transport::Transport::ClientAdaptersUnitTest < Minitest::Test
         | 
| 21 | 
            +
              context 'Adapters' do
         | 
| 22 | 
            +
                setup do
         | 
| 23 | 
            +
                  begin
         | 
| 24 | 
            +
                    Object.send(:remove_const, :Patron)
         | 
| 25 | 
            +
                  rescue NameError
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                should 'use the default Faraday adapter' do
         | 
| 30 | 
            +
                  fork do
         | 
| 31 | 
            +
                    client = Elasticsearch::Transport::Client.new
         | 
| 32 | 
            +
                    assert_equal(client.transport.connections.first.connection.adapter, Faraday::Adapter::NetHttp)
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                should 'use Patron Faraday adapter' do
         | 
| 37 | 
            +
                  fork do
         | 
| 38 | 
            +
                    if is_faraday_v2?
         | 
| 39 | 
            +
                      require 'faraday/patron'
         | 
| 40 | 
            +
                    else
         | 
| 41 | 
            +
                      require 'patron'
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                    client = Elasticsearch::Transport::Client.new
         | 
| 45 | 
            +
                    assert_equal(client.transport.connections.first.connection.adapter, Faraday::Adapter::Patron)
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                should 'use Typhoeus Faraday adapter' do
         | 
| 50 | 
            +
                  fork do
         | 
| 51 | 
            +
                    if is_faraday_v2?
         | 
| 52 | 
            +
                      require 'faraday/typhoeus'
         | 
| 53 | 
            +
                    else
         | 
| 54 | 
            +
                      require 'typhoeus'
         | 
| 55 | 
            +
                    end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                    client = Elasticsearch::Transport::Client.new
         | 
| 58 | 
            +
                    assert_equal(client.transport.connections.first.connection.adapter, Faraday::Adapter::Typhoeus)
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                should 'use NetHttpPersistent Faraday adapter' do
         | 
| 63 | 
            +
                  fork do
         | 
| 64 | 
            +
                    if is_faraday_v2?
         | 
| 65 | 
            +
                      require 'faraday/net_http_persistent'
         | 
| 66 | 
            +
                    else
         | 
| 67 | 
            +
                      require 'net/http/persistent'
         | 
| 68 | 
            +
                    end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                    client = Elasticsearch::Transport::Client.new
         | 
| 71 | 
            +
                    assert_equal(client.transport.connections.first.connection.adapter, Faraday::Adapter::NetHttpPersistent)
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                should 'use HTTPClient Faraday adapter' do
         | 
| 76 | 
            +
                  fork do
         | 
| 77 | 
            +
                    if is_faraday_v2?
         | 
| 78 | 
            +
                      require 'faraday/httpclient'
         | 
| 79 | 
            +
                    else
         | 
| 80 | 
            +
                      require 'httpclient'
         | 
| 81 | 
            +
                    end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                    client = Elasticsearch::Transport::Client.new
         | 
| 84 | 
            +
                    assert_equal(Faraday::Adapter::HTTPClient, client.transport.connections.first.connection.adapter)
         | 
| 85 | 
            +
                  end
         | 
| 86 | 
            +
                end
         | 
| 87 | 
            +
              end unless jruby?
         | 
| 88 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: elasticsearch-transport
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 7.17. | 
| 4 | 
            +
              version: 7.17.10
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Karel Minarik
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023- | 
| 11 | 
            +
            date: 2023-11-07 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: multi_json
         | 
| @@ -28,18 +28,24 @@ dependencies: | |
| 28 28 | 
             
              name: faraday
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - - " | 
| 31 | 
            +
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 33 | 
             
                    version: '1'
         | 
| 34 | 
            +
                - - "<"
         | 
| 35 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 36 | 
            +
                    version: '3'
         | 
| 34 37 | 
             
              type: :runtime
         | 
| 35 38 | 
             
              prerelease: false
         | 
| 36 39 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 40 | 
             
                requirements:
         | 
| 38 | 
            -
                - - " | 
| 41 | 
            +
                - - ">="
         | 
| 39 42 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 43 | 
             
                    version: '1'
         | 
| 44 | 
            +
                - - "<"
         | 
| 45 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 46 | 
            +
                    version: '3'
         | 
| 41 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name:  | 
| 48 | 
            +
              name: curb
         | 
| 43 49 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 50 | 
             
                requirements:
         | 
| 45 51 | 
             
                - - ">="
         | 
| @@ -53,7 +59,7 @@ dependencies: | |
| 53 59 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 60 | 
             
                    version: '0'
         | 
| 55 61 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name:  | 
| 62 | 
            +
              name: ansi
         | 
| 57 63 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 64 | 
             
                requirements:
         | 
| 59 65 | 
             
                - - ">="
         | 
| @@ -67,7 +73,7 @@ dependencies: | |
| 67 73 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 74 | 
             
                    version: '0'
         | 
| 69 75 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name:  | 
| 76 | 
            +
              name: bundler
         | 
| 71 77 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 78 | 
             
                requirements:
         | 
| 73 79 | 
             
                - - ">="
         | 
| @@ -81,7 +87,7 @@ dependencies: | |
| 81 87 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 88 | 
             
                    version: '0'
         | 
| 83 89 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name:  | 
| 90 | 
            +
              name: cane
         | 
| 85 91 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 92 | 
             
                requirements:
         | 
| 87 93 | 
             
                - - ">="
         | 
| @@ -142,20 +148,6 @@ dependencies: | |
| 142 148 | 
             
                - - ">="
         | 
| 143 149 | 
             
                  - !ruby/object:Gem::Version
         | 
| 144 150 | 
             
                    version: '0'
         | 
| 145 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 146 | 
            -
              name: httpclient
         | 
| 147 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 148 | 
            -
                requirements:
         | 
| 149 | 
            -
                - - ">="
         | 
| 150 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 151 | 
            -
                    version: '0'
         | 
| 152 | 
            -
              type: :development
         | 
| 153 | 
            -
              prerelease: false
         | 
| 154 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 155 | 
            -
                requirements:
         | 
| 156 | 
            -
                - - ">="
         | 
| 157 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 158 | 
            -
                    version: '0'
         | 
| 159 151 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 160 152 | 
             
              name: minitest
         | 
| 161 153 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -198,20 +190,6 @@ dependencies: | |
| 198 190 | 
             
                - - ">="
         | 
| 199 191 | 
             
                  - !ruby/object:Gem::Version
         | 
| 200 192 | 
             
                    version: '0'
         | 
| 201 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 202 | 
            -
              name: net-http-persistent
         | 
| 203 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 204 | 
            -
                requirements:
         | 
| 205 | 
            -
                - - ">="
         | 
| 206 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 207 | 
            -
                    version: '0'
         | 
| 208 | 
            -
              type: :development
         | 
| 209 | 
            -
              prerelease: false
         | 
| 210 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 211 | 
            -
                requirements:
         | 
| 212 | 
            -
                - - ">="
         | 
| 213 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 214 | 
            -
                    version: '0'
         | 
| 215 193 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 216 194 | 
             
              name: patron
         | 
| 217 195 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -324,20 +302,6 @@ dependencies: | |
| 324 302 | 
             
                - - "~>"
         | 
| 325 303 | 
             
                  - !ruby/object:Gem::Version
         | 
| 326 304 | 
             
                    version: '2'
         | 
| 327 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 328 | 
            -
              name: typhoeus
         | 
| 329 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 330 | 
            -
                requirements:
         | 
| 331 | 
            -
                - - "~>"
         | 
| 332 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 333 | 
            -
                    version: '1.4'
         | 
| 334 | 
            -
              type: :development
         | 
| 335 | 
            -
              prerelease: false
         | 
| 336 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 337 | 
            -
                requirements:
         | 
| 338 | 
            -
                - - "~>"
         | 
| 339 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 340 | 
            -
                    version: '1.4'
         | 
| 341 305 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 342 306 | 
             
              name: yard
         | 
| 343 307 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -366,6 +330,7 @@ extra_rdoc_files: | |
| 366 330 | 
             
            files:
         | 
| 367 331 | 
             
            - ".gitignore"
         | 
| 368 332 | 
             
            - Gemfile
         | 
| 333 | 
            +
            - Gemfile-faraday1.gemfile
         | 
| 369 334 | 
             
            - LICENSE
         | 
| 370 335 | 
             
            - README.md
         | 
| 371 336 | 
             
            - Rakefile
         | 
| @@ -402,6 +367,7 @@ files: | |
| 402 367 | 
             
            - test/integration/transport_test.rb
         | 
| 403 368 | 
             
            - test/profile/client_benchmark_test.rb
         | 
| 404 369 | 
             
            - test/test_helper.rb
         | 
| 370 | 
            +
            - test/unit/adapters_test.rb
         | 
| 405 371 | 
             
            - test/unit/connection_test.rb
         | 
| 406 372 | 
             
            - test/unit/response_test.rb
         | 
| 407 373 | 
             
            - test/unit/serializer_test.rb
         | 
| @@ -452,6 +418,7 @@ test_files: | |
| 452 418 | 
             
            - test/integration/transport_test.rb
         | 
| 453 419 | 
             
            - test/profile/client_benchmark_test.rb
         | 
| 454 420 | 
             
            - test/test_helper.rb
         | 
| 421 | 
            +
            - test/unit/adapters_test.rb
         | 
| 455 422 | 
             
            - test/unit/connection_test.rb
         | 
| 456 423 | 
             
            - test/unit/response_test.rb
         | 
| 457 424 | 
             
            - test/unit/serializer_test.rb
         |