diff options
author | Santiago Pastorino <santiago@wyeworks.com> | 2012-09-13 15:09:15 -0700 |
---|---|---|
committer | Santiago Pastorino <santiago@wyeworks.com> | 2012-09-14 14:10:00 -0700 |
commit | 8577687fcb9da20868a5ea50aea36427270d4485 (patch) | |
tree | 51fa7cb8e0e153da58a9c65d39a862d7ee7a6c2b /railties/test | |
parent | ae00adecf420703bd13f52ffad23eb417b2cf244 (diff) | |
download | rails-8577687fcb9da20868a5ea50aea36427270d4485.tar.gz rails-8577687fcb9da20868a5ea50aea36427270d4485.tar.bz2 rails-8577687fcb9da20868a5ea50aea36427270d4485.zip |
Move queue classes to ActiveSupport
Diffstat (limited to 'railties/test')
-rw-r--r-- | railties/test/application/initializers/frameworks_test.rb | 6 | ||||
-rw-r--r-- | railties/test/application/queue_test.rb | 16 | ||||
-rw-r--r-- | railties/test/queueing/container_test.rb | 30 | ||||
-rw-r--r-- | railties/test/queueing/test_queue_test.rb | 102 | ||||
-rw-r--r-- | railties/test/queueing/threaded_consumer_test.rb | 100 |
5 files changed, 11 insertions, 243 deletions
diff --git a/railties/test/application/initializers/frameworks_test.rb b/railties/test/application/initializers/frameworks_test.rb index 1eb5fce384..5268257d62 100644 --- a/railties/test/application/initializers/frameworks_test.rb +++ b/railties/test/application/initializers/frameworks_test.rb @@ -52,19 +52,19 @@ module ApplicationTests test "uses the default queue for ActionMailer" do require "#{app_path}/config/environment" - assert_kind_of Rails::Queueing::Container, ActionMailer::Base.queue + assert_kind_of ActiveSupport::QueueContainer, ActionMailer::Base.queue end test "allows me to configure queue for ActionMailer" do app_file "config/environments/development.rb", <<-RUBY AppTemplate::Application.configure do - Rails.queue[:mailer] = Rails::Queueing::TestQueue.new + Rails.queue[:mailer] = ActiveSupport::TestQueue.new config.action_mailer.queue = Rails.queue[:mailer] end RUBY require "#{app_path}/config/environment" - assert_kind_of Rails::Queueing::TestQueue, ActionMailer::Base.queue + assert_kind_of ActiveSupport::TestQueue, ActionMailer::Base.queue end test "does not include url helpers as action methods" do diff --git a/railties/test/application/queue_test.rb b/railties/test/application/queue_test.rb index f4c11c5f4f..664001ca69 100644 --- a/railties/test/application/queue_test.rb +++ b/railties/test/application/queue_test.rb @@ -19,14 +19,14 @@ module ApplicationTests test "the queue is a TestQueue in test mode" do app("test") - assert_kind_of Rails::Queueing::TestQueue, Rails.application.queue[:default] - assert_kind_of Rails::Queueing::TestQueue, Rails.queue[:default] + assert_kind_of ActiveSupport::TestQueue, Rails.application.queue[:default] + assert_kind_of ActiveSupport::TestQueue, Rails.queue[:default] end test "the queue is a SynchronousQueue in development mode" do app("development") - assert_kind_of Rails::Queueing::SynchronousQueue, Rails.application.queue[:default] - assert_kind_of Rails::Queueing::SynchronousQueue, Rails.queue[:default] + assert_kind_of ActiveSupport::SynchronousQueue, Rails.application.queue[:default] + assert_kind_of ActiveSupport::SynchronousQueue, Rails.queue[:default] end class ThreadTrackingJob @@ -47,7 +47,7 @@ module ApplicationTests end end - test "in development mode, an enqueued job will be processed in the same thread" do + test "in development mode, an enqueued job will be processed in a separate thread" do app("development") job = ThreadTrackingJob.new @@ -55,7 +55,7 @@ module ApplicationTests sleep 0.1 assert job.ran?, "Expected job to be run" - refute job.ran_in_different_thread?, "Expected job to run in the same thread" + assert job.ran_in_different_thread?, "Expected job to run in the same thread" end test "in test mode, explicitly draining the queue will process it in a separate thread" do @@ -160,12 +160,12 @@ module ApplicationTests test "a custom consumer implementation can be provided" do add_to_env_config "production", <<-RUBY require "my_queue_consumer" - config.queue = Rails::Queueing::Queue + config.queue = ActiveSupport::Queue config.queue_consumer = MyQueueConsumer RUBY app_file "lib/my_queue_consumer.rb", <<-RUBY - class MyQueueConsumer < Rails::Queueing::ThreadedConsumer + class MyQueueConsumer < ActiveSupport::ThreadedQueueConsumer attr_reader :started def start diff --git a/railties/test/queueing/container_test.rb b/railties/test/queueing/container_test.rb deleted file mode 100644 index 69e59a3871..0000000000 --- a/railties/test/queueing/container_test.rb +++ /dev/null @@ -1,30 +0,0 @@ -require 'abstract_unit' -require 'rails/queueing' - -module Rails - module Queueing - class ContainerTest < ActiveSupport::TestCase - def test_delegates_to_default - q = Queue.new - container = Container.new q - job = Object.new - - container.push job - assert_equal job, q.pop - end - - def test_access_default - q = Queue.new - container = Container.new q - assert_equal q, container[:default] - end - - def test_assign_queue - container = Container.new Object.new - q = Object.new - container[:foo] = q - assert_equal q, container[:foo] - end - end - end -end diff --git a/railties/test/queueing/test_queue_test.rb b/railties/test/queueing/test_queue_test.rb deleted file mode 100644 index 2f0f507adb..0000000000 --- a/railties/test/queueing/test_queue_test.rb +++ /dev/null @@ -1,102 +0,0 @@ -require 'abstract_unit' -require 'rails/queueing' - -class TestQueueTest < ActiveSupport::TestCase - def setup - @queue = Rails::Queueing::TestQueue.new - end - - class ExceptionRaisingJob - def run - raise - end - end - - def test_drain_raises - @queue.push ExceptionRaisingJob.new - assert_raises(RuntimeError) { @queue.drain } - end - - def test_jobs - @queue.push 1 - @queue.push 2 - assert_equal [1,2], @queue.jobs - end - - class EquivalentJob - def initialize - @initial_id = self.object_id - end - - def run - end - - def ==(other) - other.same_initial_id?(@initial_id) - end - - def same_initial_id?(other_id) - other_id == @initial_id - end - end - - def test_contents - assert @queue.empty? - job = EquivalentJob.new - @queue.push job - refute @queue.empty? - assert_equal job, @queue.pop - end - - class ProcessingJob - def self.clear_processed - @processed = [] - end - - def self.processed - @processed - end - - def initialize(object) - @object = object - end - - def run - self.class.processed << @object - end - end - - def test_order - ProcessingJob.clear_processed - job1 = ProcessingJob.new(1) - job2 = ProcessingJob.new(2) - - @queue.push job1 - @queue.push job2 - @queue.drain - - assert_equal [1,2], ProcessingJob.processed - end - - class ThreadTrackingJob - attr_reader :thread_id - - def run - @thread_id = Thread.current.object_id - end - - def ran? - @thread_id - end - end - - def test_drain - @queue.push ThreadTrackingJob.new - job = @queue.jobs.last - @queue.drain - - assert @queue.empty? - assert job.ran?, "The job runs synchronously when the queue is drained" - assert_not_equal job.thread_id, Thread.current.object_id - end -end diff --git a/railties/test/queueing/threaded_consumer_test.rb b/railties/test/queueing/threaded_consumer_test.rb deleted file mode 100644 index c34a966d6e..0000000000 --- a/railties/test/queueing/threaded_consumer_test.rb +++ /dev/null @@ -1,100 +0,0 @@ -require 'abstract_unit' -require 'rails/queueing' - -class TestThreadConsumer < ActiveSupport::TestCase - class Job - attr_reader :id - def initialize(id, &block) - @id = id - @block = block - end - - def run - @block.call if @block - end - end - - def setup - @queue = Rails::Queueing::Queue.new - @consumer = Rails::Queueing::ThreadedConsumer.start(@queue) - end - - def teardown - @queue.push nil - end - - test "the jobs are executed" do - ran = false - - job = Job.new(1) do - ran = true - end - - @queue.push job - sleep 0.1 - assert_equal true, ran - end - - test "the jobs are not executed synchronously" do - ran = false - - job = Job.new(1) do - sleep 0.1 - ran = true - end - - @queue.push job - assert_equal false, ran - end - - test "shutting down the queue synchronously drains the jobs" do - ran = false - - job = Job.new(1) do - sleep 0.1 - ran = true - end - - @queue.push job - assert_equal false, ran - - @consumer.shutdown - - assert_equal true, ran - end - - test "log job that raises an exception" do - require "active_support/log_subscriber/test_helper" - logger = ActiveSupport::LogSubscriber::TestHelper::MockLogger.new - Rails.logger = logger - - job = Job.new(1) do - raise "RuntimeError: Error!" - end - - @queue.push job - sleep 0.1 - - assert_equal 1, logger.logged(:error).size - assert_match(/Job Error: RuntimeError: Error!/, logger.logged(:error).last) - end - - test "test overriding exception handling" do - @consumer.shutdown - @consumer = Class.new(Rails::Queueing::ThreadedConsumer) do - attr_reader :last_error - def handle_exception(e) - @last_error = e.message - end - end.start(@queue) - - job = Job.new(1) do - raise "RuntimeError: Error!" - end - - @queue.push job - sleep 0.1 - - assert_equal "RuntimeError: Error!", @consumer.last_error - end -end |