Sha256: 70722ab2e205787c7c5ef838b768e8f4f864bc4ff63393344bb424d43de6e8da

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

require 'spec_helper'
require 'shoryuken/manager'
require 'shoryuken/launcher'

describe Shoryuken::Launcher do
  describe 'Consuming messages', slow: :true do
    before do
      Shoryuken.options[:aws] ||= {}
      Shoryuken.options[:aws][:receive_message] ||= {}
      Shoryuken.options[:aws][:receive_message][:wait_time_seconds] = 5

      subject.run

      ShoryukenWorker.received_messages = 0
    end

    after { subject.stop }

    class ShoryukenWorker
      include Shoryuken::Worker

      @@received_messages = 0

      shoryuken_options queue: 'shoryuken', delete: true

      def perform(sqs_msg, body)
        @@received_messages = Array(sqs_msg).size
      end

      def self.received_messages
        @@received_messages
      end

      def self.received_messages=(received_messages)
        @@received_messages = received_messages
      end
    end

    it 'consumes a message' do
      ShoryukenWorker.get_shoryuken_options['batch'] = false

      Shoryuken::Client.queues('shoryuken').send_message('Yo')

      10.times do
        break if ShoryukenWorker.received_messages > 0
        sleep 0.2
      end

      expect(ShoryukenWorker.received_messages).to eq 1
    end

    it 'consumes a batch' do
      ShoryukenWorker.get_shoryuken_options['batch'] = true

      Shoryuken::Client.queues('shoryuken').batch_send *(['Yo'] * 10)

      10.times do
        break if ShoryukenWorker.received_messages > 0
        sleep 0.2
      end

      # the fetch result is uncertain, should be greater than 1, but hard to tell the exact size
      expect(ShoryukenWorker.received_messages).to be > 1
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoryuken-0.0.3 spec/integration/launcher_spec.rb