Sha256: 80d35e2683b5c4e92cef87041e29a2bf2a068fb6376a8a45c71e12d3b6b5bf7d

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

describe Sidekiq::QueueMetrics::JobDeathMonitor do
  let(:redis_connection) { Redis.new }

  before(:all) do
    Sidekiq.redis = ConnectionPool.new { redis_connection }
  end

  before { redis_connection.flushall }

  describe '#call' do
    let(:job) {{'queue' => 'mailer_queue'}}
    let(:monitor) { Sidekiq::QueueMetrics::JobDeathMonitor.proc }

    context 'when stats does not exist' do
      it 'should create stats key and add stats of queue' do
        monitor.call(job)

        expect(
          Sidekiq::QueueMetrics::Storage.get_stats('mailer_queue')
        ).to eq({ 'failed' => 1 })
      end

      it 'should add the job to the failed jobs list' do
        monitor.call(job)

        expect(
          Sidekiq::QueueMetrics::Storage.failed_jobs('mailer_queue')
        ).to eql([job])
      end
    end

    context 'when stats exists' do
      it 'should create a new queue when it does not exist' do
        Sidekiq::QueueMetrics::Storage.increment_stat('mailer_queue', 'failed')

        job_queue = {'queue' => 'job_queue'}

        monitor.call(job_queue)

        expect(
          Sidekiq::QueueMetrics::Storage.get_stats('mailer_queue')
        ).to eq({ 'failed' => 1 })

        expect(
          Sidekiq::QueueMetrics::Storage.get_stats('job_queue')
        ).to eq({ 'failed' => 1 })
      end

      it 'should update existing queue' do
        Sidekiq::QueueMetrics::Storage.increment_stat('mailer_queue', 'failed')

        monitor.call(job)

        expect(
          Sidekiq::QueueMetrics::Storage.get_stats('mailer_queue')
        ).to eq({ 'failed' => 2 })
      end

      it 'should create failed counter when other counters exists' do
        Sidekiq::QueueMetrics::Storage.increment_stat('mailer_queue', 'processed')

        monitor.call(job)

        expect(
          Sidekiq::QueueMetrics::Storage.get_stats('mailer_queue')
        ).to eq({ 'processed' => 1, 'failed' => 1 })
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sidekiq_queue_metrics-3.0.0 spec/lib/sidekiq_queue_metrics/monitor/job_death_monitor_spec.rb