Sha256: 176577ad9720b9e54302c82fd12f3dd948e4295334122f02db1ef8c3aae9ab2c

Contents?: true

Size: 1.99 KB

Versions: 2

Compression:

Stored size: 1.99 KB

Contents

require 'spec_helper'
require 'shoryuken/manager'

describe Shoryuken::Manager do
  describe 'Auto Scaling' do
    it 'decreases weight' do
      queue1 = 'shoryuken'
      queue2 = 'uppercut'

      Shoryuken.queues.clear
      # [shoryuken, 2]
      # [uppercut,  1]
      Shoryuken.queues << queue1
      Shoryuken.queues << queue1
      Shoryuken.queues << queue2

      expect(subject.instance_variable_get('@queues')).to eq [queue1, queue2]

      subject.pause_queue!(queue1)

      expect(subject.instance_variable_get('@queues')).to eq [queue2]
    end

    it 'increases weight' do
      queue1 = 'shoryuken'
      queue2 = 'uppercut'

      Shoryuken.queues.clear
      # [shoryuken, 3]
      # [uppercut,  1]
      Shoryuken.queues << queue1
      Shoryuken.queues << queue1
      Shoryuken.queues << queue1
      Shoryuken.queues << queue2

      expect(subject.instance_variable_get('@queues')).to eq [queue1, queue2]
      subject.pause_queue!(queue1)
      expect(subject.instance_variable_get('@queues')).to eq [queue2]

      subject.rebalance_queue_weight!(queue1)
      expect(subject.instance_variable_get('@queues')).to eq [queue2, queue1]

      subject.rebalance_queue_weight!(queue1)
      expect(subject.instance_variable_get('@queues')).to eq [queue2, queue1, queue1]

      subject.rebalance_queue_weight!(queue1)
      expect(subject.instance_variable_get('@queues')).to eq [queue2, queue1, queue1, queue1]
    end

    it 'adds queue back' do
      queue1 = 'shoryuken'
      queue2 = 'uppercut'

      Shoryuken.queues.clear
      # [shoryuken, 2]
      # [uppercut,  1]
      Shoryuken.queues << queue1
      Shoryuken.queues << queue1
      Shoryuken.queues << queue2

      Shoryuken.options[:delay] = 0.1

      fetcher = double('Fetcher').as_null_object
      subject.fetcher = fetcher

      subject.pause_queue!(queue1)
      expect(subject.instance_variable_get('@queues')).to eq [queue2]

      sleep 0.5

      expect(subject.instance_variable_get('@queues')).to eq [queue2, queue1]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shoryuken-0.0.3 spec/shoryuken/manager_spec.rb
shoryuken-0.0.2 spec/shoryuken/manager_spec.rb