spec/consumer_spec.rb in quebert-0.0.8 vs spec/consumer_spec.rb in quebert-0.0.9
- old
+ new
@@ -69,6 +69,31 @@
@q.reserve.perform
@q.peek_ready.should be_nil
@q.peek_buried.should_not be_nil
end
end
+
+ it "should retry a job with a delay and then bury" do
+ @q.put TimeoutJob.new
+ @q.peek_ready.should_not be_nil
+ job = @q.reserve
+ job.beanstalk_job.stats["releases"].should eql(0)
+ job.beanstalk_job.stats["delay"].should eql(0)
+ lambda{job.perform}.should raise_exception(Quebert::Job::Timeout)
+
+ @q.peek_ready.should be_nil
+ beanstalk_job = @q.peek_delayed
+ beanstalk_job.should_not be_nil
+ beanstalk_job.stats["releases"].should eql(1)
+ beanstalk_job.stats["delay"].should eql(Quebert::Controller::Beanstalk::TIMEOUT_RETRY_GROWTH_RATE**beanstalk_job.stats["releases"])
+
+ sleep(3)
+
+ # lets set the max retry delay so it should bury instead of delay
+ Quebert::Controller::Beanstalk::MAX_TIMEOUT_RETRY_DELAY = 1
+ lambda{@q.reserve.perform}.should raise_exception(Quebert::Job::Timeout)
+
+ @q.peek_ready.should be_nil
+ @q.peek_delayed.should be_nil
+ @q.peek_buried.should_not be_nil
+ end
end
\ No newline at end of file