6060 allow ( plugin ) . to receive ( :get_client ) . and_return ( filter_client )
6161 allow ( filter_client ) . to receive ( :serverless? ) . and_return ( true )
6262 allow ( filter_client ) . to receive ( :client ) . and_return ( es_client )
63- begin
64- allow ( es_client ) . to receive ( :info )
65- . with ( a_hash_including (
66- :headers => LogStash ::Filters ::ElasticsearchClient ::DEFAULT_EAV_HEADER ) )
67- . and_raise ( Elasticsearch ::Transport ::Transport ::Errors ::BadRequest . new )
68- rescue NameError # we get NameError: uninitialized constant Elasticsearch::Transport with 7.x
63+
64+ if elastic_ruby_v8_client_available?
6965 allow ( es_client ) . to receive ( :info )
7066 . with ( a_hash_including (
7167 :headers => LogStash ::Filters ::ElasticsearchClient ::DEFAULT_EAV_HEADER ) )
7268 . and_raise ( Elastic ::Transport ::Transport ::Errors ::BadRequest . new )
69+ else
70+ allow ( es_client ) . to receive ( :info )
71+ . with ( a_hash_including (
72+ :headers => LogStash ::Filters ::ElasticsearchClient ::DEFAULT_EAV_HEADER ) )
73+ . and_raise ( Elasticsearch ::Transport ::Transport ::Errors ::BadRequest . new )
7374 end
7475 end
7576
111112
112113 before ( :each ) do
113114 allow ( LogStash ::Filters ::ElasticsearchClient ) . to receive ( :new ) . and_return ( client )
114- begin
115- require "elasticsearch/transport/transport/http/manticore"
116- allow ( client ) . to receive ( :es_transport_client_type ) . and_return ( 'elasticsearch_transport' )
117- rescue LoadError
118- require "elastic/transport/transport/http/manticore"
115+ if elastic_ruby_v8_client_available?
119116 allow ( client ) . to receive ( :es_transport_client_type ) . and_return ( 'elastic_transport' )
117+ else
118+ allow ( client ) . to receive ( :es_transport_client_type ) . and_return ( 'elasticsearch_transport' )
120119 end
121120 allow ( client ) . to receive ( :search ) . and_return ( response )
122121 allow ( plugin ) . to receive ( :test_connection! )
362361
363362 before do
364363 allow ( plugin ) . to receive ( :get_client ) . and_return ( client_double )
365- begin
366- require "elasticsearch/transport/transport/http/manticore"
367- allow ( client_double ) . to receive ( :es_transport_client_type ) . and_return ( 'elasticsearch_transport' )
368- rescue LoadError
364+ if elastic_ruby_v8_client_available?
369365 allow ( client_double ) . to receive ( :es_transport_client_type ) . and_return ( 'elastic_transport' )
366+ else
367+ allow ( client_double ) . to receive ( :es_transport_client_type ) . and_return ( 'elasticsearch_transport' )
370368 end
371369 allow ( client_double ) . to receive ( :client ) . and_return ( transport_double )
372370 end
@@ -527,12 +525,11 @@ def wait_receive_request
527525 # this spec is a safeguard to trigger an assessment of thread-safety should
528526 # we choose a different transport adapter in the future.
529527 transport_class = extract_transport ( client ) . options . fetch ( :transport_class )
530- begin
531- ::Elasticsearch ::Transport ::Transport ::HTTP ::Manticore
532- expect ( transport_class ) . to equal ::Elasticsearch ::Transport ::Transport ::HTTP ::Manticore
533- rescue NameError
528+ if elastic_ruby_v8_client_available?
534529 allow ( client ) . to receive ( :es_transport_client_type ) . and_return ( "elastic_transport" )
535530 expect ( transport_class ) . to equal ::Elastic ::Transport ::Transport ::HTTP ::Manticore
531+ else
532+ expect ( transport_class ) . to equal ::Elasticsearch ::Transport ::Transport ::HTTP ::Manticore
536533 end
537534 end
538535
@@ -848,11 +845,10 @@ def wait_receive_request
848845
849846 before ( :each ) do
850847 allow ( LogStash ::Filters ::ElasticsearchClient ) . to receive ( :new ) . and_return ( client )
851- begin
852- require "elasticsearch/transport/transport/http/manticore"
853- allow ( client ) . to receive ( :es_transport_client_type ) . and_return ( 'elasticsearch_transport' )
854- rescue LoadError
848+ if elastic_ruby_v8_client_available?
855849 allow ( client ) . to receive ( :es_transport_client_type ) . and_return ( 'elastic_transport' )
850+ else
851+ allow ( client ) . to receive ( :es_transport_client_type ) . and_return ( 'elasticsearch_transport' )
856852 end
857853 allow ( plugin ) . to receive ( :test_connection! )
858854 allow ( plugin ) . to receive ( :setup_serverless )
@@ -868,11 +864,19 @@ def wait_receive_request
868864 end
869865 end
870866
871- # @note can be removed once gem depends on elasticsearch >= 6.x
872- def extract_transport ( client ) # on >7.x client.transport is a ES::Transport::Client
867+ def extract_transport ( client )
868+ # on 7x: client.transport.transport
869+ # on >=8.x: client.transport
873870 client . transport . respond_to? ( :transport ) ? client . transport . transport : client . transport
874871 end
875872
873+ def elastic_ruby_v8_client_available?
874+ Elasticsearch ::Transport
875+ false
876+ rescue NameError # NameError: uninitialized constant Elasticsearch::Transport if Elastic Ruby client is not available
877+ true
878+ end
879+
876880 class MockResponse
877881 attr_reader :code , :headers
878882
0 commit comments