Sha256: 32c321ed82f0ecd339271384e3ff0fd14a6e42bf4087ce3107ddfd15edfc94e2

Contents?: true

Size: 1.83 KB

Versions: 41

Compression:

Stored size: 1.83 KB

Contents

require 'spec_helper'

RSpec.describe Shoryuken::Middleware::Server::Timing do
  let(:queue) { 'default' }
  let(:sqs_queue) { double Shoryuken::Queue, visibility_timeout: 60 }

  let(:sqs_msg) do
    double(
      Shoryuken::Message,
      queue_url: queue,
      body: 'test',
      message_id: 'fc754df7-9cc2-4c41-96ca-5996a44b771e'
    )
  end

  before do
    allow(Shoryuken::Client).to receive(:queues).with(queue).and_return(sqs_queue)
  end

  it 'logs timing' do
    expect(Shoryuken.logger).to receive(:info) do |&block|
      expect(block.call).to match(/started at/)
    end
    expect(Shoryuken.logger).to receive(:info) do |&block|
      expect(block.call).to match(/completed in/)
    end

    subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) {}
  end

  context 'when exceeded the `visibility_timeout`' do
    it 'logs exceeded' do
      allow(subject).to receive(:elapsed).and_return(120_000)

      expect(Shoryuken.logger).to receive(:info) do |&block|
        expect(block.call).to match(/started at/)
      end
      expect(Shoryuken.logger).to receive(:info) do |&block|
        expect(block.call).to match(/completed in/)
      end
      expect(Shoryuken.logger).to receive(:warn) do |&block|
        expect(block.call).to match('exceeded the queue visibility timeout by 60000 ms')
      end

      subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) {}
    end
  end

  context 'when exception' do
    it 'logs failed in' do
      expect(Shoryuken.logger).to receive(:info) do |&block|
        expect(block.call).to match(/started at/)
      end
      expect(Shoryuken.logger).to receive(:info) do |&block|
        expect(block.call).to match(/failed in/)
      end

      expect {
        subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'Error' }
      }.to raise_error(RuntimeError, 'Error')
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
shoryuken-6.2.1 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-6.2.0 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-6.1.1 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-6.1.0 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-6.0.0 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.3.2 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.3.1 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.3.0 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.2.3 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.2.2 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.2.1 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.2.0 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.1.1 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.1.0 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.0.6 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.0.5 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.0.4 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.0.3 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.0.2 spec/shoryuken/middleware/server/timing_spec.rb
shoryuken-5.0.1 spec/shoryuken/middleware/server/timing_spec.rb