diff options
author | Jacob Keeler <jacob.keeler@livioradio.com> | 2016-10-26 09:30:15 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-26 09:30:15 -0400 |
commit | 7ddc581c70271e1424b8b8158701dd9310ab87a5 (patch) | |
tree | 458683fd9d8fd1bfaeb16e356c9557ac11ad8bec | |
parent | cba5c4a029672034e139d11287b306d199eaf42d (diff) | |
parent | 8e508dbf650b99eb0ec5570b6f070cd281fff007 (diff) | |
download | sdl_core-7ddc581c70271e1424b8b8158701dd9310ab87a5.tar.gz |
Merge pull request #908 from smartdevicelink/hotfix/store_policy_db_in_storage_folder
Set policy db path to storage folder
4 files changed, 54 insertions, 36 deletions
diff --git a/src/components/policy/src/sql_pt_representation.cc b/src/components/policy/src/sql_pt_representation.cc index 03fd88b717..ff301cf568 100644 --- a/src/components/policy/src/sql_pt_representation.cc +++ b/src/components/policy/src/sql_pt_representation.cc @@ -320,6 +320,10 @@ InitResult SQLPTRepresentation::Init(const PolicySettings* settings) { #ifdef BUILD_TESTS open_counter_ = 0; #endif // BUILD_TESTS + std::string path = get_settings().app_storage_folder(); + if (!path.empty()) { + db_->set_path(path + "/"); + } if (!db_->Open()) { LOG4CXX_ERROR(logger_, "Failed opening database."); LOG4CXX_INFO(logger_, "Starting opening retries."); diff --git a/src/components/policy/test/sql_pt_representation_test.cc b/src/components/policy/test/sql_pt_representation_test.cc index 1f4df5d15d..42f7a9cc33 100644 --- a/src/components/policy/test/sql_pt_representation_test.cc +++ b/src/components/policy/test/sql_pt_representation_test.cc @@ -76,21 +76,20 @@ class SQLPTRepresentationTest : public SQLPTRepresentation, static DBMS* dbms; static SQLPTRepresentation* reps; static const std::string kDatabaseName; + static const std::string kAppStorageFolder; // Gtest can show message that this object doesn't destroyed static std::auto_ptr<policy_handler_test::MockPolicySettings> policy_settings_; static void SetUpTestCase() { - const std::string kAppStorageFolder = "storage1"; - file_system::RemoveDirectory(kAppStorageFolder); - file_system::DeleteFile("policy.sqlite"); + file_system::DeleteFile(kAppStorageFolder + "/policy.sqlite"); reps = new SQLPTRepresentation; - dbms = new DBMS(kDatabaseName); policy_settings_ = std::auto_ptr<policy_handler_test::MockPolicySettings>( new policy_handler_test::MockPolicySettings()); ON_CALL(*policy_settings_, app_storage_folder()) .WillByDefault(ReturnRef(kAppStorageFolder)); EXPECT_EQ(::policy::SUCCESS, reps->Init(policy_settings_.get())); + dbms = new DBMS(kAppStorageFolder + "/" + kDatabaseName); EXPECT_TRUE(dbms->Open()); } @@ -104,6 +103,7 @@ class SQLPTRepresentationTest : public SQLPTRepresentation, reps->RemoveDB(); delete reps; dbms->Close(); + file_system::RemoveDirectory(kAppStorageFolder); policy_settings_.reset(); } @@ -351,6 +351,7 @@ class SQLPTRepresentationTest : public SQLPTRepresentation, DBMS* SQLPTRepresentationTest::dbms = 0; SQLPTRepresentation* SQLPTRepresentationTest::reps = 0; const std::string SQLPTRepresentationTest::kDatabaseName = "policy.sqlite"; +const std::string SQLPTRepresentationTest::kAppStorageFolder = "storage1"; std::auto_ptr<policy_handler_test::MockPolicySettings> SQLPTRepresentationTest::policy_settings_; @@ -385,6 +386,25 @@ class SQLPTRepresentationTest2 : public ::testing::Test { const uint16_t kAttemptsToOpenPolicyDB; }; +class SQLPTRepresentationTest3 : public ::testing::Test { + protected: + SQLPTRepresentationTest3() : kAppStorageFolder("storage") {} + + void SetUp() OVERRIDE { + file_system::CreateDirectory(kAppStorageFolder); + reps = new SQLPTRepresentation; + } + + void TearDown() OVERRIDE { + file_system::RemoveDirectory(kAppStorageFolder, true); + delete reps; + } + + SQLPTRepresentation* reps; + NiceMock<policy_handler_test::MockPolicySettings> policy_settings_; + const std::string kAppStorageFolder; +}; + // {AKozoriz} : Unknown behavior (must try 8 times, tried 2 and opened) TEST_F(SQLPTRepresentationTest2, DISABLED_OpenAttemptTimeOut_ExpectCorrectNumber) { @@ -991,49 +1011,38 @@ TEST_F(SQLPTRepresentationTest, EXPECT_EQ("EMERGENCY", priority); } -namespace { -const std::string kAppStorageFolder = "storage"; -} - -TEST(SQLPTRepresentationTest3, Init_InitNewDataBase_ExpectResultSuccess) { +TEST_F(SQLPTRepresentationTest3, Init_InitNewDataBase_ExpectResultSuccess) { // Arrange - NiceMock<policy_handler_test::MockPolicySettings> policy_settings_; - SQLPTRepresentation* reps; - reps = new SQLPTRepresentation; - // Checks ON_CALL(policy_settings_, app_storage_folder()) .WillByDefault(ReturnRef(kAppStorageFolder)); + // Checks EXPECT_EQ(::policy::SUCCESS, reps->Init(&policy_settings_)); EXPECT_EQ(::policy::EXISTS, reps->Init(&policy_settings_)); reps->RemoveDB(); - delete reps; } -TEST(SQLPTRepresentationTest3, - Init_TryInitNotExistingDataBase_ExpectResultFail) { +TEST_F(SQLPTRepresentationTest3, + Init_TryInitNotExistingDataBase_ExpectResultFail) { + const std::string kEmptyDirectory = ""; // Arrange - NiceMock<policy_handler_test::MockPolicySettings> policy_settings_; ON_CALL(policy_settings_, app_storage_folder()) - .WillByDefault(ReturnRef(kAppStorageFolder)); - SQLPTRepresentation reps; - (reps.db())->set_path("/home/"); + .WillByDefault(ReturnRef(kEmptyDirectory)); + (reps->db())->set_path("/home/"); // Check - EXPECT_EQ(::policy::FAIL, reps.Init(&policy_settings_)); + EXPECT_EQ(::policy::FAIL, reps->Init(&policy_settings_)); } -TEST(SQLPTRepresentationTest3, - Close_InitNewDataBaseThenClose_ExpectResultSuccess) { +TEST_F(SQLPTRepresentationTest3, + Close_InitNewDataBaseThenClose_ExpectResultSuccess) { // Arrange - NiceMock<policy_handler_test::MockPolicySettings> policy_settings_; ON_CALL(policy_settings_, app_storage_folder()) .WillByDefault(ReturnRef(kAppStorageFolder)); - SQLPTRepresentation reps; - EXPECT_EQ(::policy::SUCCESS, reps.Init(&policy_settings_)); - EXPECT_TRUE(reps.Close()); + EXPECT_EQ(::policy::SUCCESS, reps->Init(&policy_settings_)); + EXPECT_TRUE(reps->Close()); utils::dbms::SQLError error(utils::dbms::Error::OK); // Checks - EXPECT_EQ(error.number(), (reps.db()->LastError().number())); - reps.RemoveDB(); + EXPECT_EQ(error.number(), (reps->db()->LastError().number())); + reps->RemoveDB(); } TEST_F(SQLPTRepresentationTest, @@ -1476,10 +1485,10 @@ TEST_F(SQLPTRepresentationTest, EXPECT_EQ(0, dbms->FetchOneInt(query_select)); } -TEST(SQLPTRepresentationTest3, RemoveDB_RemoveDB_ExpectFileDeleted) { +TEST_F(SQLPTRepresentationTest3, RemoveDB_RemoveDB_ExpectFileDeleted) { // Arrange - policy_handler_test::MockPolicySettings policy_settings_; - SQLPTRepresentation* reps = new SQLPTRepresentation; + ON_CALL(policy_settings_, app_storage_folder()) + .WillByDefault(ReturnRef(kAppStorageFolder)); EXPECT_EQ(::policy::SUCCESS, reps->Init(&policy_settings_)); EXPECT_EQ(::policy::EXISTS, reps->Init(&policy_settings_)); std::string path = (reps->db())->get_path(); @@ -1487,7 +1496,6 @@ TEST(SQLPTRepresentationTest3, RemoveDB_RemoveDB_ExpectFileDeleted) { reps->RemoveDB(); // Check EXPECT_FALSE(file_system::FileExists(path)); - delete reps; } // TODO {AKozoriz} : Snapshot must have module meta section, but test diff --git a/src/components/utils/include/utils/sqlite_wrapper/sql_database.h b/src/components/utils/include/utils/sqlite_wrapper/sql_database.h index 720628ef3c..8b78881473 100644 --- a/src/components/utils/include/utils/sqlite_wrapper/sql_database.h +++ b/src/components/utils/include/utils/sqlite_wrapper/sql_database.h @@ -131,6 +131,11 @@ class SQLDatabase { sync_primitives::Lock conn_lock_; /** + * The file path of database + */ + std::string path_; + + /** * The filename of database */ std::string databasename_; diff --git a/src/components/utils/src/sqlite_wrapper/sql_database.cc b/src/components/utils/src/sqlite_wrapper/sql_database.cc index bf19275bac..2de5817cab 100644 --- a/src/components/utils/src/sqlite_wrapper/sql_database.cc +++ b/src/components/utils/src/sqlite_wrapper/sql_database.cc @@ -53,7 +53,8 @@ bool SQLDatabase::Open() { sync_primitives::AutoLock auto_lock(conn_lock_); if (conn_) return true; - error_ = sqlite3_open(databasename_.c_str(), &conn_); + error_ = sqlite3_open(get_path().c_str(), &conn_); + printf("OPEN SQLDATABASE: %i\n", error_); return error_ == SQLITE_OK; } @@ -101,11 +102,11 @@ sqlite3* SQLDatabase::conn() const { } void SQLDatabase::set_path(const std::string& path) { - databasename_ = path + databasename_; + path_ = path; } std::string SQLDatabase::get_path() const { - return databasename_; + return path_ + databasename_; } bool SQLDatabase::Backup() { |