Sha256: e27c403800788dc5b5dc986f7e3032f9bd96541d9a2a234de6cfe497eb808344

Contents?: true

Size: 1.16 KB

Versions: 4

Compression:

Stored size: 1.16 KB

Contents

require './test/test_helper'
require 'benchmark'

describe 'Performance Poller' do
  X = 10000
  before do
    REDIS.with { |c| c.respond_to?(:redis) ? c.redis.flushdb : c.flushdb }
    Sidekiq.redis = REDIS

    #clear all previous saved data from redis
    Sidekiq.redis do |conn|
      conn.keys("cron_job*").each do |key|
        conn.del(key)
      end
    end

    args = {
      queue: "default",
      cron: "*/2 * * * *",
      klass: "CronTestClass"
    }

    X.times do |i|
      Sidekiq::Cron::Job.create(args.merge(name: "Test#{i}"))
    end

    @poller = Sidekiq::Cron::Poller.new
    now = Time.now.utc + 3600
    enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 10, 5)
    Time.stubs(:now).returns(enqueued_time)
  end

  it 'should enqueue 10000 jobs in less than 50s' do
    Sidekiq.redis do |conn|
      assert_equal 0, conn.llen("queue:default"), 'Queue should be empty'
    end

    bench = Benchmark.measure {
      @poller.enqueue
    }

    Sidekiq.redis do |conn|
      assert_equal X, conn.llen("queue:default"), 'Queue should be full'
    end

    puts "Performance test finished in #{bench.real}"
    assert_operator bench.real, :<, 50
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sidekiq-cron-1.6.0 test/integration/performance_test.rb
sidekiq-cron-1.5.1 test/integration/performance_test.rb
sidekiq-cron-1.5.0 test/integration/performance_test.rb
sidekiq-cron-1.4.0 test/integration/performance_test.rb