Sha256: 152871c9657770859b3e7e7b361e6f43393fb78cead93ba814779ced4bf92b3e

Contents?: true

Size: 1.97 KB

Versions: 3

Compression:

Stored size: 1.97 KB

Contents

# Copyright (c) 2016 SolarWinds, LLC.
# All rights reserved.

require 'minitest_helper'
require 'rack/test'
require 'rack/lobster'
require 'appoptics_apm/inst/rack'

class RackTestApp < Minitest::Test
  include Rack::Test::Methods

  def app
    @app = Rack::Builder.new {
      use Rack::CommonLogger
      use Rack::ShowExceptions
      use AppOpticsAPM::Rack
      map "/lobster" do
        use Rack::Lint
        run Rack::Lobster.new
      end
    }
  end

  def test_custom_do_not_trace
    clear_all_traces

    dnt_original = AppOpticsAPM::Config[:dnt_regexp]
    AppOpticsAPM::Config[:dnt_regexp] = "lobster$"

    get "/lobster"

    traces = get_all_traces
    assert traces.empty?

    AppOpticsAPM::Config[:dnt_regexp] = dnt_original
  end

  def test_do_not_trace_static_assets
    clear_all_traces

    get "/assets/static_asset.png"

    traces = get_all_traces
    assert traces.empty?

    assert last_response.status == 404
  end

  def test_do_not_trace_static_assets_with_param
    clear_all_traces

    get "/assets/static_asset.png?body=1"

    traces = get_all_traces
    assert traces.empty?

    assert last_response.status == 404
  end

  def test_do_not_trace_static_assets_with_multiple_params
    clear_all_traces

    get "/assets/static_asset.png?body=1&head=0"

    traces = get_all_traces
    assert traces.empty?

    assert last_response.status == 404
  end

  def test_complex_do_not_trace
    skip "not supported" if RUBY_VERSION < '1.9'

    clear_all_traces

    dnt_original = AppOpticsAPM::Config[:dnt_regexp]

    # Do not trace .js files _except for_ show.js
    AppOpticsAPM::Config[:dnt_regexp] = "(\.js$)(?<!show.js)"

    # First: We shouldn't trace general .js files
    get "/javascripts/application.js"

    traces = get_all_traces
    assert traces.empty?

    # Second: We should trace show.js
    clear_all_traces

    get "/javascripts/show.js"

    traces = get_all_traces
    assert !traces.empty?

    AppOpticsAPM::Config[:dnt_regexp] = dnt_original
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
appoptics_apm-4.0.3 test/support/dnt_test.rb
appoptics_apm-4.0.2 test/support/dnt_test.rb
appoptics_apm-4.0.1-x86_64-linux test/support/dnt_test.rb