Sha256: 25b901ddda58120d6aae0be774ac7661016152a20a3ef56824eaf37f86cc6983

Contents?: true

Size: 1.25 KB

Versions: 15

Compression:

Stored size: 1.25 KB

Contents

require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')

require 'rbbt-util'
require 'rbbt/util/log'
require 'rbbt/util/concurrency/processes'

class TestConcurrencyProcess < Test::Unit::TestCase

  def test_process
    q = RbbtProcessQueue.new 10

    res = []

    q.callback do |v|
      res << v
    end

    q.init do |i|
      i * 2
    end

    times = 500
    t = TSV.setup({"a" => 1}, :type => :single)

    times.times do |i|
      q.process i
    end

    q.join

    assert_equal times, res.length
    assert_equal [0, 2, 4], res.sort[0..2]
  end

  def test_each
    times = 5000
    elems = (0..times-1).to_a

    TmpFile.with_file do |dir|
      RbbtProcessQueue.each(elems) do |elem|
        Open.write(File.join(dir, elem.to_s), "DONE")
      end

      assert_equal times, Dir.glob(File.join(dir, '*')).length
    end
  end

  def test_process_abort
    assert_raise Aborted do
      q = RbbtProcessQueue.new 10

      res = []

      q.callback do |v|
        res << v
      end

      q.init do |i|
        sleep 1 while true
      end

      times = 500
      t = TSV.setup({"a" => 1}, :type => :single)

      times.times do |i|
        q.process i
      end

      sleep 2
      q.clean

      q.join

    end
  end
end


Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
rbbt-util-5.13.1 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.0 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.12.3 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.12.2 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.12.1 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.12.0 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.11.9 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.11.8 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.11.7 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.11.6 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.11.5 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.11.4 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.11.3 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.11.2 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.11.1 test/rbbt/util/concurrency/test_processes.rb