Sha256: ebeb513328571282fd9bf249a4895f01b74fcc85ca1b01184476f39bcec87a87

Contents?: true

Size: 1.25 KB

Versions: 54

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

54 entries across 54 versions & 1 rubygems

Version Path
rbbt-util-5.13.35 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.34 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.33 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.32 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.31 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.30 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.29 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.28 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.27 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.26 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.25 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.24 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.23 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.22 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.21 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.20 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.19 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.18 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.17 test/rbbt/util/concurrency/test_processes.rb
rbbt-util-5.13.16 test/rbbt/util/concurrency/test_processes.rb