Sha256: 5e821013edd13dae2e718e5474362597e0a04e2646b9ef32c715599000ca1221

Contents?: true

Size: 1.26 KB

Versions: 3

Compression:

Stored size: 1.26 KB

Contents

require 'rubygems'
require 'test/unit'
require 'shoulda'
require 'modern_times'
require 'range_queue_strategy'
require 'range_queue_worker'

class WorkerManagerTest < Test::Unit::TestCase
  context 'on single strategy' do
    setup do
      @range = 1..100
    end

    should 'work' do
      strategy = RangeQueueStrategy.new(@range)
      manager = ModernTimes::WorkerManager.new
      worker = RangeQueueWorker.new
      thread_count = 10
      manager.add(strategy, worker, thread_count, 1)
      sleep(2)
      manager.stop
      assert_equal @range.to_a, worker.results.sort
    end
  end

  context 'on multiple strategies' do
    setup do
      @ranges = [1..100, 101..200, 201..300]
    end

    should 'work' do
      [nil, 1].each do |poll_sleep|
        strategies = @ranges.map {|range| RangeQueueStrategy.new(range) }
        manager = ModernTimes::WorkerManager.new
        workers = [RangeQueueWorker.new, RangeQueueWorker.new, RangeQueueWorker.new]
        thread_count = 10
        strategies.each_index do |i|
          manager.add(strategies[i], workers[i], thread_count, poll_sleep)
        end
        sleep(2)
        manager.stop
        strategies.each_index do |i|
          assert_equal @ranges[i].to_a, workers[i].results.sort
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
modern_times-0.1.2 test/worker_manager_test.rb
modern_times-0.1.1 test/worker_manager_test.rb
modern_times-0.1.0 test/worker_manager_test.rb