test/bbqueue/consumer_test.rb in bbqueue-0.0.1 vs test/bbqueue/consumer_test.rb in bbqueue-0.0.2

- old
+ new

@@ -1,38 +1,121 @@ require File.expand_path("../../test_helper", __FILE__) class BBQueue::ConsumerTest < MiniTest::Test - def test_job - consumer = BBQueue::Consumer.new("default") + class ForkingConsumer < BBQueue::Consumer + attr_accessor :tempfile - assert_equal 3, Stalking::Consumer.instances.last.run_job("default", { "object" => BBQueue::Serializer.dump(BBQueue::TestJob.new(1, 2)) }) + def initialize(tempfile, *args) + self.tempfile = tempfile + + super *args + end + + def fork? + true + end + + def before_fork + tempfile.puts "before_fork" + end + + def after_fork + tempfile.puts "after_fork" + end end + class NonForkingConsumer < ForkingConsumer + def fork? + false + end + end + + class LoggingJob + attr_accessor :tempfile_path + + def initialize(tempfile_path) + self.tempfile_path = tempfile_path + end + + def work + open(tempfile_path, "w+") { |stream| stream.puts "work" } + end + end + + class NullJob + def work + # Nothing + end + end + + class RaisingJob + def work + raise "BLUBB" + end + end + + def test_non_forking_job + consumer_tempfile = Tempfile.new("consumer") + consumer = NonForkingConsumer.new(consumer_tempfile, "default") + + job_tempfile = Tempfile.new("job") + + Stalking::Consumer.instances.last.run_job "default", { "object" => BBQueue::Serializer.dump(LoggingJob.new(job_tempfile.path)) } + + refute_includes File.read(consumer_tempfile.path), "before_fork" + refute_includes File.read(consumer_tempfile.path), "after_fork" + + assert_includes File.read(job_tempfile.path), "work" + end + + def test_forking_job + consumer_tempfile = Tempfile.new("consumer") + consumer = ForkingConsumer.new(consumer_tempfile, "default") + + job_tempfile = Tempfile.new("job") + + Stalking::Consumer.instances.last.run_job "default", { "object" => BBQueue::Serializer.dump(LoggingJob.new(job_tempfile.path)) } + + assert_includes File.read(consumer_tempfile.path), "before_fork" + assert_includes File.read(consumer_tempfile.path), "after_fork" + + assert_includes File.read(job_tempfile.path), "work" + end + + def test_forking_job_with_raise + logger = BBQueue::TestLogger.new + consumer = ForkingConsumer.new(Tempfile.new("consumer"), "default", :logger => logger) + + assert_difference "logger.count /^error:/", 2 do + Stalking::Consumer.instances.last.run_job "default", { "object" => BBQueue::Serializer.dump(RaisingJob.new) } + end + end + def test_error logger = BBQueue::TestLogger.new consumer = BBQueue::Consumer.new("default", :logger => logger) - assert_difference "logger.count", 2 do - Stalking::Consumer.instances.last.run_error("Error", "default", { "object" => BBQueue::Serializer.dump(BBQueue::TestJob.new(1, 2)) }) + assert_difference "logger.count /^error:/", 2 do + Stalking::Consumer.instances.last.run_error "Error", "default", { "object" => BBQueue::Serializer.dump(NullJob.new) } end end def test_before logger = BBQueue::TestLogger.new consumer = BBQueue::Consumer.new("default", :logger => logger) - assert_difference "logger.count" do - Stalking::Consumer.instances.last.run_before("default", { "object" => BBQueue::Serializer.dump(BBQueue::TestJob.new(1, 2)) }) + assert_difference "logger.count /^info:/" do + Stalking::Consumer.instances.last.run_before "default", { "object" => BBQueue::Serializer.dump(NullJob.new) } end end def test_after logger = BBQueue::TestLogger.new consumer = BBQueue::Consumer.new("default", :logger => logger) - assert_difference "logger.count" do - Stalking::Consumer.instances.last.run_after("default", { "object" => BBQueue::Serializer.dump(BBQueue::TestJob.new(1, 2)) }) + assert_difference "logger.count /^info:/" do + Stalking::Consumer.instances.last.run_after "default", { "object" => BBQueue::Serializer.dump(NullJob.new) } end end end