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- allow ( es_client ) . to receive ( :info ) . with ( a_hash_including ( :headers => LogStash ::Filters ::ElasticsearchClient ::DEFAULT_EAV_HEADER ) ) . and_raise (
64- Elasticsearch ::Transport ::Transport ::Errors ::BadRequest . new
65- )
63+
64+ if elastic_ruby_v8_client_available?
65+ allow ( es_client ) . to receive ( :info )
66+ . with ( a_hash_including (
67+ :headers => LogStash ::Filters ::ElasticsearchClient ::DEFAULT_EAV_HEADER ) )
68+ . 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 )
74+ end
6675 end
6776
6877 it "raises an exception when Elastic Api Version is not supported" do
103112
104113 before ( :each ) do
105114 allow ( LogStash ::Filters ::ElasticsearchClient ) . to receive ( :new ) . and_return ( client )
106- allow ( client ) . to receive ( :es_transport_client_type ) . and_return ( 'elasticsearch_transport' )
115+ if elastic_ruby_v8_client_available?
116+ 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' )
119+ end
107120 allow ( client ) . to receive ( :search ) . and_return ( response )
108121 allow ( plugin ) . to receive ( :test_connection! )
109122 allow ( plugin ) . to receive ( :setup_serverless )
348361
349362 before do
350363 allow ( plugin ) . to receive ( :get_client ) . and_return ( client_double )
351- allow ( client_double ) . to receive ( :es_transport_client_type ) . and_return ( 'elasticsearch_transport' )
364+ if elastic_ruby_v8_client_available?
365+ 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' )
368+ end
352369 allow ( client_double ) . to receive ( :client ) . and_return ( transport_double )
353370 end
354371
@@ -508,7 +525,12 @@ def wait_receive_request
508525 # this spec is a safeguard to trigger an assessment of thread-safety should
509526 # we choose a different transport adapter in the future.
510527 transport_class = extract_transport ( client ) . options . fetch ( :transport_class )
511- expect ( transport_class ) . to equal ::Elasticsearch ::Transport ::Transport ::HTTP ::Manticore
528+ if elastic_ruby_v8_client_available?
529+ allow ( client ) . to receive ( :es_transport_client_type ) . and_return ( "elastic_transport" )
530+ expect ( transport_class ) . to equal ::Elastic ::Transport ::Transport ::HTTP ::Manticore
531+ else
532+ expect ( transport_class ) . to equal ::Elasticsearch ::Transport ::Transport ::HTTP ::Manticore
533+ end
512534 end
513535
514536 it 'uses a client with sufficient connection pool size' do
@@ -823,7 +845,11 @@ def wait_receive_request
823845
824846 before ( :each ) do
825847 allow ( LogStash ::Filters ::ElasticsearchClient ) . to receive ( :new ) . and_return ( client )
826- allow ( client ) . to receive ( :es_transport_client_type ) . and_return ( 'elasticsearch_transport' )
848+ if elastic_ruby_v8_client_available?
849+ 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' )
852+ end
827853 allow ( plugin ) . to receive ( :test_connection! )
828854 allow ( plugin ) . to receive ( :setup_serverless )
829855 plugin . register
@@ -838,11 +864,19 @@ def wait_receive_request
838864 end
839865 end
840866
841- # @note can be removed once gem depends on elasticsearch >= 6.x
842- 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
843870 client . transport . respond_to? ( :transport ) ? client . transport . transport : client . transport
844871 end
845872
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+
846880 class MockResponse
847881 attr_reader :code , :headers
848882
0 commit comments