modern_times 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +24 -12
 - data/Rakefile +2 -2
 - data/VERSION +1 -1
 - data/examples/README +4 -0
 - data/examples/jms.yml +9 -0
 - data/examples/requestor/README +4 -2
 - data/examples/requestor/manager.rb +3 -2
 - data/examples/requestor/request.rb +5 -4
 - data/examples/requestor/reverse_echo_worker.rb +3 -2
 - data/examples/simple/README +7 -4
 - data/examples/simple/bar_worker.rb +4 -1
 - data/examples/simple/baz_worker.rb +4 -3
 - data/examples/simple/manager.rb +3 -2
 - data/examples/simple/publish.rb +6 -5
 - data/lib/modern_times.rb +20 -2
 - data/lib/modern_times/base/supervisor.rb +14 -21
 - data/lib/modern_times/base/supervisor_mbean.rb +4 -6
 - data/lib/modern_times/base/worker.rb +17 -26
 - data/lib/modern_times/jms.rb +23 -0
 - data/lib/modern_times/{hornetq/client.rb → jms/connection.rb} +19 -12
 - data/lib/modern_times/jms/publisher.rb +91 -0
 - data/lib/modern_times/jms/supervisor.rb +19 -0
 - data/lib/modern_times/jms/supervisor_mbean.rb +11 -0
 - data/lib/modern_times/jms/worker.rb +166 -0
 - data/lib/modern_times/jms_requestor.rb +10 -0
 - data/lib/modern_times/jms_requestor/request_handle.rb +33 -0
 - data/lib/modern_times/jms_requestor/requestor.rb +45 -0
 - data/lib/modern_times/jms_requestor/supervisor.rb +45 -0
 - data/lib/modern_times/jms_requestor/supervisor_mbean.rb +21 -0
 - data/lib/modern_times/jms_requestor/worker.rb +78 -0
 - data/lib/modern_times/manager.rb +14 -9
 - data/lib/modern_times/manager_mbean.rb +14 -7
 - data/lib/modern_times/marshal_strategy.rb +47 -0
 - data/lib/modern_times/marshal_strategy/bson.rb +31 -0
 - data/lib/modern_times/marshal_strategy/json.rb +30 -0
 - data/lib/modern_times/marshal_strategy/ruby.rb +20 -0
 - data/lib/modern_times/marshal_strategy/string.rb +19 -0
 - data/lib/modern_times/railsable.rb +17 -74
 - data/test/base_test.rb +248 -0
 - data/test/jms.yml +8 -0
 - data/test/jms_requestor_test.rb +263 -0
 - data/test/jms_test.rb +296 -0
 - data/test/marshal_strategy_test.rb +39 -0
 - metadata +49 -46
 - data/examples/requestor/hornetq.yml +0 -14
 - data/examples/simple/hornetq.yml +0 -14
 - data/lib/modern_times/hornetq.rb +0 -11
 - data/lib/modern_times/hornetq/marshal_strategy.rb +0 -3
 - data/lib/modern_times/hornetq/marshal_strategy/json.rb +0 -17
 - data/lib/modern_times/hornetq/marshal_strategy/ruby.rb +0 -17
 - data/lib/modern_times/hornetq/marshal_strategy/string.rb +0 -17
 - data/lib/modern_times/hornetq/publisher.rb +0 -65
 - data/lib/modern_times/hornetq/supervisor.rb +0 -22
 - data/lib/modern_times/hornetq/supervisor_mbean.rb +0 -12
 - data/lib/modern_times/hornetq/worker.rb +0 -127
 - data/lib/modern_times/hornetq_requestor.rb +0 -9
 - data/lib/modern_times/hornetq_requestor/request_handle.rb +0 -49
 - data/lib/modern_times/hornetq_requestor/requestor.rb +0 -48
 - data/lib/modern_times/hornetq_requestor/worker.rb +0 -29
 - data/lib/modern_times/thread.rb +0 -16
 - data/test/base/worker_test.rb +0 -38
 - data/test/messaging/worker_manager_test.rb +0 -58
 - data/test/messaging/worker_test.rb +0 -58
 - data/test/worker_manager_test.rb +0 -48
 
| 
         @@ -1,29 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module ModernTimes
         
     | 
| 
       2 
     | 
    
         
            -
              module HornetQRequestor
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
                # Base Worker Class for any class that will be processing messages from queues
         
     | 
| 
       5 
     | 
    
         
            -
                class Worker < ModernTimes::HornetQ::Worker
         
     | 
| 
       6 
     | 
    
         
            -
                  # Make HornetQRequestor::Supervisor our supervisor
         
     | 
| 
       7 
     | 
    
         
            -
                  #supervisor Supervisor
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                  def on_message(message)
         
     | 
| 
       10 
     | 
    
         
            -
                    @reply_queue = message.get_string_property(Java::OrgHornetqCoreClientImpl::ClientMessageImpl::REPLYTO_HEADER_NAME)
         
     | 
| 
       11 
     | 
    
         
            -
                    @message_id = message.get_string_property(MESSAGE_ID)
         
     | 
| 
       12 
     | 
    
         
            -
                    super
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                  def perform(object)
         
     | 
| 
       16 
     | 
    
         
            -
                    response = request(object)
         
     | 
| 
       17 
     | 
    
         
            -
                    session.producer(@reply_queue) do |producer|
         
     | 
| 
       18 
     | 
    
         
            -
                      reply_message = marshal(session, response, false)
         
     | 
| 
       19 
     | 
    
         
            -
                      reply_message.put_string_property(MESSAGE_ID, @message_id)
         
     | 
| 
       20 
     | 
    
         
            -
                      producer.send_with_retry(reply_message)
         
     | 
| 
       21 
     | 
    
         
            -
                    end
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                  def request(object)
         
     | 
| 
       25 
     | 
    
         
            -
                    raise "#{self}: Need to override request method in #{self.class.name} in order to act on #{object}"
         
     | 
| 
       26 
     | 
    
         
            -
                  end
         
     | 
| 
       27 
     | 
    
         
            -
                end
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/modern_times/thread.rb
    DELETED
    
    | 
         @@ -1,16 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module ModernTimes
         
     | 
| 
       2 
     | 
    
         
            -
              class Thread < ::Thread
         
     | 
| 
       3 
     | 
    
         
            -
                def initialize(&block)
         
     | 
| 
       4 
     | 
    
         
            -
                  super() do
         
     | 
| 
       5 
     | 
    
         
            -
                    begin
         
     | 
| 
       6 
     | 
    
         
            -
                      yield
         
     | 
| 
       7 
     | 
    
         
            -
                    rescue => e
         
     | 
| 
       8 
     | 
    
         
            -
                      ModernTimes.logger.fatal("Thread #{self} died due to exception #{e.message}\n#{e.backtrace.join("\n")}")
         
     | 
| 
       9 
     | 
    
         
            -
                    ensure
         
     | 
| 
       10 
     | 
    
         
            -
                      ActiveRecord::Base.clear_active_connections!() if Module.const_get('ActiveRecord') rescue nil
         
     | 
| 
       11 
     | 
    
         
            -
                      ModernTimes.logger.flush if ModernTimes.logger.respond_to?(:flush)
         
     | 
| 
       12 
     | 
    
         
            -
                    end
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
                end
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
            end
         
     | 
    
        data/test/base/worker_test.rb
    DELETED
    
    | 
         @@ -1,38 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'modern_times'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'shoulda'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'test/unit'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            class DummyWorker < ModernTimes::Base::Worker
         
     | 
| 
       6 
     | 
    
         
            -
            end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            module Base
         
     | 
| 
       9 
     | 
    
         
            -
              class WorkerTest <  Test::Unit::TestCase
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                context 'a worker with no name specified' do
         
     | 
| 
       12 
     | 
    
         
            -
                  setup do
         
     | 
| 
       13 
     | 
    
         
            -
                    @worker = DummyWorker.new
         
     | 
| 
       14 
     | 
    
         
            -
                    @worker.index = 2
         
     | 
| 
       15 
     | 
    
         
            -
                    @worker.thread = 'dummy thread'
         
     | 
| 
       16 
     | 
    
         
            -
                    @supervisor = DummyWorker.create_supervisor('dummy_manager')
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  should "have default name and proper supervisor and attributes" do
         
     | 
| 
       20 
     | 
    
         
            -
                    assert_equal('Dummy', @worker.name)
         
     | 
| 
       21 
     | 
    
         
            -
                    assert_equal(2, @worker.index)
         
     | 
| 
       22 
     | 
    
         
            -
                    assert_equal('dummy thread', @worker.thread)
         
     | 
| 
       23 
     | 
    
         
            -
                    assert_equal(ModernTimes::Base::Supervisor, @supervisor.class)
         
     | 
| 
       24 
     | 
    
         
            -
                    assert_equal('dummy_manager', @supervisor.manager)
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
                end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                context 'a worker with name specified' do
         
     | 
| 
       29 
     | 
    
         
            -
                  setup do
         
     | 
| 
       30 
     | 
    
         
            -
                    @worker = DummyWorker.new(:name => 'Foo')
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  should "have name specified and proper supervisor and attributes" do
         
     | 
| 
       34 
     | 
    
         
            -
                    assert_equal('Foo', @worker.name)
         
     | 
| 
       35 
     | 
    
         
            -
                  end
         
     | 
| 
       36 
     | 
    
         
            -
                end
         
     | 
| 
       37 
     | 
    
         
            -
              end
         
     | 
| 
       38 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,58 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class DummyDefaultWorker < Messaging::Worker
         
     | 
| 
       4 
     | 
    
         
            -
            end
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            module Dummy
         
     | 
| 
       7 
     | 
    
         
            -
              class DefaultWorker < Messaging::Worker
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
            end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            class DummyDefaultWorkerWithSpecifiedNames < Messaging::Worker
         
     | 
| 
       12 
     | 
    
         
            -
              address :MyAddressName
         
     | 
| 
       13 
     | 
    
         
            -
              queue   :MyQueueName
         
     | 
| 
       14 
     | 
    
         
            -
            end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            module Messaging
         
     | 
| 
       17 
     | 
    
         
            -
              class WorkerManagerTest <  ActiveSupport::TestCase
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                context 'a default worker' do
         
     | 
| 
       20 
     | 
    
         
            -
                  setup do
         
     | 
| 
       21 
     | 
    
         
            -
                    @worker = DummyDefaultWorker.new
         
     | 
| 
       22 
     | 
    
         
            -
                    @worker.message = 'foo'
         
     | 
| 
       23 
     | 
    
         
            -
                    @worker.session = 'dummy session'
         
     | 
| 
       24 
     | 
    
         
            -
                    @worker.thread_number = 4
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                  should "have address and queue names derived from it's class name" do
         
     | 
| 
       28 
     | 
    
         
            -
                    assert_equal(@worker.address_name, 'DummyDefault')
         
     | 
| 
       29 
     | 
    
         
            -
                    assert_equal(@worker.queue_name, 'DummyDefault')
         
     | 
| 
       30 
     | 
    
         
            -
                    assert_equal(@worker.message, 'foo')
         
     | 
| 
       31 
     | 
    
         
            -
                    assert_equal(@worker.session, 'dummy session')
         
     | 
| 
       32 
     | 
    
         
            -
                    assert_equal(@worker.thread_number, 4)
         
     | 
| 
       33 
     | 
    
         
            -
                  end
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                context 'a default worker in a namespace' do
         
     | 
| 
       37 
     | 
    
         
            -
                  setup do
         
     | 
| 
       38 
     | 
    
         
            -
                    @worker = Dummy::DefaultWorker.new
         
     | 
| 
       39 
     | 
    
         
            -
                  end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                  should "have address and queue names derived from it's class name" do
         
     | 
| 
       42 
     | 
    
         
            -
                    assert_equal(@worker.address_name, 'Dummy_Default')
         
     | 
| 
       43 
     | 
    
         
            -
                    assert_equal(@worker.queue_name, 'Dummy_Default')
         
     | 
| 
       44 
     | 
    
         
            -
                  end
         
     | 
| 
       45 
     | 
    
         
            -
                end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                context 'a worker with specified names' do
         
     | 
| 
       48 
     | 
    
         
            -
                  setup do
         
     | 
| 
       49 
     | 
    
         
            -
                    @worker = DummyDefaultWorkerWithSpecifiedNames.new
         
     | 
| 
       50 
     | 
    
         
            -
                  end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                  should "have address and queue names matching the specified names" do
         
     | 
| 
       53 
     | 
    
         
            -
                    assert_equal(@worker.address_name, 'MyAddressName')
         
     | 
| 
       54 
     | 
    
         
            -
                    assert_equal(@worker.queue_name, 'MyQueueName')
         
     | 
| 
       55 
     | 
    
         
            -
                  end
         
     | 
| 
       56 
     | 
    
         
            -
                end
         
     | 
| 
       57 
     | 
    
         
            -
              end
         
     | 
| 
       58 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,58 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class DummyDefaultWorker < Messaging::Worker
         
     | 
| 
       4 
     | 
    
         
            -
            end
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            module Dummy
         
     | 
| 
       7 
     | 
    
         
            -
              class DefaultWorker < Messaging::Worker
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
            end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            class DummyDefaultWorkerWithSpecifiedNames < Messaging::Worker
         
     | 
| 
       12 
     | 
    
         
            -
              address :MyAddressName
         
     | 
| 
       13 
     | 
    
         
            -
              queue   :MyQueueName
         
     | 
| 
       14 
     | 
    
         
            -
            end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            module Messaging
         
     | 
| 
       17 
     | 
    
         
            -
              class WorkerTest <  ActiveSupport::TestCase
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                context 'a default worker' do
         
     | 
| 
       20 
     | 
    
         
            -
                  setup do
         
     | 
| 
       21 
     | 
    
         
            -
                    @worker = DummyDefaultWorker.new
         
     | 
| 
       22 
     | 
    
         
            -
                    @worker.message = 'foo'
         
     | 
| 
       23 
     | 
    
         
            -
                    @worker.session = 'dummy session'
         
     | 
| 
       24 
     | 
    
         
            -
                    @worker.thread_number = 4
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                  should "have address and queue names derived from it's class name" do
         
     | 
| 
       28 
     | 
    
         
            -
                    assert_equal(@worker.address_name, 'DummyDefault')
         
     | 
| 
       29 
     | 
    
         
            -
                    assert_equal(@worker.queue_name, 'DummyDefault')
         
     | 
| 
       30 
     | 
    
         
            -
                    assert_equal(@worker.message, 'foo')
         
     | 
| 
       31 
     | 
    
         
            -
                    assert_equal(@worker.session, 'dummy session')
         
     | 
| 
       32 
     | 
    
         
            -
                    assert_equal(@worker.thread_number, 4)
         
     | 
| 
       33 
     | 
    
         
            -
                  end
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                context 'a default worker in a namespace' do
         
     | 
| 
       37 
     | 
    
         
            -
                  setup do
         
     | 
| 
       38 
     | 
    
         
            -
                    @worker = Dummy::DefaultWorker.new
         
     | 
| 
       39 
     | 
    
         
            -
                  end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                  should "have address and queue names derived from it's class name" do
         
     | 
| 
       42 
     | 
    
         
            -
                    assert_equal(@worker.address_name, 'Dummy_Default')
         
     | 
| 
       43 
     | 
    
         
            -
                    assert_equal(@worker.queue_name, 'Dummy_Default')
         
     | 
| 
       44 
     | 
    
         
            -
                  end
         
     | 
| 
       45 
     | 
    
         
            -
                end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                context 'a worker with specified names' do
         
     | 
| 
       48 
     | 
    
         
            -
                  setup do
         
     | 
| 
       49 
     | 
    
         
            -
                    @worker = DummyDefaultWorkerWithSpecifiedNames.new
         
     | 
| 
       50 
     | 
    
         
            -
                  end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                  should "have address and queue names matching the specified names" do
         
     | 
| 
       53 
     | 
    
         
            -
                    assert_equal(@worker.address_name, 'MyAddressName')
         
     | 
| 
       54 
     | 
    
         
            -
                    assert_equal(@worker.queue_name, 'MyQueueName')
         
     | 
| 
       55 
     | 
    
         
            -
                  end
         
     | 
| 
       56 
     | 
    
         
            -
                end
         
     | 
| 
       57 
     | 
    
         
            -
              end
         
     | 
| 
       58 
     | 
    
         
            -
            end
         
     | 
    
        data/test/worker_manager_test.rb
    DELETED
    
    | 
         @@ -1,48 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'test/unit'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'shoulda'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'modern_times'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'range_queue_strategy'
         
     | 
| 
       6 
     | 
    
         
            -
            require 'range_queue_worker'
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            class WorkerManagerTest < Test::Unit::TestCase
         
     | 
| 
       9 
     | 
    
         
            -
              context 'on single strategy' do
         
     | 
| 
       10 
     | 
    
         
            -
                setup do
         
     | 
| 
       11 
     | 
    
         
            -
                  @range = 1..100
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                should 'work' do
         
     | 
| 
       15 
     | 
    
         
            -
                  strategy = RangeQueueStrategy.new(@range)
         
     | 
| 
       16 
     | 
    
         
            -
                  manager = ModernTimes::WorkerManager.new
         
     | 
| 
       17 
     | 
    
         
            -
                  worker = RangeQueueWorker.new
         
     | 
| 
       18 
     | 
    
         
            -
                  thread_count = 10
         
     | 
| 
       19 
     | 
    
         
            -
                  manager.add(strategy, worker, thread_count, 1)
         
     | 
| 
       20 
     | 
    
         
            -
                  sleep(2)
         
     | 
| 
       21 
     | 
    
         
            -
                  manager.stop
         
     | 
| 
       22 
     | 
    
         
            -
                  assert_equal @range.to_a, worker.results.sort
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              context 'on multiple strategies' do
         
     | 
| 
       27 
     | 
    
         
            -
                setup do
         
     | 
| 
       28 
     | 
    
         
            -
                  @ranges = [1..100, 101..200, 201..300]
         
     | 
| 
       29 
     | 
    
         
            -
                end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                should 'work' do
         
     | 
| 
       32 
     | 
    
         
            -
                  [nil, 1].each do |poll_sleep|
         
     | 
| 
       33 
     | 
    
         
            -
                    strategies = @ranges.map {|range| RangeQueueStrategy.new(range) }
         
     | 
| 
       34 
     | 
    
         
            -
                    manager = ModernTimes::WorkerManager.new
         
     | 
| 
       35 
     | 
    
         
            -
                    workers = [RangeQueueWorker.new, RangeQueueWorker.new, RangeQueueWorker.new]
         
     | 
| 
       36 
     | 
    
         
            -
                    thread_count = 10
         
     | 
| 
       37 
     | 
    
         
            -
                    strategies.each_index do |i|
         
     | 
| 
       38 
     | 
    
         
            -
                      manager.add(strategies[i], workers[i], thread_count, poll_sleep)
         
     | 
| 
       39 
     | 
    
         
            -
                    end
         
     | 
| 
       40 
     | 
    
         
            -
                    sleep(2)
         
     | 
| 
       41 
     | 
    
         
            -
                    manager.stop
         
     | 
| 
       42 
     | 
    
         
            -
                    strategies.each_index do |i|
         
     | 
| 
       43 
     | 
    
         
            -
                      assert_equal @ranges[i].to_a, workers[i].results.sort
         
     | 
| 
       44 
     | 
    
         
            -
                    end
         
     | 
| 
       45 
     | 
    
         
            -
                  end
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
            end
         
     |