mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-20 11:45:53 +00:00
@@ -42,15 +42,16 @@
|
||||
using namespace util::config;
|
||||
|
||||
struct BackendCassandraFactoryTest : SyncAsioContextTest, util::prometheus::WithPrometheus {
|
||||
constexpr static auto keyspace = "factory_test";
|
||||
constexpr static auto kKEYSPACE = "factory_test";
|
||||
|
||||
protected:
|
||||
ClioConfigDefinition cfg_{
|
||||
{"database.type", ConfigValue{ConfigType::String}.defaultValue("cassandra")},
|
||||
{"database.cassandra.contact_points",
|
||||
ConfigValue{ConfigType::String}.defaultValue(TestGlobals::instance().backendHost)},
|
||||
{"database.cassandra.secure_connect_bundle", ConfigValue{ConfigType::String}.optional()},
|
||||
{"database.cassandra.port", ConfigValue{ConfigType::Integer}.optional()},
|
||||
{"database.cassandra.keyspace", ConfigValue{ConfigType::String}.defaultValue(keyspace)},
|
||||
{"database.cassandra.keyspace", ConfigValue{ConfigType::String}.defaultValue(kKEYSPACE)},
|
||||
{"database.cassandra.replication_factor", ConfigValue{ConfigType::Integer}.defaultValue(1)},
|
||||
{"database.cassandra.table_prefix", ConfigValue{ConfigType::String}.optional()},
|
||||
{"database.cassandra.max_write_requests_outstanding", ConfigValue{ConfigType::Integer}.defaultValue(10'000)},
|
||||
@@ -89,14 +90,14 @@ protected:
|
||||
// drop the keyspace for next test
|
||||
data::cassandra::Handle const handle{TestGlobals::instance().backendHost};
|
||||
EXPECT_TRUE(handle.connect());
|
||||
handle.execute("DROP KEYSPACE " + std::string{keyspace});
|
||||
handle.execute("DROP KEYSPACE " + std::string{kKEYSPACE});
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(BackendCassandraFactoryTest, NoSuchBackend)
|
||||
{
|
||||
useConfig(R"json( {"database": {"type": "unknown"}} )json");
|
||||
EXPECT_THROW(data::make_Backend(cfg_), std::runtime_error);
|
||||
EXPECT_THROW(data::makeBackend(cfg_), std::runtime_error);
|
||||
}
|
||||
|
||||
TEST_F(BackendCassandraFactoryTest, CreateCassandraBackendDBDisconnect)
|
||||
@@ -110,13 +111,13 @@ TEST_F(BackendCassandraFactoryTest, CreateCassandraBackendDBDisconnect)
|
||||
}}
|
||||
)json");
|
||||
|
||||
EXPECT_THROW(data::make_Backend(cfg_), std::runtime_error);
|
||||
EXPECT_THROW(data::makeBackend(cfg_), std::runtime_error);
|
||||
}
|
||||
|
||||
TEST_F(BackendCassandraFactoryTestWithDB, CreateCassandraBackend)
|
||||
{
|
||||
{
|
||||
auto backend = data::make_Backend(cfg_);
|
||||
auto backend = data::makeBackend(cfg_);
|
||||
EXPECT_TRUE(backend);
|
||||
|
||||
// empty db does not have ledger range
|
||||
@@ -125,12 +126,12 @@ TEST_F(BackendCassandraFactoryTestWithDB, CreateCassandraBackend)
|
||||
// insert range table
|
||||
data::cassandra::Handle const handle{TestGlobals::instance().backendHost};
|
||||
EXPECT_TRUE(handle.connect());
|
||||
handle.execute(fmt::format("INSERT INTO {}.ledger_range (is_latest, sequence) VALUES (False, 100)", keyspace));
|
||||
handle.execute(fmt::format("INSERT INTO {}.ledger_range (is_latest, sequence) VALUES (True, 500)", keyspace));
|
||||
handle.execute(fmt::format("INSERT INTO {}.ledger_range (is_latest, sequence) VALUES (False, 100)", kKEYSPACE));
|
||||
handle.execute(fmt::format("INSERT INTO {}.ledger_range (is_latest, sequence) VALUES (True, 500)", kKEYSPACE));
|
||||
}
|
||||
|
||||
{
|
||||
auto backend = data::make_Backend(cfg_);
|
||||
auto backend = data::makeBackend(cfg_);
|
||||
EXPECT_TRUE(backend);
|
||||
|
||||
auto const range = backend->fetchLedgerRange();
|
||||
@@ -142,7 +143,7 @@ TEST_F(BackendCassandraFactoryTestWithDB, CreateCassandraBackend)
|
||||
TEST_F(BackendCassandraFactoryTestWithDB, CreateCassandraBackendReadOnlyWithEmptyDB)
|
||||
{
|
||||
useConfig(R"json( {"read_only": true} )json");
|
||||
EXPECT_THROW(data::make_Backend(cfg_), std::runtime_error);
|
||||
EXPECT_THROW(data::makeBackend(cfg_), std::runtime_error);
|
||||
}
|
||||
|
||||
TEST_F(BackendCassandraFactoryTestWithDB, CreateCassandraBackendReadOnlyWithDBReady)
|
||||
@@ -150,6 +151,6 @@ TEST_F(BackendCassandraFactoryTestWithDB, CreateCassandraBackendReadOnlyWithDBRe
|
||||
auto cfgReadOnly = cfg_;
|
||||
ASSERT_FALSE(cfgReadOnly.parse(ConfigFileJson{boost::json::parse(R"json( {"read_only": true} )json").as_object()}));
|
||||
|
||||
EXPECT_TRUE(data::make_Backend(cfg_));
|
||||
EXPECT_TRUE(data::make_Backend(cfgReadOnly));
|
||||
EXPECT_TRUE(data::makeBackend(cfg_));
|
||||
EXPECT_TRUE(data::makeBackend(cfgReadOnly));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user