Sha256: baab3613a3b1ed85c8e8b359c037ed4820f7543fd890f3f7137e3e71b7ba1a7f
Contents?: true
Size: 1.16 KB
Versions: 3
Compression:
Stored size: 1.16 KB
Contents
require 'spec_helper' describe "Celluloid.pool" do class ExampleError < StandardError; end class MyWorker include Celluloid def process(queue = nil) if queue queue << :done else :done end end def crash raise ExampleError, "zomgcrash" end end subject { MyWorker.pool } it "processes work units synchronously" do subject.process.should be :done end it "processes work units asynchronously" do queue = Queue.new subject.async.process(queue) queue.pop.should be :done end it "handles crashes" do expect { subject.crash }.to raise_error(ExampleError) subject.process.should be :done end it "uses a fixed-sized number of threads" do subject # eagerly evaluate the pool to spawn it actors = Celluloid::Actor.all 100.times.map { subject.future(:process) }.map(&:value) new_actors = Celluloid::Actor.all - actors new_actors.should eq [] end it "terminates" do expect { subject.terminate }.to_not raise_exception end it "handles many requests" do futures = 10.times.map do subject.future.process end futures.map(&:value) end end
Version data entries
3 entries across 3 versions & 2 rubygems