mirror of
https://gitea.invidious.io/iv-org/shard-crystal-db.git
synced 2024-08-15 00:53:32 +00:00
changes needed due to 3c91978d36
add posibility to inspect availability of a resource in a pool (testing only) allow access to internal connection pool of db (testing only)
This commit is contained in:
parent
3c91978d36
commit
8d891a5a4e
4 changed files with 28 additions and 1 deletions
|
@ -59,6 +59,25 @@ describe DB::Pool do
|
||||||
pool.checkout.should be_a Closable
|
pool.checkout.should be_a Closable
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should be available if not checkedout" do
|
||||||
|
resource = uninitialized Closable
|
||||||
|
pool = DB::Pool.new(initial_pool_size: 1) { resource = Closable.new }
|
||||||
|
pool.is_available?(resource).should be_true
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should not be available if checkedout" do
|
||||||
|
pool = DB::Pool.new { Closable.new }
|
||||||
|
resource = pool.checkout
|
||||||
|
pool.is_available?(resource).should be_false
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should be available if returned" do
|
||||||
|
pool = DB::Pool.new { Closable.new }
|
||||||
|
resource = pool.checkout
|
||||||
|
pool.release resource
|
||||||
|
pool.is_available?(resource).should be_true
|
||||||
|
end
|
||||||
|
|
||||||
it "should wait for available resource" do
|
it "should wait for available resource" do
|
||||||
pool = DB::Pool.new(max_pool_size: 1, initial_pool_size: 1) { Closable.new }
|
pool = DB::Pool.new(max_pool_size: 1, initial_pool_size: 1) { Closable.new }
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,8 @@ describe DB::Statement do
|
||||||
expect_raises do
|
expect_raises do
|
||||||
db.exec "raise"
|
db.exec "raise"
|
||||||
end
|
end
|
||||||
db.@in_pool.should be_true
|
DummyDriver::DummyConnection.connections.size.should eq(1)
|
||||||
|
db.pool.is_available?(DummyDriver::DummyConnection.connections.first)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -16,6 +16,8 @@ module DB
|
||||||
class Database
|
class Database
|
||||||
# :nodoc:
|
# :nodoc:
|
||||||
getter driver
|
getter driver
|
||||||
|
# :nodoc:
|
||||||
|
getter pool
|
||||||
|
|
||||||
# Returns the uri with the connection settings to the database
|
# Returns the uri with the connection settings to the database
|
||||||
getter uri
|
getter uri
|
||||||
|
|
|
@ -53,6 +53,11 @@ module DB
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# :nodon:
|
||||||
|
def is_available?(resource : T)
|
||||||
|
@available.includes?(resource)
|
||||||
|
end
|
||||||
|
|
||||||
private def build_resource : T
|
private def build_resource : T
|
||||||
resource = @factory.call
|
resource = @factory.call
|
||||||
@total << resource
|
@total << resource
|
||||||
|
|
Loading…
Reference in a new issue