query/test/ConnectionPoolTest.cpp

42 lines
885 B
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);
{
auto ptr2 = pool.acquire();
REQUIRE(ptr2.valid());
REQUIRE(ptr2->is_open());
REQUIRE(pool.idle() == 3);
REQUIRE(pool.inuse() == 1);
}
REQUIRE(pool.idle() == 4);
REQUIRE(pool.inuse() == 0);
}