- Timestamp:
- 08/10/08 03:34:20 (5 months ago)
- Files:
-
- trunk/examples/foo_controller.rb (modified) (1 diff)
- trunk/examples/workers/foo_worker.rb (modified) (1 diff)
- trunk/examples/workers/rss_worker.rb (modified) (1 diff)
- trunk/lib/backgroundrb/bdrb_cluster_connection.rb (modified) (1 diff)
- trunk/lib/backgroundrb/bdrb_connection.rb (modified) (1 diff)
- trunk/script/load_worker_env.rb (modified) (1 diff)
- trunk/server/lib/meta_worker.rb (modified) (2 diffs)
- trunk/test/bdrb_client_test_helper.rb (modified) (1 diff)
- trunk/test/client/test_bdrb_cluster_connection.rb (modified) (3 diffs)
- trunk/test/client/test_bdrb_connection.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/examples/foo_controller.rb
r326 r327 9 9 10 10 def start_worker 11 MiddleMan.new_worker(:worker => :error_worker, : job_key => :hello_world,:data => "wow_man",:schedule => { :hello_world => { :trigger_args => "*/5 * * * * * *",:data => "hello_world" }})11 MiddleMan.new_worker(:worker => :error_worker, :worker_key => :hello_world,:data => "wow_man") 12 12 render :text => "worker starterd" 13 13 end 14 14 15 15 def stop_worker 16 MiddleMan. delete_worker(:worker => :error_worker, :job_key => :hello_world)16 MiddleMan.worker(:error_worker,:hello_world).delete 17 17 render :text => "worker deleted" 18 18 end 19 19 20 20 def invoke_worker_method 21 worker_response = MiddleMan. send_request(:worker => :world_worker, :worker_method => :hello_world)21 worker_response = MiddleMan.worker(:hello_worker).say_hello(:arg => data) 22 22 render :text => worker_response 23 23 end 24 24 25 25 def renew 26 MiddleMan. ask_work(:worker => :renewal_worker, :worker_method => :load_policies)26 MiddleMan.worker(:hello_worker).async_load_policy(:arg => current_user.id) 27 27 render :text => "method invoked" 28 28 end 29 29 30 def ask_status30 def query_all_workers 31 31 t_response = MiddleMan.query_all_workers 32 32 running_workers = t_response.map { |key,value| "#{key} = #{value}"}.join(',') 33 33 render :text => running_workers 34 end 35 36 def ask_result 37 t_result = MiddleMan.worker(:hello_worker).ask_result(cache_key) 34 38 end 35 39 trunk/examples/workers/foo_worker.rb
r326 r327 24 24 25 25 def get_external_data(p_data) 26 register_status(p_data)26 cache[some_key] = p_data 27 27 end 28 28 29 29 def foobar 30 register_status("Hello #{Time.now}")30 cache[some_key] = "Time is now : #{Time.now}" 31 31 end 32 32 trunk/examples/workers/rss_worker.rb
r326 r327 10 10 def fetch_url(url) 11 11 puts "fetching url #{url}" 12 thread_pool.defer( url) do |url|13 begin14 data = Net::HTTP.get('www.example.com','/') 15 File.open("#{RAILS_ROOT}/log/pages.txt","w") do |fl|16 fl.puts(data)17 end18 rescue19 logger.info "Error downloading page"12 thread_pool.defer(:scrap_things,url) 13 end 14 15 def scrap_things url 16 begin 17 data = Net::HTTP.get(url,"/") 18 File.open("#{RAILS_ROOT}/log/pages.txt","w") do |fl| 19 fl.puts(data) 20 20 end 21 rescue 22 logger.info "Error downloading page" 21 23 end 22 24 end trunk/lib/backgroundrb/bdrb_cluster_connection.rb
r326 r327 137 137 end 138 138 raise NoServerAvailable.new("No BackgrounDRb server is found running") unless succeeded 139 return options[:worker_key] 139 140 end 140 141 trunk/lib/backgroundrb/bdrb_connection.rb
r326 r327 149 149 @mutex.synchronize { bdrb_response = read_from_bdrb() } 150 150 close_connection 151 return bdrb_response[:data]151 bdrb_response ? bdrb_response[:data] : nil 152 152 end 153 153 end trunk/script/load_worker_env.rb
r326 r327 20 20 if !(::Packet::WorkerRunner::WORKER_OPTIONS[:worker_env] == false) 21 21 require RAILS_HOME + "/config/environment" 22 ActiveRecord::Base.allow_concurrency = true 22 23 end 23 24 require "backgroundrb_server" trunk/server/lib/meta_worker.rb
r326 r327 23 23 end 24 24 # == MetaWorker class 25 # BackgrounDRb workers are asynchro unous reactors which work using events25 # BackgrounDRb workers are asynchronous reactors which work using events 26 26 # You are free to use threads in your workers, but be reasonable with them. 27 27 # Following methods are available to all workers from parent classes. … … 214 214 end 215 215 216 # can the respon es be dumped?216 # can the responses be dumped? 217 217 def can_dump?(p_object) 218 218 begin trunk/test/bdrb_client_test_helper.rb
r326 r327 3 3 require "bdrb_client_helper" 4 4 require "bdrb_cluster_connection" 5 require "bdrb_conn_error" trunk/test/client/test_bdrb_cluster_connection.rb
r326 r327 5 5 class BackgrounDRb::Connection 6 6 attr_accessor :server_ip,:server_port,:cluster_conn,:connection_status 7 def initialize ip,port,cluster_connection8 @server_ip = ip9 @server_port = port10 end11 7 def establish_connection 12 8 @connection_status = true 13 9 end 10 14 11 def close_connection 15 12 @connection_status = false … … 92 89 t_conn.expects(:new_worker).with(:worker => :hello_worker,:worker_key => "boy",:data => "boy").returns(true) 93 90 end 94 @cluster_connection.new_worker(:worker => :hello_worker,:worker_key => "boy",:data => "boy") 91 a = @cluster_connection.new_worker(:worker => :hello_worker,:worker_key => "boy",:data => "boy") 92 a.should == "boy" 95 93 end 96 94 … … 107 105 class BackgrounDRb::Connection 108 106 attr_accessor :server_ip,:server_port,:cluster_conn,:connection_status 109 def initialize ip,port,cluster_connection110 @server_ip = ip111 @server_port = port112 end113 107 end 114 108 trunk/test/client/test_bdrb_connection.rb
r326 r327 4 4 5 5 context "For Actual BackgrounDRB connection" do 6 specify "in case of timeout connection status should be false" do 6 setup do 7 options = {:schedules => { 8 :foo_worker => { :barbar=>{:trigger_args=>"*/5 * * * * * *"}}}, 9 :backgroundrb=>{:port=>11008, :ip=>"0.0.0.0", :environment=> "production"}, 10 :client => "localhost:11001,localhost:11002,localhost:11003" 11 } 12 BDRB_CONFIG.set(options) 7 13 @cluster = mock() 8 @connection = BackgrounDRb::Connection.new('localhost',1267,@cluster) 9 @connection.establish_connection 14 @foo_connection = BackgrounDRb::Connection.new('localhost',1267,"crap") 15 @foo_connection.stubs(:close_connection) 16 class << @foo_connection 17 attr_accessor :outgoing_data 18 def dump_object data 19 @outgoing_data = data 20 end 21 end 22 end 23 24 specify "should return nil if ask_result returns nil" do 25 a = @foo_connection.ask_result(:worker => 'foo_worker',:worker_key => 'bar',:job_key => 10) 26 a.should == nil 27 @foo_connection.outgoing_data.should == {:type=>:get_result, :job_key=>10, :worker=>"foo_worker", :worker_key=>"bar"} 10 28 end 11 29 end
