Skip to content

Commit 46df98e

Browse files
[database, config] Add MergedMigrationPath to database config
Signed-off-by: Mykola Kobets <mykola_kobets@epam.com>
1 parent a1ef58f commit 46df98e

File tree

9 files changed

+33
-20
lines changed

9 files changed

+33
-20
lines changed

.gitmodules

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
branch = develop
55
[submodule "external/aos_core_common_cpp"]
66
path = external/aos_core_common_cpp
7-
url = https://github.com/aosedge/aos_core_common_cpp.git
8-
branch = develop
7+
url = https://github.com/mykola-kobets-epam/aos_core_common_cpp.git
8+
branch = iam-migration-fix

src/app/app.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ void App::initialize(Application& self)
142142
auto config = ParseConfig(mConfigFile.empty() ? cDefaultConfigFile : mConfigFile);
143143
AOS_ERROR_CHECK_AND_THROW("can't parse config", config.mError);
144144

145-
err = mDatabase.Init(Poco::Path(config.mValue.mWorkingDir, cDBFileName).toString(), config.mValue.mMigrationPath);
145+
err = mDatabase.Init(Poco::Path(config.mValue.mWorkingDir, cDBFileName).toString(), config.mValue.mMigrationPath,
146+
config.mValue.mMergedMigrationPath);
146147
AOS_ERROR_CHECK_AND_THROW("can't initialize database", err);
147148

148149
err = mNodeInfoProvider.Init(config.mValue.mNodeInfo);

src/config/config.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ aos::RetWithError<Config> ParseConfig(const std::string& filename)
130130
config.mCertStorage = object.GetValue<std::string>("certStorage");
131131
config.mWorkingDir = object.GetValue<std::string>("workingDir");
132132
config.mMigrationPath = object.GetValue<std::string>("migrationPath");
133+
config.mMergedMigrationPath = object.GetValue<std::string>("mergedMigrationPath");
133134
config.mEnablePermissionsHandler = object.GetValue<bool>("enablePermissionsHandler");
134135

135136
config.mStartProvisioningCmdArgs = aos::common::utils::GetArrayValue<std::string>(object,

src/config/config.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ struct Config {
108108
std::string mCertStorage;
109109
std::string mWorkingDir;
110110
std::string mMigrationPath;
111+
std::string mMergedMigrationPath;
111112
std::vector<ModuleConfig> mCertModules;
112113
std::vector<std::string> mStartProvisioningCmdArgs;
113114
std::vector<std::string> mDiskEncryptionCmdArgs;

src/database/database.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ Database::Database()
3838
Poco::Data::SQLite::Connector::registerConnector();
3939
}
4040

41-
aos::Error Database::Init(const std::string& dbPath, const std::string& migrationPath)
41+
aos::Error Database::Init(
42+
const std::string& dbPath, const std::string& migrationPath, const std::string& mergedMigrationPath)
4243
{
4344
if (mSession && mSession->isConnected()) {
4445
return aos::ErrorEnum::eNone;
@@ -53,7 +54,7 @@ aos::Error Database::Init(const std::string& dbPath, const std::string& migratio
5354
mSession = std::make_unique<Poco::Data::Session>("SQLite", dbPath);
5455
CreateTables();
5556

56-
mMigration.emplace(*mSession, migrationPath);
57+
mMigration.emplace(*mSession, migrationPath, mergedMigrationPath);
5758
mMigration->MigrateToVersion(mVersion);
5859
} catch (const std::exception& e) {
5960
LOG_ERR() << "Failed to initialize database: " << e.what();

src/database/database.hpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@ class Database : public aos::iam::certhandler::StorageItf, public aos::iam::node
3131
*
3232
* @param dbPath path to the database file.
3333
* @param migrationPath path to the migration scripts.
34+
* @param mergedMigrationPath path to the merged migration scripts.
3435
* @return Error.
3536
*/
36-
aos::Error Init(const std::string& dbPath, const std::string& migrationPath);
37+
aos::Error Init(
38+
const std::string& dbPath, const std::string& migrationPath, const std::string& mergedMigrationPath);
3739

3840
//
3941
// certhandler::StorageItf interface

tests/database/database_test.cpp

+19-12
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,23 @@ static aos::NodeInfo DefaultNodeInfo(const char* id = "node0")
8383

8484
class DatabaseTest : public Test {
8585
protected:
86-
void TearDown() override { std::remove(mFileName.c_str()); }
86+
void SetUp() override { std::filesystem::create_directories(mMigrationPath); }
87+
88+
void TearDown() override
89+
{
90+
std::filesystem::remove_all("database");
91+
std::remove(mFileName.c_str());
92+
}
8793

8894
const aos::Array<uint8_t> StringToDN(const char* str)
8995
{
9096
return aos::Array<uint8_t>(reinterpret_cast<const uint8_t*>(str), strlen(str) + 1);
9197
}
9298

9399
protected:
94-
std::string mFileName = "database/test/test.db";
95-
std::string mMigrationPath = "database/test/migration";
100+
std::string mFileName = "database/test/test.db";
101+
std::string mMigrationPath = "database/test/migration";
102+
std::string mMergedMigrationPath = "database/test/merged-migration";
96103
Database mDB;
97104
};
98105

@@ -110,7 +117,7 @@ TEST_F(DatabaseTest, AddCertInfo)
110117
certInfo.mKeyURL = "keyURL";
111118
certInfo.mNotAfter = aos::Time::Now();
112119

113-
EXPECT_EQ(mDB.Init(mFileName, mMigrationPath), aos::ErrorEnum::eNone);
120+
EXPECT_EQ(mDB.Init(mFileName, mMigrationPath, mMergedMigrationPath), aos::ErrorEnum::eNone);
114121

115122
EXPECT_EQ(mDB.AddCertInfo("type", certInfo), aos::ErrorEnum::eNone);
116123
EXPECT_EQ(mDB.AddCertInfo("type", certInfo), aos::ErrorEnum::eFailed);
@@ -125,7 +132,7 @@ TEST_F(DatabaseTest, AddCertInfo)
125132

126133
TEST_F(DatabaseTest, RemoveCertInfo)
127134
{
128-
EXPECT_EQ(mDB.Init(mFileName, mMigrationPath), aos::ErrorEnum::eNone);
135+
EXPECT_EQ(mDB.Init(mFileName, mMigrationPath, mMergedMigrationPath), aos::ErrorEnum::eNone);
129136

130137
aos::iam::certhandler::CertInfo certInfo;
131138

@@ -142,7 +149,7 @@ TEST_F(DatabaseTest, RemoveCertInfo)
142149

143150
TEST_F(DatabaseTest, RemoveAllCertsInfo)
144151
{
145-
EXPECT_EQ(mDB.Init(mFileName, mMigrationPath), aos::ErrorEnum::eNone);
152+
EXPECT_EQ(mDB.Init(mFileName, mMigrationPath, mMergedMigrationPath), aos::ErrorEnum::eNone);
146153

147154
aos::iam::certhandler::CertInfo certInfo;
148155

@@ -166,7 +173,7 @@ TEST_F(DatabaseTest, RemoveAllCertsInfo)
166173

167174
TEST_F(DatabaseTest, GetCertInfo)
168175
{
169-
EXPECT_EQ(mDB.Init(mFileName, mMigrationPath), aos::ErrorEnum::eNone);
176+
EXPECT_EQ(mDB.Init(mFileName, mMigrationPath, mMergedMigrationPath), aos::ErrorEnum::eNone);
170177

171178
aos::iam::certhandler::CertInfo certInfo {};
172179

@@ -201,7 +208,7 @@ TEST_F(DatabaseTest, GetCertInfo)
201208

202209
TEST_F(DatabaseTest, GetCertsInfo)
203210
{
204-
EXPECT_EQ(mDB.Init(mFileName, mMigrationPath), aos::ErrorEnum::eNone);
211+
EXPECT_EQ(mDB.Init(mFileName, mMigrationPath, mMergedMigrationPath), aos::ErrorEnum::eNone);
205212

206213
aos::StaticArray<aos::iam::certhandler::CertInfo, 2> certsInfo;
207214

@@ -249,7 +256,7 @@ TEST_F(DatabaseTest, GetNodeInfo)
249256
{
250257
const auto& nodeInfo = DefaultNodeInfo();
251258

252-
ASSERT_TRUE(mDB.Init(mFileName, mMigrationPath).IsNone());
259+
ASSERT_TRUE(mDB.Init(mFileName, mMigrationPath, mMergedMigrationPath).IsNone());
253260

254261
ASSERT_TRUE(mDB.SetNodeInfo(nodeInfo).IsNone());
255262

@@ -264,7 +271,7 @@ TEST_F(DatabaseTest, GetAllNodeIds)
264271
const auto& node1 = DefaultNodeInfo("node1");
265272
const auto& node2 = DefaultNodeInfo("node2");
266273

267-
ASSERT_TRUE(mDB.Init(mFileName, mMigrationPath).IsNone());
274+
ASSERT_TRUE(mDB.Init(mFileName, mMigrationPath, mMergedMigrationPath).IsNone());
268275

269276
ASSERT_TRUE(mDB.SetNodeInfo(node0).IsNone());
270277
ASSERT_TRUE(mDB.SetNodeInfo(node1).IsNone());
@@ -283,7 +290,7 @@ TEST_F(DatabaseTest, GetAllNodeIdsNotEnoughMemory)
283290
const auto& node1 = DefaultNodeInfo("node1");
284291
const auto& node2 = DefaultNodeInfo("node2");
285292

286-
ASSERT_TRUE(mDB.Init(mFileName, mMigrationPath).IsNone());
293+
ASSERT_TRUE(mDB.Init(mFileName, mMigrationPath, mMergedMigrationPath).IsNone());
287294

288295
ASSERT_TRUE(mDB.SetNodeInfo(node0).IsNone());
289296
ASSERT_TRUE(mDB.SetNodeInfo(node1).IsNone());
@@ -300,7 +307,7 @@ TEST_F(DatabaseTest, RemoveNodeInfo)
300307
const auto& node1 = DefaultNodeInfo("node1");
301308
const auto& node2 = DefaultNodeInfo("node2");
302309

303-
ASSERT_TRUE(mDB.Init(mFileName, mMigrationPath).IsNone());
310+
ASSERT_TRUE(mDB.Init(mFileName, mMigrationPath, mMergedMigrationPath).IsNone());
304311

305312
ASSERT_TRUE(mDB.SetNodeInfo(node0).IsNone());
306313
ASSERT_TRUE(mDB.SetNodeInfo(node1).IsNone());

0 commit comments

Comments
 (0)