Sha256: 5c6cecc58010f8b9a42e1d43bcc56ac6fa8c39c72b814acfad1ee91a163ff57b

Contents?: true

Size: 1.88 KB

Versions: 30

Compression:

Stored size: 1.88 KB

Contents

# frozen_string_literal: true

module Buildkite::TestCollector
  class Network
    module NetHTTPPatch
      def request(request, *args, &block)
        unless uri = request.uri
          protocol = use_ssl? ? "https" : "http"
          uri = URI.join("#{protocol}://#{address}:#{port}", request.path)
        end

        detail = { method: request.method.upcase, url: uri.to_s, lib: "net-http" }

        http_tracer = Buildkite::TestCollector::Uploader.tracer
        http_tracer&.enter("http", **detail)

        super
      ensure
        http_tracer&.leave
      end
    end

    module VCRPatch
      def handle
        if request_type == :stubbed_by_vcr && tracer = Buildkite::TestCollector::Uploader.tracer
          tracer.current_span.detail.merge!(stubbed: "vcr")
        end

        super
      end
    end

    module HTTPPatch
      def perform(request, options)
        detail = { method: request.verb.to_s.upcase, url: request.uri.to_s, lib: "http" }

        http_tracer = Buildkite::TestCollector::Uploader.tracer
        http_tracer&.enter("http", **detail)

        super
      ensure
        http_tracer&.leave
      end
    end

    module WebMockPatch
      def response_for_request(request_signature)
        response_from_webmock = super

        if response_from_webmock && tracer = Buildkite::TestCollector::Uploader.tracer
          tracer.current_span.detail.merge!(stubbed: "webmock")
        end

        response_from_webmock
      end
    end

    def self.configure
      if defined?(VCR)
        require "vcr/request_handler"
        VCR::RequestHandler.prepend(VCRPatch)
      end

      if defined?(WebMock)
        WebMock::StubRegistry.prepend(WebMockPatch)
      end

      if defined?(Net) && defined?(Net::HTTP)
        Net::HTTP.prepend(NetHTTPPatch)
      end

      if defined?(HTTP) && defined?(HTTP::Client)
        HTTP::Client.prepend(HTTPPatch)
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
buildkite-test_collector-2.9.0 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.8.0 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.7.2 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.7.1 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.7.0 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.6.1 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.6.0 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.5.0 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.4.0 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.3.2 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.3.1 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.3.0 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.2.0 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.1.0 lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.1.0.pre lib/buildkite/test_collector/network.rb
buildkite-test_collector-2.0.0.pre lib/buildkite/test_collector/network.rb
buildkite-test_collector-1.5.0 lib/buildkite/test_collector/network.rb
buildkite-test_collector-1.4.2 lib/buildkite/test_collector/network.rb
buildkite-test_collector-1.4.1 lib/buildkite/test_collector/network.rb
buildkite-test_collector-1.3.1 lib/buildkite/test_collector/network.rb