51 lines
1.1 KiB
C++
51 lines
1.1 KiB
C++
#include <catch2/catch_test_macros.hpp>
|
|
|
|
#include <matador/sql/connection.hpp>
|
|
#include <matador/sql/connection_pool.hpp>
|
|
|
|
using namespace matador::sql;
|
|
|
|
TEST_CASE("Create connection pool", "[connection pool]") {
|
|
using pool_t = connection_pool<connection>;
|
|
|
|
pool_t pool("sqlite://sqlite.db", 4);
|
|
|
|
REQUIRE(pool.size() == 4);
|
|
REQUIRE(pool.idle() == 4);
|
|
REQUIRE(pool.inuse() == 0);
|
|
|
|
auto ptr = pool.acquire();
|
|
REQUIRE(ptr.valid());
|
|
REQUIRE(ptr.id() > 0);
|
|
REQUIRE(ptr->is_open());
|
|
|
|
REQUIRE(pool.idle() == 3);
|
|
REQUIRE(pool.inuse() == 1);
|
|
|
|
pool.release(ptr);
|
|
REQUIRE(!ptr.valid());
|
|
REQUIRE(pool.idle() == 4);
|
|
REQUIRE(pool.inuse() == 0);
|
|
|
|
ptr = pool.acquire(3);
|
|
REQUIRE(ptr.valid());
|
|
REQUIRE(ptr.id() == 3);
|
|
REQUIRE(ptr->is_open());
|
|
{
|
|
auto ptr2 = pool.acquire();
|
|
REQUIRE(ptr2.valid());
|
|
REQUIRE(ptr2->is_open());
|
|
|
|
REQUIRE(pool.idle() == 2);
|
|
REQUIRE(pool.inuse() == 2);
|
|
}
|
|
|
|
REQUIRE(pool.idle() == 3);
|
|
REQUIRE(pool.inuse() == 1);
|
|
|
|
pool.release(ptr);
|
|
REQUIRE(!ptr.valid());
|
|
REQUIRE(pool.idle() == 4);
|
|
REQUIRE(pool.inuse() == 0);
|
|
}
|