appsignal 0.8.0 → 0.8.1.beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/CHANGELOG.md +3 -0
- data/lib/appsignal/integrations/sidekiq.rb +1 -2
- data/lib/appsignal/transaction.rb +8 -9
- data/lib/appsignal/transaction/formatter.rb +2 -2
- data/lib/appsignal/version.rb +1 -1
- data/spec/lib/appsignal/integrations/sidekiq_spec.rb +1 -1
- data/spec/lib/appsignal/transaction_spec.rb +36 -17
- data/spec/support/helpers/notification_helpers.rb +2 -2
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                NDBhODkxNDkwODA4NjY4Yjc5Zjc0Zjk2MTJiNmEwMjU2YjYxZjZjZg==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                NzI5ZmExYmE1NGMxM2IyZGU1YzE0YWE4NjY5MjEzMzY0NWUxNWM3NA==
         | 
| 7 7 | 
             
            !binary "U0hBNTEy":
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                ODE2NGY5Zjc2Mjc0MTYzMmIwNGEyYThkNTQ5NGUxNzllYzAxOTYxMGVhMjQ5
         | 
| 10 | 
            +
                MDg2NTdjMzFlNDk3YmQwN2ZlMzQ0NzhhNGYxYzI5MzRhZjVjZGNlNzZhZDI1
         | 
| 11 | 
            +
                ODk1OWQ4OTUxMTAwOWRmOGIyODlmOGJlMGY3M2RhOTRiN2UxNjc=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                YjQ5NmQxOGYzZGU3MDI4MzRkNDk3NDkzOTNhZjliODMyYTQ3ZmE4NzQxZmFk
         | 
| 14 | 
            +
                MTMxNzdkZWQ4MWM4ZDU2NWQ0M2NkZmNiYTNmNzg4MjViOWE3OWU5OWI3MDQ3
         | 
| 15 | 
            +
                YzE1MDVhN2IyZGE2Mzk1ZDdjOTU5ODBhNGU0MzAyODg3YWMyZWU=
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
| @@ -6,14 +6,13 @@ if defined?(::Sidekiq) | |
| 6 6 | 
             
                  class SidekiqPlugin
         | 
| 7 7 | 
             
                    def call(worker, item, queue)
         | 
| 8 8 | 
             
                      Appsignal::Transaction.create(SecureRandom.uuid, ENV.to_hash)
         | 
| 9 | 
            -
             | 
| 10 9 | 
             
                      ActiveSupport::Notifications.instrument(
         | 
| 11 10 | 
             
                        'perform_job.sidekiq',
         | 
| 12 11 | 
             
                        :class => item['class'],
         | 
| 13 12 | 
             
                        :method => 'perform',
         | 
| 14 13 | 
             
                        :attempts => item['retry_count'],
         | 
| 15 14 | 
             
                        :queue => item['queue'],
         | 
| 16 | 
            -
                        : | 
| 15 | 
            +
                        :queue_start => item['enqueued_at']
         | 
| 17 16 | 
             
                      ) do
         | 
| 18 17 | 
             
                        yield
         | 
| 19 18 | 
             
                      end
         | 
| @@ -22,7 +22,7 @@ module Appsignal | |
| 22 22 | 
             
                end
         | 
| 23 23 |  | 
| 24 24 | 
             
                attr_reader :request_id, :events, :process_action_event, :action, :exception,
         | 
| 25 | 
            -
                            :env, :fullpath, :time, :tags, :kind
         | 
| 25 | 
            +
                            :env, :fullpath, :time, :tags, :kind, :queue_start
         | 
| 26 26 |  | 
| 27 27 | 
             
                def initialize(request_id, env)
         | 
| 28 28 | 
             
                  @request_id = request_id
         | 
| @@ -54,6 +54,7 @@ module Appsignal | |
| 54 54 | 
             
                  return unless event && event.payload
         | 
| 55 55 | 
             
                  @action = "#{event.payload[:controller]}##{event.payload[:action]}"
         | 
| 56 56 | 
             
                  @kind = 'http_request'
         | 
| 57 | 
            +
                  set_http_queue_start
         | 
| 57 58 | 
             
                end
         | 
| 58 59 |  | 
| 59 60 | 
             
                def set_perform_job_event(event)
         | 
| @@ -61,6 +62,7 @@ module Appsignal | |
| 61 62 | 
             
                  return unless event && event.payload
         | 
| 62 63 | 
             
                  @action = "#{event.payload[:class]}##{event.payload[:method]}"
         | 
| 63 64 | 
             
                  @kind = 'background_job'
         | 
| 65 | 
            +
                  set_background_queue_start
         | 
| 64 66 | 
             
                end
         | 
| 65 67 |  | 
| 66 68 | 
             
                def add_event(event)
         | 
| @@ -121,21 +123,18 @@ module Appsignal | |
| 121 123 | 
             
                  end
         | 
| 122 124 | 
             
                end
         | 
| 123 125 |  | 
| 124 | 
            -
                def  | 
| 125 | 
            -
                   | 
| 126 | 
            -
             | 
| 127 | 
            -
                  else
         | 
| 128 | 
            -
                    http_queue_start
         | 
| 129 | 
            -
                  end
         | 
| 126 | 
            +
                def set_background_queue_start
         | 
| 127 | 
            +
                  return unless process_action_event.payload[:queue_start]
         | 
| 128 | 
            +
                  @queue_start = process_action_event.payload[:queue_start].to_f
         | 
| 130 129 | 
             
                end
         | 
| 131 130 |  | 
| 132 | 
            -
                def  | 
| 131 | 
            +
                def set_http_queue_start
         | 
| 133 132 | 
             
                  return unless env
         | 
| 134 133 | 
             
                  env_var = env['HTTP_X_QUEUE_START'] || env['HTTP_X_REQUEST_START']
         | 
| 135 134 | 
             
                  if env_var
         | 
| 136 135 | 
             
                    value = env_var.tr('^0-9', '')
         | 
| 137 136 | 
             
                    unless value.empty?
         | 
| 138 | 
            -
                      value.to_f / 1_000_000
         | 
| 137 | 
            +
                      @queue_start = value.to_f / 1_000_000
         | 
| 139 138 | 
             
                    end
         | 
| 140 139 | 
             
                  end
         | 
| 141 140 | 
             
                end
         | 
    
        data/lib/appsignal/version.rb
    CHANGED
    
    
| @@ -32,7 +32,8 @@ describe Appsignal::Transaction do | |
| 32 32 | 
             
                  {
         | 
| 33 33 | 
             
                    'HTTP_USER_AGENT' => 'IE6',
         | 
| 34 34 | 
             
                    'SERVER_NAME' => 'localhost',
         | 
| 35 | 
            -
                    'action_dispatch.routes' => 'not_available'
         | 
| 35 | 
            +
                    'action_dispatch.routes' => 'not_available',
         | 
| 36 | 
            +
                    'HTTP_X_REQUEST_START' => '1000000'
         | 
| 36 37 | 
             
                  }
         | 
| 37 38 | 
             
                end
         | 
| 38 39 | 
             
                let(:transaction) { Appsignal::Transaction.create('1', env) }
         | 
| @@ -45,6 +46,7 @@ describe Appsignal::Transaction do | |
| 45 46 |  | 
| 46 47 | 
             
                describe '#set_process_action_event' do
         | 
| 47 48 | 
             
                  before { transaction.set_process_action_event(process_action_event) }
         | 
| 49 | 
            +
             | 
| 48 50 | 
             
                  let(:process_action_event) { notification_event }
         | 
| 49 51 |  | 
| 50 52 | 
             
                  it 'should add a process action event' do
         | 
| @@ -58,14 +60,20 @@ describe Appsignal::Transaction do | |
| 58 60 | 
             
                  it "should set the kind" do
         | 
| 59 61 | 
             
                    transaction.kind.should == 'http_request'
         | 
| 60 62 | 
             
                  end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                  it "should call set_http_queue_start" do
         | 
| 65 | 
            +
                    transaction.queue_start.should_not be_nil
         | 
| 66 | 
            +
                  end
         | 
| 61 67 | 
             
                end
         | 
| 62 68 |  | 
| 63 69 | 
             
                describe "set_perform_job_event" do
         | 
| 64 70 | 
             
                  before { transaction.set_perform_job_event(perform_job_event) }
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                  let(:payload) { create_background_payload }
         | 
| 65 73 | 
             
                  let(:perform_job_event) do
         | 
| 66 74 | 
             
                    notification_event(
         | 
| 67 75 | 
             
                      :name => 'perform_job.delayed_job',
         | 
| 68 | 
            -
                      :payload =>  | 
| 76 | 
            +
                      :payload => payload
         | 
| 69 77 | 
             
                    )
         | 
| 70 78 | 
             
                  end
         | 
| 71 79 |  | 
| @@ -80,6 +88,10 @@ describe Appsignal::Transaction do | |
| 80 88 | 
             
                  it "should set the kind" do
         | 
| 81 89 | 
             
                    transaction.kind.should == 'background_job'
         | 
| 82 90 | 
             
                  end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                  it "should set call set_background_queue_start" do
         | 
| 93 | 
            +
                    transaction.queue_start.should_not be_nil
         | 
| 94 | 
            +
                  end
         | 
| 83 95 | 
             
                end
         | 
| 84 96 |  | 
| 85 97 | 
             
                describe "#set_tags" do
         | 
| @@ -316,39 +328,46 @@ describe Appsignal::Transaction do | |
| 316 328 | 
             
                  end
         | 
| 317 329 | 
             
                end
         | 
| 318 330 |  | 
| 319 | 
            -
                describe "# | 
| 331 | 
            +
                describe "#set_background_queue_start" do
         | 
| 332 | 
            +
                  before do
         | 
| 333 | 
            +
                    transaction.stub(:process_action_event =>
         | 
| 334 | 
            +
                      notification_event(
         | 
| 335 | 
            +
                        :name => 'perform_job.delayed_job',
         | 
| 336 | 
            +
                        :payload => payload
         | 
| 337 | 
            +
                      )
         | 
| 338 | 
            +
                    )
         | 
| 339 | 
            +
                    transaction.set_background_queue_start
         | 
| 340 | 
            +
                  end
         | 
| 320 341 | 
             
                  subject { transaction.queue_start }
         | 
| 321 342 |  | 
| 322 | 
            -
                  context " | 
| 323 | 
            -
                    let(: | 
| 343 | 
            +
                  context "when queue start is nil" do
         | 
| 344 | 
            +
                    let(:payload) { create_background_payload(:queue_start => nil) }
         | 
| 324 345 |  | 
| 325 | 
            -
                    it  | 
| 326 | 
            -
                      transaction.should_receive(:http_queue_start)
         | 
| 327 | 
            -
                      subject
         | 
| 328 | 
            -
                    end
         | 
| 346 | 
            +
                    it { should be_nil }
         | 
| 329 347 | 
             
                  end
         | 
| 330 348 |  | 
| 331 | 
            -
                  context " | 
| 332 | 
            -
                    let(: | 
| 349 | 
            +
                  context "when queue start is set" do
         | 
| 350 | 
            +
                    let(:payload) { create_background_payload }
         | 
| 333 351 |  | 
| 334 | 
            -
                    it  | 
| 335 | 
            -
                      subject.should == 978364850.0
         | 
| 336 | 
            -
                    end
         | 
| 352 | 
            +
                    it { should == 978364850.0 }
         | 
| 337 353 | 
             
                  end
         | 
| 338 354 | 
             
                end
         | 
| 339 355 |  | 
| 340 | 
            -
                describe "# | 
| 356 | 
            +
                describe "#set_http_queue_start" do
         | 
| 341 357 | 
             
                  let(:slightly_earlier_time) { fixed_time - 10.0 }
         | 
| 342 358 | 
             
                  let(:slightly_earlier_time_in_msec) { (slightly_earlier_time.to_f * 1_000_000).to_i }
         | 
| 343 | 
            -
                   | 
| 359 | 
            +
                  before { transaction.set_http_queue_start }
         | 
| 360 | 
            +
                  subject { transaction.queue_start }
         | 
| 344 361 |  | 
| 345 | 
            -
                  context "without  | 
| 362 | 
            +
                  context "without env" do
         | 
| 346 363 | 
             
                    let(:env) { nil }
         | 
| 347 364 |  | 
| 348 365 | 
             
                    it { should be_nil }
         | 
| 349 366 | 
             
                  end
         | 
| 350 367 |  | 
| 351 368 | 
             
                  context "with no relevant header set" do
         | 
| 369 | 
            +
                    let(:env) { {} }
         | 
| 370 | 
            +
             | 
| 352 371 | 
             
                    it { should be_nil }
         | 
| 353 372 | 
             
                  end
         | 
| 354 373 |  | 
| @@ -12,7 +12,7 @@ module NotificationHelpers | |
| 12 12 | 
             
                )
         | 
| 13 13 | 
             
              end
         | 
| 14 14 |  | 
| 15 | 
            -
              def create_payload(args | 
| 15 | 
            +
              def create_payload(args={})
         | 
| 16 16 | 
             
                {
         | 
| 17 17 | 
             
                  :path => '/blog',
         | 
| 18 18 | 
             
                  :action => 'show',
         | 
| @@ -33,6 +33,6 @@ module NotificationHelpers | |
| 33 33 | 
             
                  :attempts => 0,
         | 
| 34 34 | 
             
                  :queue => 'default',
         | 
| 35 35 | 
             
                  :queue_start => fixed_time - 10,
         | 
| 36 | 
            -
                }
         | 
| 36 | 
            +
                }.merge(args)
         | 
| 37 37 | 
             
              end
         | 
| 38 38 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: appsignal
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.8.0
         | 
| 4 | 
            +
              version: 0.8.1.beta.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Robert Beekman
         | 
| @@ -12,7 +12,7 @@ authors: | |
| 12 12 | 
             
            autorequire: 
         | 
| 13 13 | 
             
            bindir: bin
         | 
| 14 14 | 
             
            cert_chain: []
         | 
| 15 | 
            -
            date: 2014-01- | 
| 15 | 
            +
            date: 2014-01-04 00:00:00.000000000 Z
         | 
| 16 16 | 
             
            dependencies:
         | 
| 17 17 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 18 18 | 
             
              name: activesupport
         | 
| @@ -237,9 +237,9 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 237 237 | 
             
                  version: 1.9.3
         | 
| 238 238 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 239 239 | 
             
              requirements:
         | 
| 240 | 
            -
              - - ! ' | 
| 240 | 
            +
              - - ! '>'
         | 
| 241 241 | 
             
                - !ruby/object:Gem::Version
         | 
| 242 | 
            -
                  version:  | 
| 242 | 
            +
                  version: 1.3.1
         | 
| 243 243 | 
             
            requirements: []
         | 
| 244 244 | 
             
            rubyforge_project: 
         | 
| 245 245 | 
             
            rubygems_version: 2.0.3
         |