Sha256: ab2fd04c8930c7d833f03c3298854a28a06443ac7dabe1dbe6055c82a3aefae4

Contents?: true

Size: 1.17 KB

Versions: 6

Compression:

Stored size: 1.17 KB

Contents

# -*- encoding : utf-8 -*-
require './test/test_helper'
require 'benchmark'

describe 'Performance Poller' do
  X = 10000
  before do
    Sidekiq.redis = REDIS
    Sidekiq.redis do |conn|
      conn.flushdb
    end

    #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 30s' 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, :<, 30
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
sidekiq-cron-1.1.0 test/integration/performance_test.rb
sidekiq-cron-1.0.4 test/integration/performance_test.rb
sidekiq-cron-1.0.3 test/integration/performance_test.rb
sidekiq-cron-1.0.2 test/integration/performance_test.rb
sidekiq-cron-1.0.1 test/integration/performance_test.rb
sidekiq-cron-1.0.0 test/integration/performance_test.rb