test/instrumentation/grpc_test.rb in instana-1.214.4 vs test/instrumentation/grpc_test.rb in instana-1.215.0

- old
+ new

@@ -2,15 +2,19 @@ # (c) Copyright Instana Inc. 2017 require 'test_helper' require 'support/apps/grpc/boot' -class GrpcTest < Minitest::Test +class GrpcTest < Minitest::Test # rubocop:disable Metrics/ClassLength def client_stub PingPongService::Stub.new('127.0.0.1:50051', :this_channel_is_insecure) end + def teardown + ::Instana.config[:allow_exit_as_root] = false + end + def assert_client_span(client_span, call: '', call_type: '', error: nil) data = client_span[:data] assert_equal '127.0.0.1:50051', data[:rpc][:host] assert_equal :grpc, data[:rpc][:flavor] assert_equal call, data[:rpc][:call] @@ -76,9 +80,44 @@ assert_equal trace_id, client_span[:t] assert_equal trace_id, server_span[:t] assert_equal server_span[:p], client_span[:s] assert_equal client_span[:p], sdk_span[:s] + end + + def test_request_response_as_root_exit_span + clear_all! + ::Instana.config[:allow_exit_as_root] = true + + response = client_stub.ping( + PingPongService::PingRequest.new(message: 'Hello World') + ) + sleep 1 + + assert 'Hello World', response.message + + # Pause for a split second to allow traces to be queued + sleep 0.2 + + spans = ::Instana.processor.queued_spans + client_span = find_spans_by_name(spans, :'rpc-client').first + server_span = find_spans_by_name(spans, :'rpc-server').first + + assert_client_span( + client_span, + call: '/PingPongService/Ping', + call_type: :request_response + ) + + assert_server_span( + server_span, + call: '/PingPongService/Ping', + call_type: :request_response + ) + + assert_equal client_span[:t], server_span[:t] + assert_equal client_span[:s], server_span[:p] + assert_nil client_span[:p] end def test_client_streamer clear_all! response = nil