Sha256: 31dc3304dcaa201e9a464ca6a88f5b03f0ef268ae850a0aaf9ae7131e903f4ce

Contents?: true

Size: 1.98 KB

Versions: 11

Compression:

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

begin
  require 'action_cable'
rescue LoadError
end

if defined?(ActionCable::Channel)

require 'stringio'
require 'logger'
require 'json'

class ActionCableTest < Minitest::Test
include MultiverseHelpers

  class TestConnection
    attr_reader :transmissions, :identifiers, :logger

    def initialize
      @transmissions = []
      @identifiers = []
      @logger = Logger.new StringIO.new
    end

    def transmit data
      @transmissions << data
    end

    def last_transmission
      JSON.parse @transmissions.last
    end
  end

  class TestChannel < ActionCable::Channel::Base
    def test_action data
      transmit data['content']
    end

    def boom data
      raise StandardError.new("Boom!")
    end
  end

  setup_and_teardown_agent do
    @connection = TestConnection.new
    @channel = TestChannel.new @connection, "{id: 1}"
  end

  def test_creates_trace
    @channel.perform_action({ 'action' => :test_action, 'content' => 'hello' })

    last_sample = NewRelic::Agent.instance.transaction_sampler.last_sample
    assert_equal('Controller/ActionCable/ActionCableTest::TestChannel/test_action', last_sample.transaction_name)
  end

  def test_creates_web_transaction
    @channel.perform_action({ 'action'=> :test_action, 'content' => 'hello' })

    expected_metrics = {
      'HttpDispatcher' => { :call_count => 1 },
      'Controller/ActionCable/ActionCableTest::TestChannel/test_action' => { :call_count => 1}
    }

    assert_metrics_recorded expected_metrics
  end

  def test_action_with_error_is_noticed_by_agent
    @channel.perform_action({ 'action'=> :boom }) rescue nil

    error_trace = last_traced_error

    assert_equal "StandardError", error_trace.exception_class_name
    assert_equal "Boom!", error_trace.message
    assert_equal "Controller/ActionCable/ActionCableTest::TestChannel/boom", error_trace.path
  end
end

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
newrelic_rpm-4.1.0.333 test/multiverse/suites/rails/action_cable_test.rb
newrelic_rpm-4.0.0.332 test/multiverse/suites/rails/action_cable_test.rb
newrelic_rpm-3.18.1.330 test/multiverse/suites/rails/action_cable_test.rb
newrelic_rpm-3.18.0.329 test/multiverse/suites/rails/action_cable_test.rb
newrelic_rpm-3.17.2.327 test/multiverse/suites/rails/action_cable_test.rb
newrelic_rpm-3.17.1.326 test/multiverse/suites/rails/action_cable_test.rb
newrelic_rpm-3.17.0.325 test/multiverse/suites/rails/action_cable_test.rb
newrelic_rpm-3.16.3.323 test/multiverse/suites/rails/action_cable_test.rb
newrelic_rpm-3.16.2.321 test/multiverse/suites/rails/action_cable_test.rb
newrelic_rpm-3.16.1.320 test/multiverse/suites/rails/action_cable_test.rb
newrelic_rpm-3.16.0.318 test/multiverse/suites/rails/action_cable_test.rb