Sha256: 6558d862fda144ff8627e4f59467c70f2d789c46cad7ca5b02eff67d862250d4

Contents?: true

Size: 1.32 KB

Versions: 4

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

require "cases/helper"
require "models/course"
require "models/entrant"

module ActiveRecord
  class PreparedStatementStatusTest < ActiveRecord::TestCase
    def test_prepared_statement_status_is_thread_and_instance_specific
      course_conn = Course.connection
      entrant_conn = Entrant.connection

      inside = Concurrent::Event.new
      preventing = Concurrent::Event.new
      finished = Concurrent::Event.new

      assert_not_same course_conn, entrant_conn

      if ActiveRecord::Base.connection.prepared_statements
        t1 = Thread.new do
          course_conn.unprepared_statement do
            inside.set
            preventing.wait
            assert_not course_conn.prepared_statements
            assert entrant_conn.prepared_statements
            finished.set
          end
        end

        t2 = Thread.new do
          entrant_conn.unprepared_statement do
            inside.wait
            assert course_conn.prepared_statements
            assert_not entrant_conn.prepared_statements
            preventing.set
            finished.wait
          end
        end

        t1.join
        t2.join
      else
        assert_not course_conn.prepared_statements
        assert_not entrant_conn.prepared_statements
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ibm_db-5.5.0-x86-mingw32 test/cases/prepared_statement_status_test.rb
ibm_db-5.4.1-x86-mingw32 test/cases/prepared_statement_status_test.rb
ibm_db-5.4.0-x86-mingw32 test/cases/prepared_statement_status_test.rb
ibm_db-5.3.2-x86-mingw32 test/cases/prepared_statement_status_test.rb