Guest User

Untitled

a guest
Mar 12th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. require File.join(File.dirname(__FILE__) + "/bdrb_test_helper")
  2. require "meta_worker"
  3.  
  4. context "A Meta Worker should" do
  5. setup do
  6. BackgrounDRb::MetaWorker.worker_name = "hello_worker"
  7. db_config = { :development =>
  8. { :adapter => "mysql",:database => "rails_sandbox_development" ,
  9. :username => "root",:password => "foobar"
  10. },
  11. :test => {
  12. :adapter => "mysql", :database => "rails_sandbox_test",
  13. :username => "root", :password => "foobar",
  14. },
  15. :production => {
  16. :adapter => "mysql", :database => "rails_sandbox_production",
  17. :username => "root", :password => "foobar"
  18. }
  19. }
  20.  
  21. class BackgrounDRb::MetaWorker
  22. attr_accessor :outgoing_data
  23. attr_accessor :incoming_data
  24. def send_data(data)
  25. @outgoing_data = data
  26. end
  27.  
  28. def start_reactor; end
  29. end
  30. meta_worker = BackgrounDRb::MetaWorker.start_worker
  31. end
  32.  
  33. specify "load appropriate db environment from config file" do
  34. ActiveRecord::Base.connection.current_database.should == "rails_sandbox_production"
  35. end
  36.  
  37. xspecify "remove a task from schedule if end time is reached" do
  38. end
  39.  
  40. xspecify "load appropriate schedule from config file" do
  41. end
  42.  
  43. xspecify "register status request should be send out to master" do
  44. end
  45.  
  46. xspecify "load schedule from passed arguments to start worker" do
  47.  
  48. end
  49.  
  50. xspecify "should have access to logger objects" do
  51.  
  52. end
  53.  
  54. xspecify "logger object should support info, error and debug methods" do
  55.  
  56. end
  57.  
  58. xspecify "invoke particular method based on user arguments" do
  59.  
  60. end
  61.  
  62. xspecify "should send results back to master only when response can be dumped" do
  63.  
  64. end
  65.  
  66. xspecify "should check for arguments of the invoked worker method" do
  67.  
  68. end
  69. end
  70.  
  71. context "Cron Trigger should" do
  72. setup do
  73. BackgrounDRb::MetaWorker.worker_name = "hello_worker"
  74. class BackgrounDRb::MetaWorker
  75. attr_accessor :outgoing_data
  76. attr_accessor :incoming_data
  77. set_no_auto_load(true)
  78. def send_data(data)
  79. @outgoing_data = data
  80. end
  81. def ivar var
  82. instance_variable_get(:"@#{var}")
  83. end
  84. # method would disable starting of reactor loop
  85. def start_reactor; end
  86. end
  87. @klass = BackgrounDRb::MetaWorker
  88. end
  89.  
  90. def mock_worker(t_arg,next_time)
  91. puts "hello world"
  92. @klass.any_instance.stubs(:worker_options).returns(:schedule => t_arg)
  93. meta_worker = @klass.start_worker
  94. meta_worker.ivar(:my_schedule).should.not.be(nil)
  95. meta_worker.ivar(:my_schedule).should == t_arg
  96. meta_worker.ivar(:worker_method_triggers).should.not.be nil
  97. firetime = meta_worker.ivar(:worker_method_triggers)[:foo][:runtime]
  98. firetime.should.not.be.nil
  99. time_object = mock()
  100. proper_time = Time.now + next_time
  101. Time.stubs(:now).returns(time_object,proper_time)
  102. [meta_worker,time_object,firetime]
  103. end
  104.  
  105. specify "run task each 5 second for no option" do
  106. t_arg = { :foo => { :trigger_args => "*/5 * * * * *"}}
  107. meta_worker,time_object,firetime = *mock_worker(t_arg,15)
  108. time_object.stubs(:to_i).returns(firetime + 1)
  109. meta_worker.expects(:foo).once
  110. meta_worker.check_for_timer_events
  111. end
  112.  
  113. specify "should not run the task if time to run has not arrived" do
  114. t_arg = { :foo => { :trigger_args => "*/5 * * * * *"}}
  115. meta_worker,time_object,firetime = *mock_worker(t_arg,10)
  116. time_object.stubs(:to_i).returns(firetime - 2)
  117. meta_worker.expects(:foo).never
  118. meta_worker.check_for_timer_events
  119. end
  120.  
  121. specify "run task each minute for minute option" do
  122. t_arg = { :foo => { :trigger_args => "0 1 * * * *"}}
  123.  
  124. meta_worker,time_object,firetime = *mock_worker(t_arg,2*60)
  125.  
  126. time_object.stubs(:to_i).returns(firetime + 2)
  127. meta_worker.expects(:foo).once
  128. meta_worker.check_for_timer_events
  129. end
  130.  
  131. specify "should not for minute arguments if time is not reached" do
  132. t_arg = { :foo => { :trigger_args => "0 1 * * * *"}}
  133. meta_worker,time_object,firetime = *mock_worker(t_arg,2*60)
  134.  
  135. time_object.stubs(:to_i).returns(firetime - 10)
  136. meta_worker.expects(:foo).never
  137. meta_worker.check_for_timer_events
  138. end
  139.  
  140. xspecify "run at specified hour for hourly option" do
  141.  
  142. end
  143.  
  144. xspecify "run at specified day for day option" do
  145.  
  146. end
  147.  
  148. xspecify "run at specified week day for specified option" do
  149.  
  150. end
  151.  
  152. xspecify "run in appropriate month for speficied option" do
  153.  
  154. end
  155.  
  156. xspecify "run in appropriate year for specified option" do
  157.  
  158. end
  159. end
Add Comment
Please, Sign In to add comment