Sha256: 6ff193eb339fc55c07ae33ba7e9d6f4284edfd2dbdac6990aa39d776eeb8f864

Contents?: true

Size: 1.83 KB

Versions: 14

Compression:

Stored size: 1.83 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.

# https://newrelic.atlassian.net/browse/RUBY-927

require 'rails/test_help'
require './app'

class QueueController < ApplicationController
  include Rails.application.routes.url_helpers

  def queued
    respond_to do |format|
      format.html { render :text => "<html><head></head><body>Queued</body></html>" }
    end
  end
end

class QueueTimeTest < ActionDispatch::IntegrationTest
  def setup
    NewRelic::Agent.config.apply_config({
      :beacon => "beacon",
      :browser_key => "key"})

    @agent = NewRelic::Agent::Agent.new
    NewRelic::Agent::Agent.instance_variable_set(:@instance, @agent)
    NewRelic::Agent.manual_start

    # ActiveSupport testing keeps blowing away my subscribers on
    # teardown for some reason.  Have to keep putting it back.
    NewRelic::Agent.instance.events.subscribe(:before_call) do |env|
      NewRelic::Agent::TransactionInfo.reset(::Rack::Request.new(env))
    end

    @agent.finish_setup({})
  end

  def teardown
    NewRelic::Agent::Agent.instance.shutdown if NewRelic::Agent::Agent.instance
  end

  def test_should_track_queue_time_metric
    get_queued

    stat = @agent.stats_engine.lookup_stats('WebFrontend/QueueTime')
    assert_equal 1, stat.call_count
    assert stat.total_call_time > 0, "Should track some queue time"
  end

  def test_should_see_queue_time_in_rum
    get_queued
    assert extract_queue_time_from_response > 0, "Queue time was missing or zero"
  end

  def get_queued(header="HTTP_X_REQUEST_START")
    value = "t=#{(Time.now.to_i * 1_000_000) - 1_000}"
    get('/queue/queued', nil, header => value)
  end

  def extract_queue_time_from_response
    @response.body =~ /key\","",\".*\",(\d+.*),\d+,new Date/
    $1.to_i
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
newrelic_rpm-3.6.5.130 test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.4.122 test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.4.113.beta test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.3.111 test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.3.106 test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.3.105.beta test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.3.104 test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.3.103.beta test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.2.96 test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.2.90.beta test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.1.88 test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.1.87 test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.1.86.beta test/multiverse/suites/rails/queue_time_test.rb
newrelic_rpm-3.6.1.85.beta test/multiverse/suites/rails/queue_time_test.rb