test/agent/spec_broker.rb in pione-0.2.2 vs test/agent/spec_broker.rb in pione-0.3.0

- old
+ new

@@ -1,36 +1,52 @@ -require_relative '../test-util' +require 'pione/test-helper' describe "Pione::Agent::Broker" do before do - DRb.start_service - @broker_front = Pione::Front::BrokerFront.new(self) - @ts_server1 = TupleSpaceServer.new(task_worker_resource: 1) - @ts_server2 = TupleSpaceServer.new(task_worker_resource: 2) - @ts_server3 = TupleSpaceServer.new(task_worker_resource: 3) - @broker1 = Agent[:broker].new(task_worker_resource: 5) + # setup language environment + @env = TestHelper::Lang.env + + # setup tuple spaces + @space1 = TupleSpaceServer.new({task_worker_resource: 1}, false) + @space2 = TupleSpaceServer.new({task_worker_resource: 2}, false) + @space3 = TupleSpaceServer.new({task_worker_resource: 3}, false) + [@space1, @space2, @space3].each {|space| space.write(TupleSpace::EnvTuple.new(obj: @env))} + + # setup broker + Global.expressional_features = Util.parse_features("*") + @broker = Agent::Broker.new(spawn_task_worker: false, task_worker_resource: 5) end after do - @broker_front.terminate + @broker.terminate + [@space1, @space2, @space3].each {|space| space.terminate} end it "should run workers" do - @broker1.start - @broker1.task_workers.size.should == 0 - @broker1.add_tuple_space_server @ts_server1 - sleep 2 - @broker1.task_workers.size.should == 5 - @ts_server1.current_task_worker_size.should == 5 - @broker1.add_tuple_space_server @ts_server2 - sleep 2 - @broker1.task_workers.size.should == 5 - @ts_server1.current_task_worker_size.should == 2 - @ts_server2.current_task_worker_size.should == 3 - @broker1.add_tuple_space_server @ts_server3 - sleep 2 - @broker1.task_workers.size.should == 5 - @ts_server1.current_task_worker_size.should == 1 - @ts_server2.current_task_worker_size.should == 2 - @ts_server3.current_task_worker_size.should == 2 + @broker.start + @broker.quantity.should == 0 + + # with space1 + @broker.add_tuple_space @space1 + @broker.wait_until_before(:sleep) + @broker.quantity.should == 5 + sleep 0.1 # wait workers to join the space + @space1.current_task_worker_size.should == 5 + + # with space1 and space2 + @broker.add_tuple_space @space2 + @broker.wait_until_before(:sleep) + @broker.quantity.should == 5 + sleep 0.1 # wait workers to join the space + @space1.current_task_worker_size.should == 2 + @space2.current_task_worker_size.should == 3 + + # with space1, space2, and space3 + @broker.add_tuple_space @space3 + @broker.wait_until_before(:sleep) + @broker.quantity.should == 5 + sleep 0.1 # wait workers to join the space + @space1.current_task_worker_size.should == 1 + @space2.current_task_worker_size.should == 2 + @space3.current_task_worker_size.should == 2 end end