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