]> git.openstreetmap.org Git - rails.git/blobdiff - vendor/plugins/deadlock_retry/test/deadlock_retry_test.rb
Switch to using deadlock_retry as a gem
[rails.git] / vendor / plugins / deadlock_retry / test / deadlock_retry_test.rb
diff --git a/vendor/plugins/deadlock_retry/test/deadlock_retry_test.rb b/vendor/plugins/deadlock_retry/test/deadlock_retry_test.rb
deleted file mode 100644 (file)
index 7124391..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-begin
-  require 'active_record'
-rescue LoadError
-  if ENV['ACTIVERECORD_PATH'].nil?
-    abort <<MSG
-Please set the ACTIVERECORD_PATH environment variable to the directory
-containing the active_record.rb file.
-MSG
-  else
-    $LOAD_PATH.unshift << ENV['ACTIVERECORD_PATH']
-    begin
-      require 'active_record'
-    rescue LoadError
-      abort "ActiveRecord could not be found."
-    end
-  end
-end
-
-require 'test/unit'
-require "#{File.dirname(__FILE__)}/../lib/deadlock_retry"
-
-class MockModel
-  @@open_transactions = 0
-
-  def self.transaction(*objects)
-    @@open_transactions += 1
-    yield
-  ensure
-    @@open_transactions -= 1
-  end
-
-  def self.open_transactions
-    @@open_transactions
-  end
-
-  def self.connection
-    self
-  end
-
-  def self.logger
-    @logger ||= Logger.new(nil)
-  end
-
-  include DeadlockRetry
-end
-
-class DeadlockRetryTest < Test::Unit::TestCase
-  DEADLOCK_ERROR = "MySQL::Error: Deadlock found when trying to get lock"
-  TIMEOUT_ERROR = "MySQL::Error: Lock wait timeout exceeded"
-
-  def test_no_errors
-    assert_equal :success, MockModel.transaction { :success }
-  end
-
-  def test_no_errors_with_deadlock
-    errors = [ DEADLOCK_ERROR ] * 3
-    assert_equal :success, MockModel.transaction { raise ActiveRecord::StatementInvalid, errors.shift unless errors.empty?; :success }
-    assert errors.empty?
-  end
-
-  def test_no_errors_with_lock_timeout
-    errors = [ TIMEOUT_ERROR ] * 3
-    assert_equal :success, MockModel.transaction { raise ActiveRecord::StatementInvalid, errors.shift unless errors.empty?; :success }
-    assert errors.empty?
-  end
-
-  def test_error_if_limit_exceeded
-    assert_raise(ActiveRecord::StatementInvalid) do
-      MockModel.transaction { raise ActiveRecord::StatementInvalid, DEADLOCK_ERROR }
-    end
-  end
-
-  def test_error_if_unrecognized_error
-    assert_raise(ActiveRecord::StatementInvalid) do
-      MockModel.transaction { raise ActiveRecord::StatementInvalid, "Something else" }
-    end
-  end
-
-  def test_error_in_nested_transaction_should_retry_outermost_transaction
-    tries = 0
-    errors = 0
-
-    MockModel.transaction do
-      tries += 1
-      MockModel.transaction do
-        MockModel.transaction do
-          errors += 1
-          raise ActiveRecord::StatementInvalid, "MySQL::Error: Lock wait timeout exceeded" unless errors > 3
-        end
-      end
-    end
-  
-    assert_equal 4, tries
-  end
-end