Skip to content

Commit

Permalink
Check in test cases for cron trigger
Browse files Browse the repository at this point in the history
  • Loading branch information
gnufied committed Feb 7, 2008
1 parent 2034f67 commit e8d1ae2
Show file tree
Hide file tree
Showing 8 changed files with 190 additions and 170 deletions.
17 changes: 17 additions & 0 deletions .autotest
@@ -0,0 +1,17 @@
class Autotest
def find_files
result = {}
Find.find '.' do |f|
Find.prune if @exceptions and f =~ @exceptions and test ?d, f

next if test ?d, f
next if f =~ /(swp|~|rej|orig|flymake)$/ # temporary/patch files
next if f =~ /\/\.?#/ # Emacs autosave/cvs merge files

filename = f.sub(/^\.\//, '')

result[filename] = File.stat(filename).mtime rescue next
end
return result
end
end
3 changes: 1 addition & 2 deletions framework/packet/worker.rb
Expand Up @@ -11,14 +11,13 @@ class Worker

# method initializes the eventloop for the worker
def self.start_worker(messengers = {})
# @fd_reader = args.shift if args.length > 2
@msg_writer = messengers[:write_end]
@msg_reader = messengers[:read_end]
# @fd_reader = messengers[:read_fd]
t_instance = new
t_instance.worker_options = messengers[:options]
t_instance.worker_init if t_instance.respond_to?(:worker_init)
t_instance.start_reactor
t_instance
end

def initialize
Expand Down
49 changes: 10 additions & 39 deletions server/meta_worker.rb
Expand Up @@ -176,15 +176,15 @@ def worker_init
@logger = PacketLogger.new(self)
@thread_pool = ThreadPool.new(pool_size || 20,@logger)

if(@worker_options && @worker_options[:schedule] && no_auto_load)
if(worker_options && worker_options[:schedule] && no_auto_load)
load_schedule_from_args
elsif(@config_file[:schedules] && @config_file[:schedules][worker_name.to_sym])
@my_schedule = @config_file[:schedules][worker_name.to_sym]
new_load_schedule if @my_schedule
end
if respond_to?(:create)
create_arity = method(:create).arity
(create_arity == 0) ? create : create(@worker_options[:data])
(create_arity == 0) ? create : create(worker_options[:data])
end
@logger.info "#{worker_name} started"
@logger.info "Schedules for worker loaded"
Expand All @@ -193,7 +193,7 @@ def worker_init
# loads workers schedule from options supplied from rails
# a user may pass trigger arguments to dynamically define the schedule
def load_schedule_from_args
@my_schedule = @worker_options[:schedule]
@my_schedule = worker_options[:schedule]
new_load_schedule if @my_schedule
end

Expand Down Expand Up @@ -239,19 +239,6 @@ def can_dump?(p_object)
end
end

def load_schedule
case @my_schedule[:trigger_args]
when String
@trigger_type = :cron_trigger
cron_args = @my_schedule[:trigger_args] || "0 0 0 0 0"
@trigger = BackgrounDRb::CronTrigger.new(cron_args)
when Hash
@trigger_type = :trigger
@trigger = BackgrounDRb::Trigger.new(@my_schedule[:trigger_args])
end
@run_time = @trigger.fire_time_after(Time.now).to_i
end

# new experimental scheduler
def new_load_schedule
@worker_method_triggers = { }
Expand Down Expand Up @@ -334,12 +321,15 @@ def check_for_timer_events
@worker_method_triggers.delete_if { |key,value| value[:trigger].respond_to?(:end_time) && value[:trigger].end_time <= Time.now }

@worker_method_triggers.each do |key,value|
if value[:runtime] < Time.now.to_i
time_now = Time.now.to_i
if value[:runtime] < time_now
begin
(t_data = value[:data]) ? send(key,t_data) : send(key)
rescue
logger.info($!.to_s)
logger.info($!.backtrace.join("\n"))
# logger.info($!.to_s)
# logger.info($!.backtrace.join("\n"))
p $!
p $!.backtrace
end
value[:runtime] = value[:trigger].fire_time_after(Time.now).to_i
end
Expand All @@ -350,26 +340,7 @@ def check_for_timer_events
def run_user_threads
@thread_pool.exclusive_run
end

# we are overriding the function that checks for timers
# def check_for_timer_events
# super
# return unless @my_schedule
# if @run_time < Time.now.to_i
# # self.send(@my_schedule[:worker_method]) if self.respond_to?(@my_schedule[:worker_method])
# invoke_worker_method
# @run_time = @trigger.fire_time_after(Time.now).to_i
# end
# end

def invoke_worker_method
if self.respond_to?(@my_schedule[:worker_method]) && @my_schedule[:data]
self.send(@my_schedule[:worker_method],@my_schedule[:data])
elsif self.respond_to?(@my_schedule[:worker_method])
self.send(@my_schedule[:worker_method])
end
end


private
def load_rails_env
db_config_file = YAML.load(ERB.new(IO.read("#{RAILS_HOME}/config/database.yml")).result)
Expand Down
53 changes: 0 additions & 53 deletions test/cron_trigger_test.rb

This file was deleted.

74 changes: 0 additions & 74 deletions test/meta_worker_test.rb

This file was deleted.

1 change: 1 addition & 0 deletions test/backgroundrb_test.rb → test/test_backgroundrb.rb
@@ -1,4 +1,5 @@
require File.join(File.dirname(__FILE__) + "/bdrb_test_helper")
require File.join(RAILS_HOME + "/config/environment")
require "backgroundrb"

context "Backgroundrb connection in general should" do
Expand Down
4 changes: 2 additions & 2 deletions test/master_worker_test.rb → test/test_master_worker.rb
@@ -1,9 +1,9 @@
require File.join(File.dirname(__FILE__) + "/bdrb_test_helper")
require "#{PACKET_APP}/server/master_worker"
require "master_worker"

context "Master Worker in general should" do
setup do
master_worker = MasterWorker.new
master_worker = BackgrounDRb::MasterWorker.new
end
xspecify "should invoke proper method for different requests" do

Expand Down

0 comments on commit e8d1ae2

Please sign in to comment.