Mercurial > hg > orthanc-databases
diff MySQL/UnitTests/UnitTestsMain.cpp @ 230:675f8322eb7c
refactored StorageBackend by introducing an accessor class
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 06 Apr 2021 11:17:00 +0200 |
parents | a4918d57435c |
children | b97a537f4613 |
line wrap: on
line diff
--- a/MySQL/UnitTests/UnitTestsMain.cpp Sat Apr 03 18:56:14 2021 +0200 +++ b/MySQL/UnitTests/UnitTestsMain.cpp Tue Apr 06 11:17:00 2021 +0200 @@ -137,41 +137,50 @@ static int64_t CountFiles(OrthancDatabases::MySQLDatabase& db) { - OrthancDatabases::Query query("SELECT COUNT(*) FROM StorageArea", true); - OrthancDatabases::MySQLStatement s(db, query); - OrthancDatabases::MySQLTransaction t(db, OrthancDatabases::TransactionType_ReadOnly); - OrthancDatabases::Dictionary d; - std::unique_ptr<OrthancDatabases::IResult> result(s.Execute(t, d)); - return dynamic_cast<const OrthancDatabases::Integer64Value&>(result->GetField(0)).GetValue(); + OrthancDatabases::MySQLTransaction transaction(db, OrthancDatabases::TransactionType_ReadOnly); + + int64_t count; + { + OrthancDatabases::Query query("SELECT COUNT(*) FROM StorageArea", true); + OrthancDatabases::MySQLStatement s(db, query); + OrthancDatabases::MySQLTransaction t(db, OrthancDatabases::TransactionType_ReadOnly); + OrthancDatabases::Dictionary d; + std::unique_ptr<OrthancDatabases::IResult> result(s.Execute(t, d)); + count = dynamic_cast<const OrthancDatabases::Integer64Value&>(result->GetField(0)).GetValue(); + } + + transaction.Commit(); + return count; } TEST(MySQL, StorageArea) { - OrthancDatabases::MySQLStorageArea storageArea(globalParameters_, true); + std::unique_ptr<OrthancDatabases::MySQLDatabase> database( + OrthancDatabases::MySQLDatabase::OpenDatabaseConnection(globalParameters_)); + + OrthancDatabases::MySQLStorageArea storageArea(globalParameters_, true /* clear database */); { - OrthancDatabases::DatabaseManager::Transaction transaction(storageArea.GetManager(), OrthancDatabases::TransactionType_ReadWrite); - OrthancDatabases::MySQLDatabase& db = - dynamic_cast<OrthancDatabases::MySQLDatabase&>(transaction.GetDatabase()); - - ASSERT_EQ(0, CountFiles(db)); + OrthancDatabases::MySQLStorageArea::Accessor accessor(storageArea); + + ASSERT_EQ(0, CountFiles(*database)); for (int i = 0; i < 10; i++) { std::string uuid = boost::lexical_cast<std::string>(i); std::string value = "Value " + boost::lexical_cast<std::string>(i * 2); - storageArea.Create(transaction, uuid, value.c_str(), value.size(), OrthancPluginContentType_Unknown); + accessor.Create(uuid, value.c_str(), value.size(), OrthancPluginContentType_Unknown); } std::string buffer; - ASSERT_THROW(storageArea.ReadToString(buffer, transaction, "nope", OrthancPluginContentType_Unknown), + ASSERT_THROW(accessor.ReadToString(buffer, "nope", OrthancPluginContentType_Unknown), Orthanc::OrthancException); - ASSERT_EQ(10, CountFiles(db)); - storageArea.Remove(transaction, "5", OrthancPluginContentType_Unknown); + ASSERT_EQ(10, CountFiles(*database)); + accessor.Remove("5", OrthancPluginContentType_Unknown); - ASSERT_EQ(9, CountFiles(db)); + ASSERT_EQ(9, CountFiles(*database)); for (int i = 0; i < 10; i++) { @@ -181,25 +190,22 @@ if (i == 5) { - ASSERT_THROW(storageArea.ReadToString(buffer, transaction, uuid, OrthancPluginContentType_Unknown), + ASSERT_THROW(accessor.ReadToString(buffer, uuid, OrthancPluginContentType_Unknown), Orthanc::OrthancException); } else { - storageArea.ReadToString(buffer, transaction, uuid, OrthancPluginContentType_Unknown); + accessor.ReadToString(buffer, uuid, OrthancPluginContentType_Unknown); ASSERT_EQ(expected, buffer); } } for (int i = 0; i < 10; i++) { - storageArea.Remove(transaction, boost::lexical_cast<std::string>(i), - OrthancPluginContentType_Unknown); + accessor.Remove(boost::lexical_cast<std::string>(i), OrthancPluginContentType_Unknown); } - ASSERT_EQ(0, CountFiles(db)); - - transaction.Commit(); + ASSERT_EQ(0, CountFiles(*database)); } }