Sha256: e06c069fac5eb0394e82758902a43e680beecbe784d2764f086f5cb309746904

Contents?: true

Size: 1.23 KB

Versions: 3

Compression:

Stored size: 1.23 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

require File.expand_path(File.join(File.dirname(__FILE__),'..','..','test_helper'))

class NewRelic::Rack::DeferredInstrumentationTest < MiniTest::Unit::TestCase
  class TestApp
    def call(env)
      [200, {}, ["whatever"]]
    end
  end

  def test_to_app_does_not_blow_up_when_rack_instrumentation_required_multiple_times
    # We want to use two different paths to require the rack instrumentation here
    # in order to simulate a situation that might arise where a user is
    # explicitly requiring our rack instrumentation file, and then the agent
    # automatically requires it as well, via a different path.
    # On Ruby 1.8.7, this will cause the file to be evaluated multiple times.
    path1 = "new_relic/agent/instrumentation/rack"
    path2 = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'new_relic', 'agent', 'instrumentation', 'rack'))
    refute_equal(path2, path1)

    require path1
    require path2

    builder = ::Rack::Builder.new do
      run(::NewRelic::Rack::DeferredInstrumentationTest::TestApp.new)
    end

    builder.to_app
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
newrelic_rpm-3.7.2.195 test/new_relic/rack/deferred_instrumentation_test.rb
newrelic_rpm-3.7.2.192 test/new_relic/rack/deferred_instrumentation_test.rb
newrelic_rpm-3.7.2.190.beta test/new_relic/rack/deferred_instrumentation_test.rb