From 827bcaf0aa39348fa7ec4df796c4e124f7143169 Mon Sep 17 00:00:00 2001 From: "Andriy Byzhynar (GitHub)" Date: Thu, 23 Jun 2016 17:33:32 +0300 Subject: Revert "Cover resumption with unit tests" --- .../resumption/resumption_data_db.h | 62 +-- .../resumption/resumption_data_json.h | 9 +- .../src/resumption/resumption_data.cc | 2 +- .../src/resumption/resumption_data_db.cc | 60 ++- .../src/resumption/resumption_data_json.cc | 29 +- .../application_manager/test/CMakeLists.txt | 8 +- .../application_manager/resumption_data_test.h | 4 +- .../application_manager/test_resumption_data_db.h | 2 +- .../test/resumption/resume_ctrl_test.cc | 267 +++--------- .../test/resumption/resumption_data_db_test.cc | 474 ++------------------- .../test/resumption/resumption_data_json_test.cc | 31 +- .../test/resumption_sql_queries_test.cc | 6 +- .../include/test/utils/mock_sql_database.h | 68 --- src/components/include/utils/sql_database.h | 128 ------ .../policy/include/policy/sql_pt_representation.h | 3 - src/components/policy/include/policy/sql_wrapper.h | 44 ++ .../policy/src/sql_pt_ext_representation.cc | 2 +- src/components/policy/src/sql_pt_representation.cc | 34 +- .../policy/test/policy_manager_impl_test.cc | 2 - src/components/utils/include/utils/json_utils.h | 2 - .../utils/include/utils/qdb_wrapper/sql_database.h | 142 ++++++ .../include/utils/qdb_wrapper/sql_database_impl.h | 144 ------- .../include/utils/sql_qt_wrapper/sql_database.h | 108 +++++ .../utils/sql_qt_wrapper/sql_database_impl.h | 109 ----- src/components/utils/include/utils/sql_wrapper.h | 18 +- .../include/utils/sqlite_wrapper/sql_database.h | 164 +++++++ .../utils/sqlite_wrapper/sql_database_impl.h | 156 ------- src/components/utils/src/json_utils.cc | 4 - .../utils/src/qdb_wrapper/CMakeLists.txt | 2 +- .../utils/src/qdb_wrapper/sql_database.cc | 116 +++++ .../utils/src/qdb_wrapper/sql_database_impl.cc | 120 ------ src/components/utils/src/qdb_wrapper/sql_query.cc | 2 +- .../utils/src/sql_qt_wrapper/CMakeLists.txt | 2 +- .../utils/src/sql_qt_wrapper/sql_database.cc | 88 ++++ .../utils/src/sql_qt_wrapper/sql_database_impl.cc | 88 ---- .../utils/src/sql_qt_wrapper/sql_query.cc | 2 +- .../utils/src/sqlite_wrapper/CMakeLists.txt | 2 +- .../utils/src/sqlite_wrapper/sql_database.cc | 122 ++++++ .../utils/src/sqlite_wrapper/sql_database_impl.cc | 124 ------ .../utils/src/sqlite_wrapper/sql_query.cc | 2 +- .../utils/test/generated_code_with_sqlite_test.cc | 8 +- .../utils/generated_code_with_sqlite_test.h | 2 +- .../utils/test/qdb_wrapper/sql_database_test.cc | 4 +- .../utils/test/qdb_wrapper/sql_query_test.cc | 6 +- .../utils/test/sqlite_wrapper/sql_database_test.cc | 50 ++- .../utils/test/sqlite_wrapper/sql_query_test.cc | 22 +- 46 files changed, 1086 insertions(+), 1758 deletions(-) delete mode 100644 src/components/include/test/utils/mock_sql_database.h delete mode 100644 src/components/include/utils/sql_database.h create mode 100644 src/components/policy/include/policy/sql_wrapper.h create mode 100644 src/components/utils/include/utils/qdb_wrapper/sql_database.h delete mode 100644 src/components/utils/include/utils/qdb_wrapper/sql_database_impl.h create mode 100644 src/components/utils/include/utils/sql_qt_wrapper/sql_database.h delete mode 100644 src/components/utils/include/utils/sql_qt_wrapper/sql_database_impl.h create mode 100644 src/components/utils/include/utils/sqlite_wrapper/sql_database.h delete mode 100644 src/components/utils/include/utils/sqlite_wrapper/sql_database_impl.h create mode 100644 src/components/utils/src/qdb_wrapper/sql_database.cc delete mode 100644 src/components/utils/src/qdb_wrapper/sql_database_impl.cc create mode 100644 src/components/utils/src/sql_qt_wrapper/sql_database.cc delete mode 100644 src/components/utils/src/sql_qt_wrapper/sql_database_impl.cc create mode 100644 src/components/utils/src/sqlite_wrapper/sql_database.cc delete mode 100644 src/components/utils/src/sqlite_wrapper/sql_database_impl.cc diff --git a/src/components/application_manager/include/application_manager/resumption/resumption_data_db.h b/src/components/application_manager/include/application_manager/resumption/resumption_data_db.h index ab2a5725c4..6c10b2e013 100644 --- a/src/components/application_manager/include/application_manager/resumption/resumption_data_db.h +++ b/src/components/application_manager/include/application_manager/resumption/resumption_data_db.h @@ -75,12 +75,6 @@ class ResumptionDataDB : public ResumptionData { DbStorage db_storage, const application_manager::ApplicationManager& application_manager); -#ifdef BUILD_TESTS - ResumptionDataDB(utils::dbms::SQLDatabase* db, - const application_manager::ApplicationManager& - application_manager_settings); -#endif // BUILD_TESTS - /** * @brief allows to destroy ResumptionDataDB object */ @@ -91,7 +85,7 @@ class ResumptionDataDB : public ResumptionData { * @return false if DB doesn't initialize * otherwise returns true */ - bool Init() OVERRIDE; + virtual bool Init(); /** * @brief Save application persistent info for future resuming to db @@ -103,7 +97,7 @@ class ResumptionDataDB : public ResumptionData { * @param hmi_app_id - hmi application id * @return true if exist, otherwise false */ - bool IsHMIApplicationIdExist(uint32_t hmi_app_id) const OVERRIDE; + virtual bool IsHMIApplicationIdExist(uint32_t hmi_app_id) const; /** * @brief Retrieves HMI app ID for the given mobile app ID * and device ID from stored data. @@ -111,14 +105,14 @@ class ResumptionDataDB : public ResumptionData { * @param device_id - contains id of device on which is running application * @return HMI app ID */ - uint32_t GetHMIApplicationID(const std::string& policy_app_id, - const std::string& device_id) const OVERRIDE; + virtual uint32_t GetHMIApplicationID(const std::string& policy_app_id, + const std::string& device_id) const; /** * @brief Increments ignition counter for all registered applications * and remember ign_off time stamp */ - void OnSuspend() OVERRIDE; + virtual void OnSuspend(); /** * @brief Retrieves hash ID for the given mobile app ID @@ -130,15 +124,15 @@ class ResumptionDataDB : public ResumptionData { * @return TRUE if application will be found in saved data otherwise * returns FALSE */ - bool GetHashId(const std::string& policy_app_id, - const std::string& device_id, - std::string& hash_id) const OVERRIDE; + virtual bool GetHashId(const std::string& policy_app_id, + const std::string& device_id, + std::string& hash_id) const; /** * @brief Decrements ignition counter for all registered applications * and remember ign_off time stamp */ - void OnAwake() OVERRIDE; + virtual void OnAwake(); /** * @brief Retrieves data of saved application for the given mobile app ID @@ -149,10 +143,9 @@ class ResumptionDataDB : public ResumptionData { * @return TRUE if application will be found in saved data otherwise * returns FALSE */ - bool GetSavedApplication( - const std::string& policy_app_id, - const std::string& device_id, - smart_objects::SmartObject& saved_app) const OVERRIDE; + virtual bool GetSavedApplication(const std::string& policy_app_id, + const std::string& device_id, + smart_objects::SmartObject& saved_app) const; /** * @brief Remove application from list of saved applications @@ -160,14 +153,14 @@ class ResumptionDataDB : public ResumptionData { * @param device_id - contains id of device on which is running application * @return return true, if success, otherwise return false */ - bool RemoveApplicationFromSaved(const std::string& policy_app_id, - const std::string& device_id) OVERRIDE; + virtual bool RemoveApplicationFromSaved(const std::string& policy_app_id, + const std::string& device_id); /** * @brief Get the last ignition off time from LastState * @return the last ignition off time from LastState */ - uint32_t GetIgnOffTime() const OVERRIDE; + virtual uint32_t GetIgnOffTime() const; /** * @brief Checks if saved data have application @@ -175,15 +168,15 @@ class ResumptionDataDB : public ResumptionData { * @param device_id - contains id of device on which is running application * @return 0 if saved data contains application otherwise returns -1 */ - ssize_t IsApplicationSaved(const std::string& policy_app_id, - const std::string& device_id) const OVERRIDE; + virtual ssize_t IsApplicationSaved(const std::string& policy_app_id, + const std::string& device_id) const; /** * @brief Retrieves data from saved application * @param will contain data for resume_ctrl */ - void GetDataForLoadResumeData( - smart_objects::SmartObject& saved_data) const OVERRIDE; + virtual void GetDataForLoadResumeData( + smart_objects::SmartObject& saved_data) const; /** * @brief Updates HMI level of saved application @@ -191,9 +184,9 @@ class ResumptionDataDB : public ResumptionData { * @param device_id - contains id of device on which is running application * @param hmi_level - contains hmi level for saved application */ - void UpdateHmiLevel(const std::string& policy_app_id, - const std::string& device_id, - mobile_apis::HMILevel::eType hmi_level) OVERRIDE; + virtual void UpdateHmiLevel(const std::string& policy_app_id, + const std::string& device_id, + mobile_apis::HMILevel::eType hmi_level); /** * @brief Re-creates and re-init DB @@ -247,6 +240,17 @@ class ResumptionDataDB : public ResumptionData { */ const int32_t GetDBVersion() const; + /** + * @brief Retrieves hmi level from db + * @param policy_app_id - mobile application id + * @param device_id - contains id of device on which is running application + * @param hmi_level - will contains hmi level for saved application + * @return true if application with mobile id and device id has hmi level + * otherwise returns false + */ + bool SelectHMILevel(const std::string& policy_app_id, + const std::string& device_id, + int& hmi_level) const; /** * @brief Checks existence HMI id in DB * @param hmi_app_id - HMI id diff --git a/src/components/application_manager/include/application_manager/resumption/resumption_data_json.h b/src/components/application_manager/include/application_manager/resumption/resumption_data_json.h index a9e8ad7d08..b521fe4fc8 100644 --- a/src/components/application_manager/include/application_manager/resumption/resumption_data_json.h +++ b/src/components/application_manager/include/application_manager/resumption/resumption_data_json.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, Ford Motor Company + * Copyright (c) 2015, Ford Motor Company * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -219,6 +219,13 @@ class ResumptionDataJson : public ResumptionData { */ void SetLastIgnOffTime(time_t ign_off_time); + /* + * @brief Return true if application resumption data is valid, + * otherwise false + * @param index application index in the resumption list + */ + bool IsResumptionDataValid(uint32_t index) const; + LastState& last_state_; DISALLOW_COPY_AND_ASSIGN(ResumptionDataJson); }; diff --git a/src/components/application_manager/src/resumption/resumption_data.cc b/src/components/application_manager/src/resumption/resumption_data.cc index d148f856a6..8e6282fc50 100644 --- a/src/components/application_manager/src/resumption/resumption_data.cc +++ b/src/components/application_manager/src/resumption/resumption_data.cc @@ -191,7 +191,7 @@ smart_objects::SmartObject ResumptionData::GetApplicationFiles( int i = 0; for (AppFilesMap::const_iterator file_it = app_files.begin(); file_it != app_files.end(); - ++file_it) { + file_it++) { const AppFile& file = file_it->second; if (file.is_persistent) { smart_objects::SmartObject file_data = diff --git a/src/components/application_manager/src/resumption/resumption_data_db.cc b/src/components/application_manager/src/resumption/resumption_data_db.cc index 92e886f5e5..8c9fe7d57f 100644 --- a/src/components/application_manager/src/resumption/resumption_data_db.cc +++ b/src/components/application_manager/src/resumption/resumption_data_db.cc @@ -61,26 +61,21 @@ ResumptionDataDB::ResumptionDataDB( : ResumptionData(application_manager) { if (db_storage == In_File_Storage) { #ifndef __QNX__ - db_ = new utils::dbms::SQLDatabaseImpl(file_system::ConcatPath( - application_manager_.get_settings().app_storage_folder(), - kDatabaseName)); + db_ = new utils::dbms::SQLDatabase( + file_system::ConcatPath( + application_manager_.get_settings().app_storage_folder(), + kDatabaseName), + "ResumptionDatabase"); #else - db_ = new utils::dbms::SQLDatabaseImpl(kDatabaseName); + db_ = new utils::dbms::SQLDatabase(kDatabaseName); #endif } else if (db_storage == In_Memory_Storage) { - db_ = new utils::dbms::SQLDatabaseImpl(); + db_ = new utils::dbms::SQLDatabase(); } else { SDL_ERROR("Get not existed type of database storage"); } } -#ifdef BUILD_TESTS -ResumptionDataDB::ResumptionDataDB( - utils::dbms::SQLDatabase* db, - const application_manager::ApplicationManager& application_manager) - : ResumptionData(application_manager), db_(db) {} -#endif // BUILD_TESTS - ResumptionDataDB::~ResumptionDataDB() { db_->Close(); delete db_; @@ -366,13 +361,15 @@ bool ResumptionDataDB::GetSavedApplication( bool ResumptionDataDB::RemoveApplicationFromSaved( const std::string& policy_app_id, const std::string& device_id) { SDL_AUTO_TRACE(); - bool result = false; bool application_exist = false; if (!CheckExistenceApplication(policy_app_id, device_id, application_exist) || !application_exist) { - SDL_ERROR("Problem with access to DB or application does not exist"); - return result; + SDL_ERROR( + "Problem with access to DB or application does not" + " exist"); + return false; } + bool result = false; if (DeleteSavedApplication(policy_app_id, device_id)) { WriteDb(); result = true; @@ -404,6 +401,32 @@ void ResumptionDataDB::GetDataForLoadResumeData( SelectDataForLoadResumeData(saved_data); } +bool ResumptionDataDB::SelectHMILevel(const std::string& policy_app_id, + const std::string& device_id, + int& hmi_level) const { + SDL_AUTO_TRACE(); + utils::dbms::SQLQuery query_count(db()); + utils::dbms::SQLQuery query_select(db()); + if (query_count.Prepare(kSelectCountHMILevel) && + query_select.Prepare(kSelectHMILevel)) { + /* Positions of binding data for "query_count" and "query_select" : + field "deviceID" from table "application" = 0 + field "appID" from table "application" = 1 */ + query_count.Bind(0, device_id); + query_count.Bind(1, policy_app_id); + query_select.Bind(0, device_id); + query_select.Bind(1, policy_app_id); + /* Position of data in "query_select" : + field "hmiLevel" from table "application" = 0 */ + if (query_count.Exec() && query_count.GetInteger(0) && + query_select.Exec()) { + hmi_level = query_select.GetInteger(0); + return true; + } + } + return false; +} + bool ResumptionDataDB::CheckExistenceHMIId(uint32_t hmi_app_id) const { SDL_AUTO_TRACE(); @@ -2698,14 +2721,13 @@ bool ResumptionDataDB::UpdateGrammarID(const std::string& policy_app_id, } utils::dbms::SQLDatabase* ResumptionDataDB::db() const { -#ifdef __QNX__ - utils::dbms::SQLDatabase* db = - new utils::dbms::SQLDatabaseImpl(kDatabaseName); +#if defined(__QNX__) + utils::dbms::SQLDatabase* db = new utils::dbms::SQLDatabase(kDatabaseName); db->Open(); return db; #else return db_; -#endif // __QNX__ +#endif } ApplicationParams::ApplicationParams( diff --git a/src/components/application_manager/src/resumption/resumption_data_json.cc b/src/components/application_manager/src/resumption/resumption_data_json.cc index 40262ff114..bb2faa412c 100644 --- a/src/components/application_manager/src/resumption/resumption_data_json.cc +++ b/src/components/application_manager/src/resumption/resumption_data_json.cc @@ -442,6 +442,31 @@ ssize_t ResumptionDataJson::GetObjectIndex(const std::string& policy_app_id, return -1; } +bool ResumptionDataJson::IsResumptionDataValid(uint32_t index) const { + using namespace app_mngr; + using namespace utils::json; + SDL_AUTO_TRACE(); + sync_primitives::AutoLock autolock(resumption_lock_); + const JsonValueRef json_app = GetSavedApplications()[index]; + if (!json_app.HasMember(strings::app_id) || + !json_app.HasMember(strings::ign_off_count) || + !json_app.HasMember(strings::hmi_level) || + !json_app.HasMember(strings::hmi_app_id) || + !json_app.HasMember(strings::time_stamp) || + !json_app.HasMember(strings::device_id)) { + SDL_ERROR("Wrong resumption data"); + return false; + } + + if (json_app.HasMember(strings::hmi_app_id) && + 0 >= json_app[strings::hmi_app_id].AsUInt()) { + SDL_ERROR("Wrong resumption hmi app ID"); + return false; + } + + return true; +} + void ResumptionDataJson::SetSavedApplication( utils::json::JsonValueRef apps_json) { SDL_AUTO_TRACE(); @@ -483,7 +508,9 @@ bool ResumptionDataJson::DropAppDataResumption(const std::string& device_id, application[strings::application_global_properties].Clear(); application[strings::application_subscribtions].Clear(); application[strings::application_files].Clear(); - application.RemoveMember(strings::grammar_id); + // Seems there is no interface for json wrapper - needs to be created + // application.removeMember(strings::grammar_id); + application[strings::grammar_id].Clear(); SDL_DEBUG("Resumption data for application " << app_id << " with device_id " << device_id << " has been dropped."); diff --git a/src/components/application_manager/test/CMakeLists.txt b/src/components/application_manager/test/CMakeLists.txt index 947d246be2..921d68f28b 100644 --- a/src/components/application_manager/test/CMakeLists.txt +++ b/src/components/application_manager/test/CMakeLists.txt @@ -178,10 +178,10 @@ # TODO [AKozoriz] : Fix not buildable tests set(ResumptionData_SOURCES - ${AM_TEST_DIR}/resumption/resumption_data_test.cc - ${AM_TEST_DIR}/resumption/resumption_data_db_test.cc - ${AM_TEST_DIR}/resumption/resumption_data_json_test.cc - ${AM_TEST_DIR}/resumption/resume_ctrl_test.cc + # ${AM_TEST_DIR}/resumption/resumption_data_test.cc + # ${AM_TEST_DIR}/resumption/resumption_data_db_test.cc + # ${AM_TEST_DIR}/resumption/resumption_data_json_test.cc + # ${AM_TEST_DIR}/resumption/resume_ctrl_test.cc ${AM_TEST_DIR}/mock_message_helper.cc ) diff --git a/src/components/application_manager/test/include/application_manager/resumption_data_test.h b/src/components/application_manager/test/include/application_manager/resumption_data_test.h index c823299623..b648b8ab82 100644 --- a/src/components/application_manager/test/include/application_manager/resumption_data_test.h +++ b/src/components/application_manager/test/include/application_manager/resumption_data_test.h @@ -62,8 +62,7 @@ using namespace mobile_apis; class ResumptionDataTest : public ::testing::Test { protected: ResumptionDataTest() - : is_subscribed_for_way_points_(false) - , kCountOfCommands_(5u) + : kCountOfCommands_(5u) , kCountOfChoice_(2u) , kCountOfChoiceSets_(4u) , kCountOfSubmenues_(3u) @@ -84,7 +83,6 @@ class ResumptionDataTest : public ::testing::Test { std::string policy_app_id_; size_t ign_off_count_; const size_t tts_chunks_count = 4; - bool is_subscribed_for_way_points_; size_t grammar_id_; std::string hash_; diff --git a/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h b/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h index b21a2a2b85..e10f60afac 100644 --- a/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h +++ b/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h @@ -33,7 +33,7 @@ #ifndef SRC_COMPONENTS_APPLICATION_MANAGER_TEST_INCLUDE_APPLICATION_MANAGER_TEST_RESUMPTION_DATA_DB_H_ #define SRC_COMPONENTS_APPLICATION_MANAGER_TEST_INCLUDE_APPLICATION_MANAGER_TEST_RESUMPTION_DATA_DB_H_ -#include "utils/sql_database.h" +#include "utils/sqlite_wrapper/sql_database.h" #include "application_manager/resumption/resumption_data_db.h" #include "application_manager/mock_application_manager_settings.h" #include "application_manager/mock_application_manager.h" diff --git a/src/components/application_manager/test/resumption/resume_ctrl_test.cc b/src/components/application_manager/test/resumption/resume_ctrl_test.cc index 1b80131f22..9857072674 100644 --- a/src/components/application_manager/test/resumption/resume_ctrl_test.cc +++ b/src/components/application_manager/test/resumption/resume_ctrl_test.cc @@ -69,29 +69,28 @@ class ResumeCtrlTest : public ::testing::Test { protected: ResumeCtrlTest() : kTestAppId_(10u) - , kTestPolicyAppId_("kTestPolicyAppId_") + , kTestPolicyAppId_("test_policy_app_id") , kMacAddress_("12345") , kDefaultTestLevel_(eType::HMI_NONE) , kCorId_(7u) , kTestDevId_(5u) , kTestGrammarId_(10) , kHash_("saved_hash") - , kAppResumingTimeout_(30000000u) - , kTestTimeStamp_(1452074434) {} + , kAppResumingTimeout_(30000000u) {} virtual void SetUp() OVERRIDE { - ON_CALL(mock_app_mngr_, event_dispatcher()) + ON_CALL(app_mngr_, event_dispatcher()) .WillByDefault(ReturnRef(mock_event_dispatcher_)); mock_storage = ::utils::MakeShared>( - mock_app_mngr_); + app_mngr_); app_mock = utils::MakeShared>(); - res_ctrl = utils::MakeShared(mock_app_mngr_); + res_ctrl = utils::MakeShared(app_mngr_); res_ctrl->set_resumption_storage(mock_storage); - ON_CALL(mock_app_mngr_, state_controller()) + ON_CALL(app_mngr_, state_controller()) .WillByDefault(ReturnRef(state_controller_)); - ON_CALL(mock_app_mngr_, get_settings()) + ON_CALL(app_mngr_, get_settings()) .WillByDefault(ReturnRef(mock_application_manager_settings_)); ON_CALL(mock_application_manager_settings_, use_db_for_resumption()) @@ -110,7 +109,7 @@ class ResumeCtrlTest : public ::testing::Test { NiceMock mock_event_dispatcher_; application_manager_test::MockApplicationManagerSettings mock_application_manager_settings_; - application_manager_test::MockApplicationManager mock_app_mngr_; + application_manager_test::MockApplicationManager app_mngr_; MockStateController state_controller_; utils::SharedPtr res_ctrl; utils::SharedPtr> mock_storage; @@ -126,8 +125,6 @@ class ResumeCtrlTest : public ::testing::Test { const uint32_t kTestGrammarId_; const std::string kHash_; const uint32_t kAppResumingTimeout_; - const uint32_t kTestTimeStamp_; - sync_primitives::Lock app_set_lock_; }; /** @@ -141,7 +138,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGrammarId) { // Check RestoreApplicationData GetInfoFromApp(); - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(kDefaultTestLevel_)); EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _)) @@ -149,7 +146,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGrammarId) { EXPECT_CALL(*app_mock, UpdateHash()); EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_)); - const bool res = res_ctrl->StartResumption(app_mock, kHash_); + bool res = res_ctrl->StartResumption(app_mock, kHash_); EXPECT_TRUE(res); } @@ -165,7 +162,7 @@ TEST_F(ResumeCtrlTest, StartResumption_WithoutGrammarId) { saved_app[application_manager::strings::hash_id] = kHash_; GetInfoFromApp(); - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(kDefaultTestLevel_)); // Check RestoreApplicationData EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _)) @@ -173,7 +170,7 @@ TEST_F(ResumeCtrlTest, StartResumption_WithoutGrammarId) { EXPECT_CALL(*app_mock, UpdateHash()); EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_)).Times(0); - const bool res = res_ctrl->StartResumption(app_mock, kHash_); + bool res = res_ctrl->StartResumption(app_mock, kHash_); EXPECT_FALSE(res); } @@ -212,7 +209,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithFiles) { test_application_files; // Check RestoreApplicationData - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(kDefaultTestLevel_)); EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _)) .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true))); @@ -227,7 +224,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithFiles) { static_cast(file_types[i])))); } - const bool res = res_ctrl->StartResumption(app_mock, kHash_); + bool res = res_ctrl->StartResumption(app_mock, kHash_); EXPECT_TRUE(res); } @@ -249,7 +246,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubmenues) { test_application_submenues; // Check RestoreApplicationData - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(kDefaultTestLevel_)); EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _)) .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true))); @@ -261,14 +258,14 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubmenues) { } smart_objects::SmartObjectList requests; - EXPECT_CALL(mock_app_mngr_, GetNextHMICorrelationID()) + EXPECT_CALL(app_mngr_, GetNextHMICorrelationID()) .WillRepeatedly(Return(kCorId_)); EXPECT_CALL(*application_manager::MockMessageHelper::message_helper_mock(), CreateAddSubMenuRequestToHMI(_, kCorId_)) .WillRepeatedly(Return(requests)); EXPECT_CALL(*app_mock, UpdateHash()); - const bool res = res_ctrl->StartResumption(app_mock, kHash_); + bool res = res_ctrl->StartResumption(app_mock, kHash_); EXPECT_TRUE(res); } @@ -289,7 +286,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithCommands) { saved_app[application_manager::strings::application_commands] = test_application_commands; - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(kDefaultTestLevel_)); // Check RestoreApplicationData EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _)) @@ -306,7 +303,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithCommands) { CreateAddCommandRequestToHMI(_, _)) .WillRepeatedly(Return(requests)); - const bool res = res_ctrl->StartResumption(app_mock, kHash_); + bool res = res_ctrl->StartResumption(app_mock, kHash_); EXPECT_TRUE(res); } @@ -340,7 +337,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithChoiceSet) { application_choice_sets; // Check RestoreApplicationData - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(kDefaultTestLevel_)); GetInfoFromApp(); EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _)) @@ -357,7 +354,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithChoiceSet) { CreateAddVRCommandRequestFromChoiceToHMI(_)) .WillRepeatedly(Return(requests)); - const bool res = res_ctrl->StartResumption(app_mock, kHash_); + bool res = res_ctrl->StartResumption(app_mock, kHash_); EXPECT_TRUE(res); } @@ -371,7 +368,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGlobalProperties) { test_global_properties; // Check RestoreApplicationData - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(kDefaultTestLevel_)); GetInfoFromApp(); EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _)) @@ -385,7 +382,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGlobalProperties) { EXPECT_CALL(*app_mock, load_global_properties(test_global_properties)); EXPECT_CALL(*app_mock, UpdateHash()); - const bool res = res_ctrl->StartResumption(app_mock, kHash_); + bool res = res_ctrl->StartResumption(app_mock, kHash_); EXPECT_TRUE(res); } @@ -409,7 +406,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscribeOnButtons) { test_subscriptions; // Check RestoreApplicationData - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(kDefaultTestLevel_)); GetInfoFromApp(); EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _)) @@ -427,7 +424,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscribeOnButtons) { EXPECT_CALL(*application_manager::MockMessageHelper::message_helper_mock(), SendAllOnButtonSubscriptionNotificationsForApp(_, _)).Times(2); - const bool res = res_ctrl->StartResumption(app_mock, kHash_); + bool res = res_ctrl->StartResumption(app_mock, kHash_); EXPECT_TRUE(res); } @@ -453,7 +450,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscriptionToIVI) { test_subscriptions; // Check RestoreApplicationData - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(kDefaultTestLevel_)); GetInfoFromApp(); EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _)) @@ -472,44 +469,25 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscriptionToIVI) { GetIVISubscriptionRequests(_)).WillRepeatedly(Return(requests)); EXPECT_CALL(*app_mock, UpdateHash()); - const bool res = res_ctrl->StartResumption(app_mock, kHash_); - EXPECT_TRUE(res); -} - -TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscriptionToWayPoints) { - smart_objects::SmartObject saved_app; - saved_app[application_manager::strings::hash_id] = kHash_; - saved_app[application_manager::strings::grammar_id] = kTestGrammarId_; - saved_app[application_manager::strings::subscribed_for_way_points] = true; - saved_app[application_manager::strings::time_stamp] = kTestTimeStamp_; - - GetInfoFromApp(); - EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _)) - .Times(2) - .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true))); - EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_)); - EXPECT_CALL(mock_app_mngr_, SubscribeAppForWayPoints(_)); - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)).WillOnce(Return(HMI_FULL)); - - const bool res = res_ctrl->StartResumption(app_mock, kHash_); + bool res = res_ctrl->StartResumption(app_mock, kHash_); EXPECT_TRUE(res); } TEST_F(ResumeCtrlTest, StartResumptionOnlyHMILevel) { smart_objects::SmartObject saved_app; - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillOnce(Return(kDefaultTestLevel_)); GetInfoFromApp(); EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _)) .WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true))); - const bool res = res_ctrl->StartResumptionOnlyHMILevel(app_mock); + bool res = res_ctrl->StartResumptionOnlyHMILevel(app_mock); EXPECT_TRUE(res); } TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppInFull) { mobile_apis::HMILevel::eType restored_test_type = eType::HMI_FULL; - const uint32_t ign_off_count = 0; + uint32_t ign_off_count = 0; smart_objects::SmartObject saved_app; saved_app[application_manager::strings::ign_off_count] = ign_off_count; saved_app[application_manager::strings::hmi_level] = restored_test_type; @@ -523,20 +501,20 @@ TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppInFull) { EXPECT_CALL(*mock_storage, RemoveApplicationFromSaved(_, _)) .WillOnce(Return(true)); - EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")) + EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")) .WillRepeatedly(Return(policy::kDeviceAllowed)); res_ctrl->StartAppHmiStateResumption(app_mock); } TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppInBackground) { - const uint32_t ign_off_count = 0; + uint32_t ign_off_count = 0; smart_objects::SmartObject saved_app; mobile_apis::HMILevel::eType restored_test_type = eType::HMI_BACKGROUND; saved_app[application_manager::strings::ign_off_count] = ign_off_count; saved_app[application_manager::strings::hmi_level] = restored_test_type; - EXPECT_CALL(mock_app_mngr_, state_controller()).Times(0); + EXPECT_CALL(app_mngr_, state_controller()).Times(0); GetInfoFromApp(); EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _)) .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true))); @@ -562,11 +540,11 @@ TEST_F(ResumeCtrlTest, RestoreAppHMIState_RestoreHMILevelFull) { EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _)) .WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true))); - EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")) + EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")) .WillOnce(Return(policy::kDeviceAllowed)); EXPECT_CALL(*app_mock, set_is_resuming(true)); - const bool res = res_ctrl->RestoreAppHMIState(app_mock); + bool res = res_ctrl->RestoreAppHMIState(app_mock); EXPECT_TRUE(res); } @@ -575,12 +553,12 @@ TEST_F(ResumeCtrlTest, SetupDefaultHMILevel) { saved_app[application_manager::strings::hmi_level] = kDefaultTestLevel_; - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(kDefaultTestLevel_)); GetInfoFromApp(); - EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")).Times(0); + EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0); - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillOnce(Return(kDefaultTestLevel_)); EXPECT_CALL(state_controller_, SetRegularState(_, kDefaultTestLevel_)) @@ -589,33 +567,6 @@ TEST_F(ResumeCtrlTest, SetupDefaultHMILevel) { res_ctrl->SetupDefaultHMILevel(app_mock); } -TEST_F(ResumeCtrlTest, ApplicationResumptiOnTimer_AppInFull) { - EXPECT_CALL(mock_app_mngr_, application(_)).WillRepeatedly(Return(app_mock)); - - mobile_apis::HMILevel::eType restored_test_type = eType::HMI_FULL; - const uint32_t ign_off_count = 0; - smart_objects::SmartObject saved_app; - saved_app[application_manager::strings::ign_off_count] = ign_off_count; - saved_app[application_manager::strings::hmi_level] = restored_test_type; - - MockStateController state_controller_; - EXPECT_CALL(mock_app_mngr_, state_controller()) - .WillOnce(ReturnRef(state_controller_)); - EXPECT_CALL(state_controller_, SetRegularState(_, restored_test_type)) - .Times(AtLeast(1)); - GetInfoFromApp(); - EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _)) - .Times(2) - .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true))); - - EXPECT_CALL(*mock_storage, RemoveApplicationFromSaved(_, _)) - .WillOnce(Return(true)); - - EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")) - .WillRepeatedly(Return(policy::kDeviceAllowed)); - res_ctrl->StartAppHmiStateResumption(app_mock); -} - /** * @brief group of tests which check correct SetAppHMIState */ @@ -623,25 +574,24 @@ TEST_F(ResumeCtrlTest, ApplicationResumptiOnTimer_AppInFull) { TEST_F(ResumeCtrlTest, SetAppHMIState_HMINone_WithoutCheckPolicy) { GetInfoFromApp(); - EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")).Times(0); + EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0); EXPECT_CALL(*app_mock, set_is_resuming(true)); EXPECT_CALL(state_controller_, SetRegularState(_, kDefaultTestLevel_)) .Times(AtLeast(1)); - const bool res = - res_ctrl->SetAppHMIState(app_mock, kDefaultTestLevel_, false); + bool res = res_ctrl->SetAppHMIState(app_mock, kDefaultTestLevel_, false); EXPECT_TRUE(res); } TEST_F(ResumeCtrlTest, SetAppHMIState_HMILimited_WithoutCheckPolicy) { mobile_apis::HMILevel::eType test_type = eType::HMI_LIMITED; GetInfoFromApp(); - EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")).Times(0); + EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0); EXPECT_CALL(*app_mock, set_is_resuming(true)); EXPECT_CALL(state_controller_, SetRegularState(_, test_type)) .Times(AtLeast(1)); - const bool res = res_ctrl->SetAppHMIState(app_mock, test_type, false); + bool res = res_ctrl->SetAppHMIState(app_mock, test_type, false); EXPECT_TRUE(res); } @@ -649,14 +599,14 @@ TEST_F(ResumeCtrlTest, SetAppHMIState_HMIFull_WithoutCheckPolicy) { mobile_apis::HMILevel::eType test_type = eType::HMI_FULL; GetInfoFromApp(); // GetDefaultHmiLevel should not be called - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)).Times(0); - EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")).Times(0); + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)).Times(0); + EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0); EXPECT_CALL(*app_mock, set_is_resuming(true)); EXPECT_CALL(state_controller_, SetRegularState(_, test_type)) .Times(AtLeast(1)); - const bool res = res_ctrl->SetAppHMIState(app_mock, test_type, false); + bool res = res_ctrl->SetAppHMIState(app_mock, test_type, false); EXPECT_TRUE(res); } @@ -664,14 +614,14 @@ TEST_F(ResumeCtrlTest, SetAppHMIState_HMIFull_WithPolicy_DevAllowed) { mobile_apis::HMILevel::eType test_type = eType::HMI_FULL; GetInfoFromApp(); - EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")) + EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")) .WillOnce(Return(policy::kDeviceAllowed)); EXPECT_CALL(*app_mock, set_is_resuming(true)); EXPECT_CALL(state_controller_, SetRegularState(_, test_type)) .Times(AtLeast(1)); - const bool res = res_ctrl->SetAppHMIState(app_mock, test_type, true); + bool res = res_ctrl->SetAppHMIState(app_mock, test_type, true); EXPECT_TRUE(res); } @@ -679,47 +629,18 @@ TEST_F(ResumeCtrlTest, SetAppHMIState_HMIFull_WithPolicy_DevDisallowed) { mobile_apis::HMILevel::eType test_type = eType::HMI_FULL; GetInfoFromApp(); - EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")) + EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")) .WillOnce(Return(policy::kDeviceDisallowed)); EXPECT_CALL(*app_mock, set_is_resuming(true)); - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillOnce(Return(kDefaultTestLevel_)); EXPECT_CALL(state_controller_, SetRegularState(_, kDefaultTestLevel_)) .Times(AtLeast(1)); - const bool res = res_ctrl->SetAppHMIState(app_mock, test_type, true); + bool res = res_ctrl->SetAppHMIState(app_mock, test_type, true); EXPECT_FALSE(res); } -TEST_F(ResumeCtrlTest, SaveAllApplications) { - utils::SharedPtr app_sh_mock = - ::utils::MakeShared(); - - application_manager::ApplicationSet app_set; - app_set.insert(app_sh_mock); - - DataAccessor accessor(app_set, - app_set_lock_); - - EXPECT_CALL(mock_app_mngr_, applications()).WillRepeatedly(Return(accessor)); - EXPECT_CALL(*mock_storage, SaveApplication(app_sh_mock)).Times(1); - res_ctrl->SaveAllApplications(); -} - -TEST_F(ResumeCtrlTest, SaveAllApplications_EmptyApplicationlist) { - utils::SharedPtr app_sh_mock = - ::utils::MakeShared(); - - application_manager::ApplicationSet app_set; - - DataAccessor accessor(app_set, - app_set_lock_); - - EXPECT_CALL(mock_app_mngr_, applications()).WillRepeatedly(Return(accessor)); - EXPECT_CALL(*mock_storage, SaveApplication(app_sh_mock)).Times(0); - res_ctrl->SaveAllApplications(); -} - TEST_F(ResumeCtrlTest, SaveApplication) { utils::SharedPtr app_sh_mock = ::utils::MakeShared(); @@ -732,13 +653,13 @@ TEST_F(ResumeCtrlTest, OnAppActivated_ResumptionHasStarted) { smart_objects::SmartObject saved_app; GetInfoFromApp(); - EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)) + EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)) .WillOnce(Return(kDefaultTestLevel_)); EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _)) .WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true))); ON_CALL(*app_mock, app_id()).WillByDefault(Return(kTestAppId_)); - const bool res = res_ctrl->StartResumptionOnlyHMILevel(app_mock); + bool res = res_ctrl->StartResumptionOnlyHMILevel(app_mock); EXPECT_TRUE(res); utils::SharedPtr app_sh_mock = @@ -765,44 +686,27 @@ TEST_F(ResumeCtrlTest, IsHMIApplicationIdExist) { TEST_F(ResumeCtrlTest, GetHMIApplicationID) { uint32_t hmi_app_id = 10; - const std::string kDeviceId = "test_device_id"; + std::string device_id = "test_device_id"; - EXPECT_CALL(*mock_storage, GetHMIApplicationID(kTestPolicyAppId_, kDeviceId)) + EXPECT_CALL(*mock_storage, GetHMIApplicationID(kTestPolicyAppId_, device_id)) .WillOnce(Return(hmi_app_id)); EXPECT_EQ(hmi_app_id, - res_ctrl->GetHMIApplicationID(kTestPolicyAppId_, kDeviceId)); + res_ctrl->GetHMIApplicationID(kTestPolicyAppId_, device_id)); } TEST_F(ResumeCtrlTest, IsApplicationSaved) { - const std::string kPolicyAppId = "policy_app_id"; - const std::string kDeviceId = "device_id"; - - EXPECT_CALL(*mock_storage, IsApplicationSaved(kPolicyAppId, kDeviceId)) - .WillOnce(Return(0)); - EXPECT_TRUE(res_ctrl->IsApplicationSaved(kPolicyAppId, kDeviceId)); -} - -TEST_F(ResumeCtrlTest, OnAppRegistrationStart) { - const std::string kPolicyAppId = "policy_app_id"; - const std::string kDeviceId = "device_id"; + std::string policy_app_id = "policy_app_id"; + std::string device_id = "device_id"; - EXPECT_CALL(*mock_storage, IsApplicationSaved(kPolicyAppId, kDeviceId)) - .WillOnce(Return(0)); - res_ctrl->OnAppRegistrationStart(kPolicyAppId, kDeviceId); -} - -TEST_F(ResumeCtrlTest, OnAppRegistrationEnd) { - uint32_t timeout = 10u; - EXPECT_CALL(mock_application_manager_settings_, - app_resumption_save_persistent_data_timeout()) - .WillOnce(ReturnRef(timeout)); - res_ctrl->OnAppRegistrationEnd(); + EXPECT_CALL(*mock_storage, IsApplicationSaved(policy_app_id, device_id)) + .WillOnce(Return(true)); + EXPECT_TRUE(res_ctrl->IsApplicationSaved(policy_app_id, device_id)); } TEST_F(ResumeCtrlTest, CheckPersistenceFiles_WithoutCommandAndChoiceSets) { - const uint32_t kIggnOffCount = 0; + uint32_t ign_off_count = 0; smart_objects::SmartObject saved_app; - saved_app[application_manager::strings::ign_off_count] = kIggnOffCount; + saved_app[application_manager::strings::ign_off_count] = ign_off_count; saved_app[application_manager::strings::hmi_level] = HMI_FULL; GetInfoFromApp(); @@ -814,9 +718,9 @@ TEST_F(ResumeCtrlTest, CheckPersistenceFiles_WithoutCommandAndChoiceSets) { TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithCommands) { smart_objects::SmartObject test_application_commands; - const uint32_t kIggnOffCount = 0; + uint32_t ign_off_count = 0; smart_objects::SmartObject saved_app; - saved_app[application_manager::strings::ign_off_count] = kIggnOffCount; + saved_app[application_manager::strings::ign_off_count] = ign_off_count; saved_app[application_manager::strings::hmi_level] = HMI_FULL; saved_app[application_manager::strings::application_commands] = test_application_commands; @@ -834,9 +738,9 @@ TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithCommands) { TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithChoiceSet) { smart_objects::SmartObject test_choice_sets; - const uint32_t kIggnOffCount = 0; + uint32_t ign_off_count = 0; smart_objects::SmartObject saved_app; - saved_app[application_manager::strings::ign_off_count] = kIggnOffCount; + saved_app[application_manager::strings::ign_off_count] = ign_off_count; saved_app[application_manager::strings::hmi_level] = HMI_FULL; saved_app[application_manager::strings::application_choice_sets] = test_choice_sets; @@ -848,38 +752,9 @@ TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithChoiceSet) { EXPECT_TRUE(res_ctrl->CheckPersistenceFilesForResumption(app_mock)); } -TEST_F(ResumeCtrlTest, OnSuspend) { - utils::SharedPtr app_sh_mock = - ::utils::MakeShared(); - - application_manager::ApplicationSet app_set; - app_set.insert(app_sh_mock); - - DataAccessor accessor(app_set, - app_set_lock_); - - EXPECT_CALL(mock_app_mngr_, applications()).WillRepeatedly(Return(accessor)); - EXPECT_CALL(*mock_storage, SaveApplication(app_sh_mock)).Times(1); - +// TODO (VVeremjova) APPLINK-16718 +TEST_F(ResumeCtrlTest, DISABLED_OnSuspend) { EXPECT_CALL(*mock_storage, OnSuspend()); - EXPECT_CALL(*mock_storage, Persist()); - res_ctrl->OnSuspend(); -} - -TEST_F(ResumeCtrlTest, OnSuspend_EmptyApplicationlist) { - utils::SharedPtr app_sh_mock = - ::utils::MakeShared(); - - application_manager::ApplicationSet app_set; - - DataAccessor accessor(app_set, - app_set_lock_); - - EXPECT_CALL(mock_app_mngr_, applications()).WillRepeatedly(Return(accessor)); - EXPECT_CALL(*mock_storage, SaveApplication(app_sh_mock)).Times(0); - - EXPECT_CALL(*mock_storage, OnSuspend()); - EXPECT_CALL(*mock_storage, Persist()); res_ctrl->OnSuspend(); } @@ -899,11 +774,9 @@ TEST_F(ResumeCtrlTest, RemoveApplicationFromSaved) { EXPECT_TRUE(res_ctrl->RemoveApplicationFromSaved(app_mock)); } -TEST_F(ResumeCtrlTest, CheckApplicationHash) { +TEST_F(ResumeCtrlTest, CheckApplicationkHash_) { smart_objects::SmartObject saved_app; - - const std::string test_hash = "saved_hash"; - saved_app[application_manager::strings::hash_id] = test_hash; + saved_app[application_manager::strings::hash_id] = kHash_; GetInfoFromApp(); EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _)) diff --git a/src/components/application_manager/test/resumption/resumption_data_db_test.cc b/src/components/application_manager/test/resumption/resumption_data_db_test.cc index 0eddcb5a08..9e04c869c5 100644 --- a/src/components/application_manager/test/resumption/resumption_data_db_test.cc +++ b/src/components/application_manager/test/resumption/resumption_data_db_test.cc @@ -36,7 +36,7 @@ #include "application_manager/mock_application.h" #include "application_manager/mock_application_manager_settings.h" #include "interfaces/MOBILE_API.h" -#include "utils/sql_database.h" +#include "utils/sqlite_wrapper/sql_database.h" #include "utils/sqlite_wrapper/sql_query.h" #include "utils/make_shared.h" #include "utils/file_system.h" @@ -46,25 +46,15 @@ #include "application_manager/resumption/resumption_sql_queries.h" #include "application_manager/resumption/resumption_data_db.h" -#include "utils/sqlite_wrapper/sql_database_impl.h" -#include "utils/mock_sql_database.h" -#include "application_manager/mock_application_manager_settings.h" - namespace test { namespace components { namespace resumption_test { using ::testing::NiceMock; -using ::testing::Return; -using ::testing::ReturnNull; using ::testing::ReturnRef; -using ::testing::_; using application_manager_test::MockApplication; -using ::test::components::utils::dbms::MockSQLDatabase; - namespace am = application_manager; -namespace smart_objects = ::NsSmartDeviceLink::NsSmartObjects; using namespace file_system; using namespace resumption; @@ -77,8 +67,7 @@ const std::string kPath = class ResumptionDataDBTest : public ResumptionDataTest { protected: void SetUp() OVERRIDE { - app_mock = ::utils::MakeShared< - NiceMock >(); + app_mock = utils::MakeShared >(); policy_app_id_ = "test_policy_app_id"; app_id_ = 10; is_audio_ = true; @@ -89,17 +78,19 @@ class ResumptionDataDBTest : public ResumptionDataTest { grammar_id_ = 16; } void TearDown() OVERRIDE { - ::utils::dbms::SQLQuery query(test_db()); + utils::dbms::SQLQuery query(test_db()); EXPECT_TRUE(query.Prepare(remove_all_tables)); EXPECT_TRUE(query.Exec()); } static void SetUpTestCase() { + kDatabaseName = "resumption"; if (is_in_file) { path_ = "test_storage"; - CreateDirectory("./" + path_); - test_db_ = new ::utils::dbms::SQLDatabaseImpl(kDatabaseName); - test_db_->set_path(path_ + "/"); + CreateDirectory(file_system::CurrentWorkingDirectory() + "/" + path_); + CreateDirectory(kPath); + test_db_ = new utils::dbms::SQLDatabase(kDatabaseName); + test_db_->set_path(kPath + "/"); res_db_ = new TestResumptionDataDB(In_File_Storage); } else { res_db_ = new TestResumptionDataDB(In_Memory_Storage); @@ -110,7 +101,7 @@ class ResumptionDataDBTest : public ResumptionDataTest { EXPECT_TRUE(test_db_->IsReadWrite()); } - static ::utils::dbms::SQLDatabase* test_db_; + static utils::dbms::SQLDatabase* test_db_; static std::string kDatabaseName; static std::string path_; @@ -122,7 +113,7 @@ class ResumptionDataDBTest : public ResumptionDataTest { delete res_db_; } - ::utils::dbms::SQLDatabase* test_db() { + utils::dbms::SQLDatabase* test_db() { return test_db_; } std::string path() { @@ -130,8 +121,8 @@ class ResumptionDataDBTest : public ResumptionDataTest { } void SetZeroIgnOffTime() { - ::utils::dbms::SQLQuery query(test_db()); - EXPECT_TRUE(query.Prepare(resumption::KUpdateLastIgnOffTime)); + utils::dbms::SQLQuery query(test_db()); + EXPECT_TRUE(query.Prepare(KUpdateLastIgnOffTime)); query.Bind(0, 0); EXPECT_TRUE(query.Exec()); } @@ -189,16 +180,16 @@ class ResumptionDataDBTest : public ResumptionDataTest { void CheckCharacters(int64_t global_properties_key); void CheckVRHelpItem(int64_t global_properties_key); - void BindId(::utils::dbms::SQLQuery& query); + void BindId(utils::dbms::SQLQuery& query); }; -::utils::dbms::SQLDatabase* ResumptionDataDBTest::test_db_ = NULL; +utils::dbms::SQLDatabase* ResumptionDataDBTest::test_db_ = NULL; TestResumptionDataDB* ResumptionDataDBTest::res_db_ = NULL; std::string ResumptionDataDBTest::kDatabaseName = ""; std::string ResumptionDataDBTest::path_ = ""; void ResumptionDataDBTest::CheckSavedDB() { - ::utils::dbms::SQLQuery query_checks(test_db()); + utils::dbms::SQLQuery query_checks(test_db()); EXPECT_TRUE(query_checks.Prepare(kChecksResumptionData)); EXPECT_TRUE(query_checks.Exec()); EXPECT_EQ(1, query_checks.GetInteger(0)); @@ -215,7 +206,7 @@ void ResumptionDataDBTest::CheckSavedDB() { } void ResumptionDataDBTest::CheckExistenceApplication() { - ::utils::dbms::SQLQuery query(test_db()); + utils::dbms::SQLQuery query(test_db()); EXPECT_TRUE(query.Prepare(kCheckApplication)); query.Bind(0, kMacAddress_); query.Bind(1, policy_app_id_); @@ -224,7 +215,7 @@ void ResumptionDataDBTest::CheckExistenceApplication() { } void ResumptionDataDBTest::CheckAppData() { - ::utils::dbms::SQLQuery query(test_db()); + utils::dbms::SQLQuery query(test_db()); EXPECT_TRUE(query.Prepare(kSelectAppTable)); BindId(query); EXPECT_TRUE(query.Exec()); @@ -242,7 +233,7 @@ void ResumptionDataDBTest::CheckAppData() { } void ResumptionDataDBTest::CheckGlobalProportiesData() { - ::utils::dbms::SQLQuery select_globalproperties(test_db()); + utils::dbms::SQLQuery select_globalproperties(test_db()); EXPECT_TRUE(select_globalproperties.Prepare(kSelectCountGlobalProperties)); BindId(select_globalproperties); @@ -272,7 +263,7 @@ void ResumptionDataDBTest::CheckGlobalProportiesData() { select_globalproperties.GetString(7)); EXPECT_FALSE(select_globalproperties.IsNull(3)); - ::utils::dbms::SQLQuery select_image(test_db()); + utils::dbms::SQLQuery select_image(test_db()); EXPECT_TRUE(select_image.Prepare(kSelectImage)); select_image.Bind(0, select_globalproperties.GetLongInt(3)); EXPECT_TRUE(select_image.Exec()); @@ -282,7 +273,7 @@ void ResumptionDataDBTest::CheckGlobalProportiesData() { select_image.GetString(1)); } if (!select_globalproperties.IsNull(8)) { - ::utils::dbms::SQLQuery select_tts_chunk(test_db()); + utils::dbms::SQLQuery select_tts_chunk(test_db()); EXPECT_TRUE(select_tts_chunk.Prepare(kSelectTTSChunk)); select_tts_chunk.Bind(0, select_globalproperties.GetLongInt(8)); EXPECT_TRUE(select_tts_chunk.Exec()); @@ -295,7 +286,7 @@ void ResumptionDataDBTest::CheckGlobalProportiesData() { help_prompt_idx++; } if (!select_globalproperties.IsNull(9)) { - ::utils::dbms::SQLQuery select_tts_chunk(test_db()); + utils::dbms::SQLQuery select_tts_chunk(test_db()); EXPECT_TRUE(select_tts_chunk.Prepare(kSelectTTSChunk)); select_tts_chunk.Bind(0, select_globalproperties.GetLongInt(9)); EXPECT_TRUE(select_tts_chunk.Exec()); @@ -313,13 +304,13 @@ void ResumptionDataDBTest::CheckGlobalProportiesData() { } } void ResumptionDataDBTest::CheckVRHelpItem(int64_t global_properties_key) { - ::utils::dbms::SQLQuery checks_vrhelp_item(test_db()); + utils::dbms::SQLQuery checks_vrhelp_item(test_db()); EXPECT_TRUE(checks_vrhelp_item.Prepare(kChecksVrHelpItem)); checks_vrhelp_item.Bind(0, global_properties_key); EXPECT_TRUE(checks_vrhelp_item.Exec()); EXPECT_NE(0, checks_vrhelp_item.GetInteger(0)); if (!checks_vrhelp_item.GetInteger(0)) { - ::utils::dbms::SQLQuery select_vrhelp_item(test_db()); + utils::dbms::SQLQuery select_vrhelp_item(test_db()); EXPECT_TRUE(select_vrhelp_item.Prepare(kSelectVrHelpItem)); select_vrhelp_item.Bind(0, global_properties_key); size_t vr_help_item_idx = 0; @@ -335,13 +326,13 @@ void ResumptionDataDBTest::CheckVRHelpItem(int64_t global_properties_key) { } void ResumptionDataDBTest::CheckCharacters(int64_t global_properties_key) { - ::utils::dbms::SQLQuery checks_characters(test_db()); + utils::dbms::SQLQuery checks_characters(test_db()); EXPECT_TRUE(checks_characters.Prepare(kChecksCharacter)); checks_characters.Bind(0, global_properties_key); EXPECT_TRUE(checks_characters.Exec()); EXPECT_NE(0, checks_characters.GetInteger(0)); if (!checks_characters.GetInteger(0)) { - ::utils::dbms::SQLQuery select_characters(test_db()); + utils::dbms::SQLQuery select_characters(test_db()); EXPECT_TRUE(select_characters.Prepare(kSelectCharacter)); select_characters.Bind(0, global_properties_key); size_t characters_idx = 0; @@ -355,7 +346,7 @@ void ResumptionDataDBTest::CheckCharacters(int64_t global_properties_key) { } void ResumptionDataDBTest::CheckSubmenuData() { - ::utils::dbms::SQLQuery select_submenu(test_db()); + utils::dbms::SQLQuery select_submenu(test_db()); EXPECT_TRUE(select_submenu.Prepare(kSelectCountSubMenu)); BindId(select_submenu); @@ -378,7 +369,7 @@ void ResumptionDataDBTest::CheckSubmenuData() { } void ResumptionDataDBTest::CheckCommandsData() { - ::utils::dbms::SQLQuery select_commands(test_db()); + utils::dbms::SQLQuery select_commands(test_db()); EXPECT_TRUE(select_commands.Prepare(kSelectCountCommands)); BindId(select_commands); @@ -427,7 +418,7 @@ void ResumptionDataDBTest::CheckCommandsData() { } void ResumptionDataDBTest::CheckChoiceSetData() { - ::utils::dbms::SQLQuery select_choice_set(test_db()); + utils::dbms::SQLQuery select_choice_set(test_db()); EXPECT_TRUE(select_choice_set.Prepare(kSelectCountChoiceSet)); BindId(select_choice_set); EXPECT_TRUE(select_choice_set.Exec()); @@ -478,7 +469,7 @@ void ResumptionDataDBTest::CheckChoiceSetData() { EXPECT_EQ(tertiary_text, select_choice_set.GetString(7)); EXPECT_FALSE(select_choice_set.IsNull(8)); - ::utils::dbms::SQLQuery select_image(test_db()); + utils::dbms::SQLQuery select_image(test_db()); EXPECT_TRUE(select_image.Prepare(kSelectImage)); select_image.Bind(0, select_choice_set.GetLongInt(8)); EXPECT_TRUE(select_image.Exec()); @@ -515,7 +506,7 @@ void ResumptionDataDBTest::CheckChoiceSetData() { } void ResumptionDataDBTest::CheckAppFilesData() { - ::utils::dbms::SQLQuery query(test_db()); + utils::dbms::SQLQuery query(test_db()); EXPECT_TRUE(query.Prepare(kSelectCountFiles)); BindId(query); EXPECT_TRUE(query.Exec()); @@ -538,414 +529,13 @@ void ResumptionDataDBTest::CheckAppFilesData() { } } -void ResumptionDataDBTest::BindId(::utils::dbms::SQLQuery& query) { +void ResumptionDataDBTest::BindId(utils::dbms::SQLQuery& query) { query.Bind(0, policy_app_id_); query.Bind(1, kMacAddress_); } -class ResumptionDBTest_WithMockStorage : public ::testing::Test { - public: - ResumptionDBTest_WithMockStorage() - // Mock database will be destroyed by resumption_data_db in ~Destr. - : mock_database_(new MockSQLDatabase()), - resumption_data_db_(mock_database_, mock_am_) {} - - void SetUp() OVERRIDE { - ON_CALL(mock_am_settings_, attempts_to_open_resumption_db()) - .WillByDefault(Return(1)); - ON_CALL(mock_am_settings_, open_attempt_timeout_ms_resumption_db()) - .WillByDefault(Return(1)); - ON_CALL(mock_am_, get_settings()) - .WillByDefault(ReturnRef(mock_am_settings_)); - } - void TearDown() OVERRIDE { - EXPECT_CALL(*mock_database_, Close()); - } - - void InitRealDB() { - real_db_.Open(); - - EXPECT_CALL(*mock_database_, Open()).WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, conn()) - .WillRepeatedly(Return(real_db_.conn())); - - EXPECT_TRUE(resumption_data_db_.Init()); - } - - void ApplicationParamsCreateCalls(MockApplication* mock_app) { - EXPECT_CALL(*mock_app, curHash()).WillOnce(ReturnRef(kEmptyString_)); - EXPECT_CALL(*mock_app, get_grammar_id()).WillOnce(Return(1u)); - EXPECT_CALL(*mock_app, app_id()).WillRepeatedly(Return(1u)); - EXPECT_CALL(*mock_app, hmi_app_id()).WillOnce(Return(1u)); - EXPECT_CALL(*mock_app, IsAudioApplication()).WillOnce(Return(true)); - EXPECT_CALL(mock_am_, IsAppSubscribedForWayPoints(_)) - .WillOnce(Return(false)); - } - - void PrepareApplicationSO(smart_objects::SmartObject& app_data) { - app_data[ ::application_manager::strings::app_id] = "1"; - app_data[ ::application_manager::strings::hash_id] = "1"; - app_data[ ::application_manager::strings::grammar_id] = 1; - app_data[ ::application_manager::strings::connection_key] = 1; - app_data[ ::application_manager::strings::hmi_app_id] = 1; - app_data[ ::application_manager::strings::hmi_level] = HMILevel::HMI_FULL; - app_data[ ::application_manager::strings::is_media_application] = true; - app_data[ ::application_manager::strings::subscribed_for_way_points] = - false; - app_data[ ::application_manager::strings::ign_off_count] = 0; - app_data[ ::application_manager::strings::device_id] = "0"; - } - - void GetCorrectAppData(smart_objects::SmartObject& data) { - data = - smart_objects::SmartObject(smart_objects::SmartType::SmartType_Array); - data[0] = smart_objects::SmartObject(smart_objects::SmartType_Map); - - smart_objects::SmartObject& application_data = data[0]; - - application_data["globalProperties"] = - smart_objects::SmartObject(smart_objects::SmartType_Map); - application_data["applicationFiles"] = - smart_objects::SmartObject(smart_objects::SmartType_Array); - application_data["applicationSubMenus"] = - smart_objects::SmartObject(smart_objects::SmartType_Array); - application_data["applicationCommands"] = - smart_objects::SmartObject(smart_objects::SmartType_Array); - application_data["subscribtions"] = - smart_objects::SmartObject(smart_objects::SmartType_Map); - application_data["applicationChoiceSets"] = - smart_objects::SmartObject(smart_objects::SmartType_Array); - - // Filling app_data with correct application values - PrepareApplicationSO(application_data); - } - - void TestIncorrectAdditionalAppDataForWriting(const std::string& data_key) { - // Processing of Application_data needed real DB frow write - InitRealDB(); - // Correct data smart object - smart_objects::SmartObject data; - GetCorrectAppData(data); - smart_objects::SmartObject& application_data = data[0]; - - application_data[data_key][0] = kEmptyString_; - - EXPECT_CALL(*mock_database_, BeginTransaction()).Times(1); - EXPECT_CALL(*mock_database_, conn()) - // Two times return reall db connection to correct writing - // of app_data to DB - .WillOnce(Return(real_db_.conn())) - .WillOnce(Return(real_db_.conn())) - // Null connection for unsuccessful processing of FilesData - .WillOnce(ReturnNull()); - EXPECT_CALL(*mock_database_, RollbackTransaction()).Times(1); - EXPECT_FALSE(resumption_data_db_.SaveAllData(data)); - } - - void AddApplicationsToDB(smart_objects::SmartObject& apps) { - EXPECT_CALL(*mock_database_, BeginTransaction()).Times(1); - EXPECT_CALL(*mock_database_, conn()) - .WillRepeatedly(Return(real_db_.conn())); - EXPECT_CALL(*mock_database_, RollbackTransaction()).Times(0); - EXPECT_CALL(*mock_database_, CommitTransaction()).Times(1); - - EXPECT_TRUE(resumption_data_db_.SaveAllData(apps)); - } - - MockSQLDatabase* mock_database_; - NiceMock mock_am_; - NiceMock - mock_am_settings_; - ResumptionDataDB resumption_data_db_; - ::utils::dbms::SQLDatabaseImpl real_db_; - const std::string kEmptyString_ = ""; -}; - -TEST_F(ResumptionDBTest_WithMockStorage, Init_DBNotOpened_AttemptsOpened) { - EXPECT_CALL(*mock_database_, Open()) - .WillOnce(Return(false)) - .WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(false)); - - EXPECT_FALSE(resumption_data_db_.Init()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, - Init_DBNotOpened_AttemptsNotOpenedToo) { - EXPECT_CALL(*mock_database_, Open()).WillRepeatedly(Return(false)); - EXPECT_CALL(*mock_database_, IsReadWrite()).Times(0); - - EXPECT_FALSE(resumption_data_db_.Init()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, Init_CannotCreateSchema) { - EXPECT_CALL(*mock_database_, Open()).WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull()); - - EXPECT_FALSE(resumption_data_db_.Init()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, Init_CannotChecksResumptionData) { - ::utils::dbms::SQLDatabaseImpl real_db; - real_db.Open(); - - EXPECT_CALL(*mock_database_, Open()).WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, conn()) - .WillOnce(Return(real_db.conn())) - .WillOnce(ReturnNull()); - - EXPECT_FALSE(resumption_data_db_.Init()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, Init_CannotInsertInitData) { - ::utils::dbms::SQLDatabaseImpl real_db; - real_db.Open(); - - EXPECT_CALL(*mock_database_, Open()).WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, conn()) - .WillOnce(Return(real_db.conn())) - .WillOnce(Return(real_db.conn())) - .WillOnce(ReturnNull()); - - EXPECT_FALSE(resumption_data_db_.Init()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, Init_Positive) { - ::utils::dbms::SQLDatabaseImpl real_db; - real_db.Open(); - - EXPECT_CALL(*mock_database_, Open()).WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(true)); - EXPECT_CALL(*mock_database_, conn()).WillRepeatedly(Return(real_db.conn())); - - EXPECT_TRUE(resumption_data_db_.Init()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, RefreshDB_CannotDropSchema) { - EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull()); - - EXPECT_FALSE(resumption_data_db_.RefreshDB()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, RefreshDB_CannotCreateSchema) { - ::utils::dbms::SQLDatabaseImpl real_db; - real_db.Open(); - - EXPECT_CALL(*mock_database_, conn()) - .WillOnce(Return(real_db.conn())) - .WillOnce(ReturnNull()); - - EXPECT_FALSE(resumption_data_db_.RefreshDB()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, RefreshDB_CannotInsertInitData) { - ::utils::dbms::SQLDatabaseImpl real_db; - real_db.Open(); - - EXPECT_CALL(*mock_database_, conn()) - .WillOnce(Return(real_db.conn())) - .WillOnce(Return(real_db.conn())) - .WillOnce(ReturnNull()); - - EXPECT_FALSE(resumption_data_db_.RefreshDB()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, RefreshDB_Positive) { - ::utils::dbms::SQLDatabaseImpl real_db; - real_db.Open(); - - EXPECT_CALL(*mock_database_, conn()).WillRepeatedly(Return(real_db.conn())); - - EXPECT_TRUE(resumption_data_db_.RefreshDB()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, - IsDBVersionActual_CannotSelectDBVersion) { - EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull()); - - EXPECT_FALSE(resumption_data_db_.IsDBVersionActual()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, IsDBVersionActual_Positive) { - ::utils::dbms::SQLDatabaseImpl real_db; - real_db.Open(); - - EXPECT_CALL(*mock_database_, conn()).WillOnce(Return(real_db.conn())); - - EXPECT_FALSE(resumption_data_db_.IsDBVersionActual()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, UpdateDBVersion_CannotPrepare) { - EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull()); - - EXPECT_FALSE(resumption_data_db_.UpdateDBVersion()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, UpdateDBVersion_Positive) { - ::utils::dbms::SQLDatabaseImpl real_db; - real_db.Open(); - - EXPECT_CALL(*mock_database_, conn()).WillOnce(Return(real_db.conn())); - - EXPECT_FALSE(resumption_data_db_.UpdateDBVersion()); -} - -TEST_F(ResumptionDBTest_WithMockStorage, - SaveApplication_AppNotChanged_AppExist) { - InitRealDB(); - MockApplication* app_ptr = new MockApplication(); - application_manager::ApplicationSharedPtr app_sptr(app_ptr); - - const std::string kPolicyAppId = "1"; - const std::string kMacAdress = "xx"; - - ApplicationParamsCreateCalls(app_ptr); - - EXPECT_CALL(*app_ptr, policy_app_id()).WillRepeatedly(Return(kPolicyAppId)); - EXPECT_CALL(*app_ptr, mac_address()).WillRepeatedly(ReturnRef(kMacAdress)); - EXPECT_CALL(*app_ptr, is_application_data_changed()) - .WillRepeatedly(Return(false)); - EXPECT_CALL(*app_ptr, hmi_level()).WillRepeatedly(Return(HMILevel::HMI_FULL)); - EXPECT_CALL(*mock_database_, conn()).WillRepeatedly(Return(real_db_.conn())); - EXPECT_CALL(*mock_database_, Backup()).Times(2); - - // App_not exists -> adding it to db - resumption_data_db_.SaveApplication(app_sptr); - // App exists update it in DB - resumption_data_db_.SaveApplication(app_sptr); -} - -TEST_F(ResumptionDBTest_WithMockStorage, - SaveApplication_AppNotChanged_AppExist_DBProblem) { - InitRealDB(); - MockApplication* app_ptr = new MockApplication(); - application_manager::ApplicationSharedPtr app_sptr(app_ptr); - - const std::string kPolicyAppId = "1"; - const std::string kMacAdress = "xx"; - - ApplicationParamsCreateCalls(app_ptr); - - EXPECT_CALL(*app_ptr, policy_app_id()).WillRepeatedly(Return(kPolicyAppId)); - EXPECT_CALL(*app_ptr, mac_address()).WillRepeatedly(ReturnRef(kMacAdress)); - EXPECT_CALL(*app_ptr, is_application_data_changed()) - .WillRepeatedly(Return(false)); - EXPECT_CALL(*app_ptr, hmi_level()).WillRepeatedly(Return(HMILevel::HMI_FULL)); - EXPECT_CALL(*mock_database_, conn()) - .WillOnce(Return(real_db_.conn())) - .WillOnce(Return(real_db_.conn())) - .WillOnce(Return(real_db_.conn())) - .WillOnce(ReturnNull()); - EXPECT_CALL(*mock_database_, Backup()).Times(1); - - // App_not exists -> adding it to db - resumption_data_db_.SaveApplication(app_sptr); - // App exists update it in DB - resumption_data_db_.SaveApplication(app_sptr); -} - -TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_DataNotArray) { - smart_objects::SmartObject data(smart_objects::SmartType::SmartType_Map); - - EXPECT_CALL(*mock_database_, BeginTransaction()).Times(0); - - EXPECT_FALSE(resumption_data_db_.SaveAllData(data)); -} - -TEST_F(ResumptionDBTest_WithMockStorage, - SaveAllData_IncorrectGlobalProperties) { - // Correct smart type - smart_objects::SmartObject data(smart_objects::SmartType::SmartType_Array); - data[0] = smart_objects::SmartObject(smart_objects::SmartType_Map); - smart_objects::SmartObject& application_data = data[0]; - - application_data["globalProperties"]["property_1"] = 1u; - - EXPECT_CALL(*mock_database_, BeginTransaction()).Times(1); - EXPECT_CALL(*mock_database_, RollbackTransaction()).Times(1); - // Will create error while processing globalProperties - EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull()); - - EXPECT_FALSE(resumption_data_db_.SaveAllData(data)); -} - -TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_IncorrectApplicationData) { - // Correct smart type - smart_objects::SmartObject data(smart_objects::SmartType::SmartType_Array); - data[0] = smart_objects::SmartObject(smart_objects::SmartType_Map); - smart_objects::SmartObject& application_data = data[0]; - // When global properties empty processing returns true - application_data["globalProperties"] = - smart_objects::SmartObject(smart_objects::SmartType_Map); - - // App data havent any fields for application (app_id, hmi_level) - - EXPECT_CALL(*mock_database_, BeginTransaction()).Times(1); - EXPECT_CALL(*mock_database_, RollbackTransaction()).Times(1); - - EXPECT_FALSE(resumption_data_db_.SaveAllData(data)); -} - -TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_IncorrectFilesData) { - TestIncorrectAdditionalAppDataForWriting("applicationFiles"); -} - -TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_IncorrectSubMenu) { - TestIncorrectAdditionalAppDataForWriting("applicationSubMenus"); -} - -TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_IncorrectCommandsData) { - TestIncorrectAdditionalAppDataForWriting("applicationCommands"); -} - -TEST_F(ResumptionDBTest_WithMockStorage, - SaveAllData_IncorrectSubscriptionsData) { - TestIncorrectAdditionalAppDataForWriting("subscribtions"); -} - -TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_IncorrectChoiceSetData) { - TestIncorrectAdditionalAppDataForWriting("applicationChoiceSets"); -} - -TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_Positive) { - // Processing of Application_data needed real DB frow write - InitRealDB(); - // Correct smart type - smart_objects::SmartObject data; - GetCorrectAppData(data); - - AddApplicationsToDB(data); -} - -TEST_F(ResumptionDBTest_WithMockStorage, GetAllData_DBProblem) { - InitRealDB(); - EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull()); - - smart_objects::SmartObject data; - resumption_data_db_.GetAllData(data); -} - -TEST_F(ResumptionDBTest_WithMockStorage, GetAllData_Positive) { - InitRealDB(); - smart_objects::SmartObject input_data; - GetCorrectAppData(input_data); - AddApplicationsToDB(input_data); - - smart_objects::SmartObject output_data; - EXPECT_TRUE(resumption_data_db_.GetAllData(output_data)); - - // Timestamp added with writing to DB - output_data[0].erase("timeStamp"); - - EXPECT_TRUE(input_data == output_data); -} - TEST_F(ResumptionDataDBTest, Init) { - ::utils::dbms::SQLQuery query_checks(test_db()); + utils::dbms::SQLQuery query_checks(test_db()); EXPECT_TRUE(res_db()->Init()); diff --git a/src/components/application_manager/test/resumption/resumption_data_json_test.cc b/src/components/application_manager/test/resumption/resumption_data_json_test.cc index 8a2b5a7f24..2bbb146bed 100644 --- a/src/components/application_manager/test/resumption/resumption_data_json_test.cc +++ b/src/components/application_manager/test/resumption/resumption_data_json_test.cc @@ -39,7 +39,6 @@ #include "application_manager/mock_resumption_data.h" #include "interfaces/MOBILE_API.h" #include "resumption/last_state.h" -#include "utils/json_utils.h" #include "application_manager/resumption_data_test.h" #include "formatters/CFormatterJsonBase.h" @@ -79,20 +78,18 @@ class ResumptionDataJsonTest : public ResumptionDataTest { hmi_level_ = HMILevel::eType::HMI_FULL; hmi_app_id_ = 8; ign_off_count_ = 0; - is_subscribed_for_way_points_ = true; } void CheckSavedJson() { - utils::json::JsonValue& dictionary = last_state_.dictionary(); - // std::cout << dictionary.ToJson() << std::endl; - ASSERT_TRUE(dictionary[am::strings::resumption].IsObject()); + Value& dictionary = last_state_.dictionary; + ASSERT_TRUE(dictionary[am::strings::resumption].isObject()); ASSERT_TRUE( dictionary[am::strings::resumption][am::strings::resume_app_list] - .IsArray()); - utils::json::JsonValueRef resume_app_list = + .isArray()); + Value& resume_app_list = dictionary[am::strings::resumption][am::strings::resume_app_list]; sm::SmartObject res_app_list; - for (uint32_t i = 0; i < resume_app_list.Size(); i++) { + for (uint32_t i = 0; i < resume_app_list.size(); i++) { Formatters::CFormatterJsonBase::jsonValueToObj(resume_app_list[i], res_app_list); CheckSavedApp(res_app_list); @@ -100,14 +97,18 @@ class ResumptionDataJsonTest : public ResumptionDataTest { } void SetZeroIgnOff() { - utils::json::JsonValue& dictionary = last_state_.dictionary(); - utils::json::JsonValueRef res = dictionary[am::strings::resumption]; - res[am::strings::last_ign_off_time] = 0ll; + Value& dictionary = last_state_.dictionary; + Value& res = dictionary[am::strings::resumption]; + res[am::strings::last_ign_off_time] = 0; last_state_.SaveToFileSystem(); } resumption::LastState last_state_; ResumptionDataJson res_json; + + application_manager_test::MockApplicationManagerSettings + mock_application_manager_settings_; + std::string policy_app_id_; }; TEST_F(ResumptionDataJsonTest, SaveApplication) { @@ -223,10 +224,6 @@ TEST_F(ResumptionDataJsonTest, UpdateHmiLevel) { CheckSavedJson(); } -TEST_F(ResumptionDataJsonTest, Init) { - EXPECT_TRUE(res_json.Init()); -} - TEST_F(ResumptionDataJsonTest, IsHMIApplicationIdExist_AppIsSaved) { PrepareData(); res_json.SaveApplication(app_mock); @@ -286,10 +283,6 @@ TEST_F(ResumptionDataJsonTest, OnSuspendFourTimes) { EXPECT_TRUE(-1 != res_json.IsApplicationSaved(policy_app_id_, kMacAddress_)); } -TEST_F(ResumptionDataJsonTest, Persist) { - res_json.Persist(); -} - TEST_F(ResumptionDataJsonTest, OnSuspendOnAwake) { PrepareData(); SetZeroIgnOff(); diff --git a/src/components/application_manager/test/resumption_sql_queries_test.cc b/src/components/application_manager/test/resumption_sql_queries_test.cc index 10c3199d54..d02b073099 100644 --- a/src/components/application_manager/test/resumption_sql_queries_test.cc +++ b/src/components/application_manager/test/resumption_sql_queries_test.cc @@ -37,8 +37,7 @@ #include #include "gtest/gtest.h" -#include "utils/sqlite_wrapper/sql_database_impl.h" -#include "utils/sqlite_wrapper/sql_query.h" +#include "utils/sql_wrapper.h" #include "utils/file_system.h" #include "application_manager/resumption/resumption_sql_queries.h" #include "policy/sql_pt_queries.h" @@ -51,7 +50,6 @@ using namespace ::resumption; using std::string; using std::pair; -using utils::dbms::SQLDatabaseImpl; using utils::dbms::SQLDatabase; using utils::dbms::SQLQuery; @@ -116,7 +114,7 @@ class ResumptionSqlQueriesTest : public ::testing::Test { static const int timeStamp2; static void SetUpTestCase() { - db_ = new SQLDatabaseImpl(); + db_ = new SQLDatabase(db_path, connection_name); ASSERT_TRUE(db_->Open()); ASSERT_TRUE(db_->IsReadWrite()); SQLQuery query(db_); diff --git a/src/components/include/test/utils/mock_sql_database.h b/src/components/include/test/utils/mock_sql_database.h deleted file mode 100644 index ca121b4828..0000000000 --- a/src/components/include/test/utils/mock_sql_database.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2016, Ford Motor Company - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of the Ford Motor Company nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SRC_COMPONENTS_INCLUDE_TEST_UTILS_MOCK_SQL_DATABASE_H_ -#define SRC_COMPONENTS_INCLUDE_TEST_UTILS_MOCK_SQL_DATABASE_H_ - -#include - -#include "utils/sql_database.h" - -struct sqlite3; - -namespace test { -namespace components { -namespace utils { -namespace dbms { - -class MockSQLDatabase : public ::utils::dbms::SQLDatabase { - public: - MOCK_METHOD0(Open, bool()); - MOCK_METHOD0(Close, void()); - MOCK_METHOD0(BeginTransaction, bool()); - MOCK_METHOD0(CommitTransaction, bool()); - MOCK_METHOD0(RollbackTransaction, bool()); - MOCK_CONST_METHOD0(LastError, ::utils::dbms::SQLError()); - MOCK_METHOD1(set_path, void(const std::string& path)); - MOCK_CONST_METHOD0(get_path, std::string()); - MOCK_METHOD0(IsReadWrite, bool()); - MOCK_METHOD0(Backup, bool()); - MOCK_CONST_METHOD0(conn, sqlite3*()); - MOCK_CONST_METHOD0(HasErrors, bool()); -}; - -} // namespace dbms -} // namespace utils -} // namespace components -} // namespace test - -#endif // SRC_COMPONENTS_INCLUDE_TEST_UTILS_MOCK_SQL_DATABASE_H_ diff --git a/src/components/include/utils/sql_database.h b/src/components/include/utils/sql_database.h deleted file mode 100644 index 3b87a07f9c..0000000000 --- a/src/components/include/utils/sql_database.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2016, Ford Motor Company - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of the Ford Motor Company nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SRC_COMPONENTS_INCLUDE_UTILS_SQL_DATABASE_H_ -#define SRC_COMPONENTS_INCLUDE_UTILS_SQL_DATABASE_H_ - -#include - -struct sqlite3; - -namespace utils { -namespace dbms { - -class SQLQuery; -class SQLError; - -/** - * Represents a connection to a database. - */ -class SQLDatabase { - public: - virtual ~SQLDatabase() {} - /** - * Opens connection to the temporary in-memory database - * @return true if successfully - */ - virtual bool Open() = 0; - - /** - * Closes connection to the database - */ - virtual void Close() = 0; - - /** - * Begins a transaction on the database - * @return true if successfully - */ - virtual bool BeginTransaction() = 0; - - /** - * Commits a transaction to the database - * @return true if successfully - */ - virtual bool CommitTransaction() = 0; - - /** - * Rolls back a transaction on the database - * @return true if successfully - */ - virtual bool RollbackTransaction() = 0; - - /** - * Gets information about the last error that occurred on the database - * @return last error - */ - virtual SQLError LastError() const = 0; - - /** - * @brief HasErrors Indicate the status of the last executed operation. - * - * @return true in case last operation has any errors, false otherwise. - */ - virtual bool HasErrors() const = 0; - - /** - * Sets path to database - * If the database is already opened then need reopen it - */ - virtual void set_path(const std::string& path) = 0; - - /** - * @brief get_path databse location path. - * - * @return the path to the database location - */ - virtual std::string get_path() const = 0; - - /** - * Checks if database is read/write - * @return true if database is read/write - */ - virtual bool IsReadWrite() = 0; - - /** - * Call backup for opened DB - */ - virtual bool Backup() = 0; - - /** - * Gets connection to the SQLite database - * @return pointer to connection - */ - virtual sqlite3* conn() const = 0; -}; - -} // namespace dbms -} // namespace utils - -#endif // SRC_COMPONENTS_INCLUDE_UTILS_SQL_DATABASE_H_ diff --git a/src/components/policy/include/policy/sql_pt_representation.h b/src/components/policy/include/policy/sql_pt_representation.h index 59529b0b57..2710a7d4a5 100644 --- a/src/components/policy/include/policy/sql_pt_representation.h +++ b/src/components/policy/include/policy/sql_pt_representation.h @@ -67,12 +67,9 @@ class Query : public utils::dbms::SQLQuery { }; class SQLPTRepresentation : public virtual PTRepresentation { public: - SQLPTRepresentation(); - SQLPTRepresentation(bool in_memory); SQLPTRepresentation(const std::string& app_storage_folder, uint16_t attempts_to_open_policy_db, uint16_t open_attempt_timeout_ms); - ~SQLPTRepresentation(); virtual void CheckPermissions(const PTString& app_id, const PTString& hmi_level, diff --git a/src/components/policy/include/policy/sql_wrapper.h b/src/components/policy/include/policy/sql_wrapper.h new file mode 100644 index 0000000000..ccdaf537b0 --- /dev/null +++ b/src/components/policy/include/policy/sql_wrapper.h @@ -0,0 +1,44 @@ +/* + Copyright (c) 2013, Ford Motor Company + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following + disclaimer in the documentation and/or other materials provided with the + distribution. + + Neither the name of the Ford Motor Company nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_ +#define SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_ + +#if __QNX__ +#include "utils/qdb_wrapper/sql_database.h" +#include "utils/qdb_wrapper/sql_query.h" +#else // __QNX__ +#include "utils/sqlite_wrapper/sql_database.h" +#include "utils/sqlite_wrapper/sql_query.h" +#endif // __QNX__ + +#endif // SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_ diff --git a/src/components/policy/src/sql_pt_ext_representation.cc b/src/components/policy/src/sql_pt_ext_representation.cc index f32a129797..fb763fd6ee 100644 --- a/src/components/policy/src/sql_pt_ext_representation.cc +++ b/src/components/policy/src/sql_pt_ext_representation.cc @@ -33,7 +33,7 @@ #include #include "utils/logger.h" #include "policy/sql_pt_ext_representation.h" -#include "utils/sql_wrapper.h" +#include "policy/sql_wrapper.h" #include "policy/sql_pt_queries.h" #include "policy/sql_pt_ext_queries.h" #include "policy/policy_helper.h" diff --git a/src/components/policy/src/sql_pt_representation.cc b/src/components/policy/src/sql_pt_representation.cc index afd804c722..1cbcd6ccf5 100644 --- a/src/components/policy/src/sql_pt_representation.cc +++ b/src/components/policy/src/sql_pt_representation.cc @@ -45,7 +45,7 @@ #include "utils/file_system.h" #include "utils/gen_hash.h" #include "policy/sql_pt_representation.h" -#include "utils/sql_wrapper.h" +#include "policy/sql_wrapper.h" #include "policy/sql_pt_queries.h" #include "policy/policy_helper.h" #include "policy/cache_manager.h" @@ -69,32 +69,15 @@ void InsertUnique(K value, T* array) { const char* kDatabaseName = "policy"; } // namespace -SQLPTRepresentation::SQLPTRepresentation() - : db_(new utils::dbms::SQLDatabaseImpl(kDatabaseName)) { - is_in_memory = false; -} - -SQLPTRepresentation::SQLPTRepresentation(bool in_memory) { - is_in_memory = in_memory; -#ifdef __QNX__ - db_ = new utils::dbms::SQLDatabaseImpl(kDatabaseName); -#else // __QNX__ - if (in_memory) { - db_ = new utils::dbms::SQLDatabaseImpl(); - } else { - db_ = new utils::dbms::SQLDatabaseImpl(kDatabaseName); - } -#endif // __QNX__ -} - SQLPTRepresentation::SQLPTRepresentation(const std::string& app_storage_folder, uint16_t attempts_to_open_policy_db, uint16_t open_attempt_timeout_ms) #if defined(__QNX__) - : db_(new utils::dbms::SQLDatabaseImpl(kDatabaseName) + : db_(new utils::dbms::SQLDatabase(kDatabaseName) #else - : db_(new utils::dbms::SQLDatabaseImpl( - file_system::ConcatPath(app_storage_folder, kDatabaseName))) + : db_(new utils::dbms::SQLDatabase( + file_system::ConcatPath(app_storage_folder, kDatabaseName), + "PolicyDatabase")) #endif {} @@ -1641,15 +1624,14 @@ const int32_t SQLPTRepresentation::GetDBVersion() const { } utils::dbms::SQLDatabase* SQLPTRepresentation::db() const { -#ifdef __QNX__ - utils::dbms::SQLDatabase* db = - new utils::dbms::SQLDatabaseImpl(kDatabaseName); +#if defined(__QNX__) + utils::dbms::SQLDatabase* db = new utils::dbms::SQLDatabase(kDatabaseName); const bool result = db->Open(); DCHECK(result); return db; #else return db_; -#endif // __QNX__ +#endif } bool SQLPTRepresentation::CopyApplication(const std::string& source, diff --git a/src/components/policy/test/policy_manager_impl_test.cc b/src/components/policy/test/policy_manager_impl_test.cc index c1ff36a61d..b5fbdba7bc 100644 --- a/src/components/policy/test/policy_manager_impl_test.cc +++ b/src/components/policy/test/policy_manager_impl_test.cc @@ -51,9 +51,7 @@ #include "policy/mock_policy_listener.h" #include "policy/mock_cache_manager.h" #include "policy/mock_update_status_manager.h" -#include "utils/sql_wrapper.h" -#include "utils/sql_wrapper.h" #include "utils/macro.h" #include "utils/file_system.h" #include "utils/date_time.h" diff --git a/src/components/utils/include/utils/json_utils.h b/src/components/utils/include/utils/json_utils.h index 2f7d398592..f437049a82 100644 --- a/src/components/utils/include/utils/json_utils.h +++ b/src/components/utils/include/utils/json_utils.h @@ -256,8 +256,6 @@ class JsonValueRef { JsonValueRef Append(const JsonValue& value); - void RemoveMember(const char* key); - void Clear(); bool IsValid() const; diff --git a/src/components/utils/include/utils/qdb_wrapper/sql_database.h b/src/components/utils/include/utils/qdb_wrapper/sql_database.h new file mode 100644 index 0000000000..0130e6cf53 --- /dev/null +++ b/src/components/utils/include/utils/qdb_wrapper/sql_database.h @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2015, Ford Motor Company + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the Ford Motor Company nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_H_ +#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_H_ + +#include +#include +#include "qdb_wrapper/sql_error.h" +#include "utils/lock.h" + +namespace utils { +namespace dbms { + +class SQLQuery; + +/** + * Represents a connection to a database. + */ +class SQLDatabase { + public: + explicit SQLDatabase(const std::string& db_name); + ~SQLDatabase(); + + /** + * Opens connection to the temporary in-memory database + * @return true if successfully + */ + bool Open(); + + /** + * Closes connection to the database + */ + void Close(); + + /** + * Begins a transaction on the database + * @return true if successfully + */ + bool BeginTransaction(); + + /** + * Commits a transaction to the database + * @return true if successfully + */ + bool CommitTransaction(); + + /** + * Rolls back a transaction on the database + * @return true if successfully + */ + bool RollbackTransaction(); + + /** + * Gets information about the last error that occurred on the database + * @return last error + */ + SQLError LastError() const; + + /** + * @brief HasErrors Indicate the status of the last executed operation. + * + * @return true in case last operation has any errors, false otherwise. + */ + bool HasErrors() const; + + /** + * Call backup for opened DB + */ + bool Backup(); + + protected: + /** + * Gets connection to the SQLite database + * @return pointer to connection + */ + qdb_hdl_t* conn() const; + + private: + /** + * The connection to the SQLite database + */ + qdb_hdl_t* conn_; + + /** + * Lock for guarding connection to database + */ + sync_primitives::Lock conn_lock_; + + /** + * The database name + */ + std::string db_name_; + + /** + * The last error that occurred on the database + */ + Error error_; + + /** + * Execs query for internal using in this class + * @param query sql query without return results + * @return true if query was executed successfully + */ + inline bool Exec(const std::string& query); + + friend class SQLQuery; +}; + +} // namespace dbms +} // namespace utils + +#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_H_ diff --git a/src/components/utils/include/utils/qdb_wrapper/sql_database_impl.h b/src/components/utils/include/utils/qdb_wrapper/sql_database_impl.h deleted file mode 100644 index bdcc0929f1..0000000000 --- a/src/components/utils/include/utils/qdb_wrapper/sql_database_impl.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2016, Ford Motor Company - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of the Ford Motor Company nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_IMPL_H_ -#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_IMPL_H_ - -#include -#include -#include "utils/sql_database.h" -#include "qdb_wrapper/sql_error.h" -#include "utils/lock.h" - -namespace utils { -namespace dbms { - -class SQLQuery; - -/** - * Represents a connection to a database. - */ -class SQLDatabaseImpl : public SQLDatabase { - public: - explicit SQLDatabaseImpl(const std::string& db_name); - ~SQLDatabaseImpl(); - - /** - * Opens connection to the temporary in-memory database - * @return true if successfully - */ - bool Open() OVERRIDE; - - /** - * Closes connection to the database - */ - void Close() OVERRIDE; - - /** - * Begins a transaction on the database - * @return true if successfully - */ - bool BeginTransaction() OVERRIDE; - - /** - * Commits a transaction to the database - * @return true if successfully - */ - bool CommitTransaction() OVERRIDE; - - /** - * Rolls back a transaction on the database - * @return true if successfully - */ - bool RollbackTransaction() OVERRIDE; - - /** - * Gets information about the last error that occurred on the database - * @return last error - */ - SQLError LastError() const OVERRIDE; - - /** - * @brief HasErrors Indicate the status of the last executed operation. - * - * @return true in case last operation has any errors, false otherwise. - */ - bool HasErrors() const; - - /** - * Call backup for opened DB - */ - bool Backup(); - - std::string get_path() const OVERRIDE; - - /** - * Gets connection to the SQLite database - * @return pointer to connection - */ - qdb_hdl_t* conn() const OVERRIDE; - - private: - /** - * The connection to the SQLite database - */ - qdb_hdl_t* conn_; - - /** - * Lock for guarding connection to database - */ - sync_primitives::Lock conn_lock_; - - /** - * The database name - */ - std::string db_name_; - - /** - * The last error that occurred on the database - */ - Error error_; - - /** - * Execs query for internal using in this class - * @param query sql query without return results - * @return true if query was executed successfully - */ - inline bool Exec(const std::string& query); - - friend class SQLQuery; -}; - -} // namespace dbms -} // namespace utils - -#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_IMPL_H_ diff --git a/src/components/utils/include/utils/sql_qt_wrapper/sql_database.h b/src/components/utils/include/utils/sql_qt_wrapper/sql_database.h new file mode 100644 index 0000000000..d12c4381d4 --- /dev/null +++ b/src/components/utils/include/utils/sql_qt_wrapper/sql_database.h @@ -0,0 +1,108 @@ +#ifndef SRC_COMPONENTS_POLICY_SQLITE_WRAPPER_INCLUDE_SQL_QT_WRAPPER_SQL_DATABASE +#define SRC_COMPONENTS_POLICY_SQLITE_WRAPPER_INCLUDE_SQL_QT_WRAPPER_SQL_DATABASE + +#include + +#include + +#include "utils/lock.h" +#include "utils/sql_qt_wrapper/sql_error.h" + +namespace utils { +namespace dbms { + +/** + * Represents a connection to a database. + */ +class SQLDatabase { + public: + SQLDatabase(); + SQLDatabase(const std::string& database_path, + const std::string& connection_name); + ~SQLDatabase(); + + /** + * Opens connection to the temporary in-memory database + * @return true if successfully + */ + bool Open(); + + /** + * Closes connection to the database + */ + void Close(); + + /** + * Begins a transaction on the database + * @return true if successfully + */ + bool BeginTransaction(); + + /** + * Commits a transaction to the database + * @return true if successfully + */ + bool CommitTransaction(); + + /** + * Rolls back a transaction on the database + * @return true if successfully + */ + bool RollbackTransaction(); + + /** + * Gets information about the last error that occurred on the database + * @return last error + */ + SQLError LastError() const; + + /** + * @brief HasErrors Indicate the status of the last executed operation. + * + * @return true in case last operation has any errors, false otherwise. + */ + bool HasErrors() const; + + /** + * @brief get_path databse location path. + * + * @return the path to the database location + */ + std::string get_path() const; + + /** + * Checks if database is read/write + * @return true if database is read/write + */ + bool IsReadWrite(); + + /** + * Call backup for opened DB + */ + bool Backup(); + + operator QSqlDatabase() const; + + private: + QSqlDatabase db_; + + /** + * The filename of database + */ + const QString database_path_; + + /** + * The database connection name + */ + const QString connection_name_; + + /** + * Lock for guarding connection to database + */ + mutable sync_primitives::Lock conn_lock_; +}; + +} // namespace dbms +} // namespace utils + +#endif // SRC_COMPONENTS_POLICY_SQLITE_WRAPPER_INCLUDE_SQL_QT_WRAPPER_SQL_DATABASE diff --git a/src/components/utils/include/utils/sql_qt_wrapper/sql_database_impl.h b/src/components/utils/include/utils/sql_qt_wrapper/sql_database_impl.h deleted file mode 100644 index 92d8bc5425..0000000000 --- a/src/components/utils/include/utils/sql_qt_wrapper/sql_database_impl.h +++ /dev/null @@ -1,109 +0,0 @@ -#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_QT_WRAPPER_SQL_DATABASE_IMPL_H_ -#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_QT_WRAPPER_SQL_DATABASE_IMPL_H_ - -#include - -#include - -#include "utils/lock.h" -#include "utils/sql_qt_wrapper/sql_error.h" -#include "utils/sql_database.h" - -namespace utils { -namespace dbms { - -/** - * Represents a connection to a database. - */ -class SQLDatabaseImpl : public SQLDatabase { - public: - SQLDatabaseImpl(); - SQLDatabaseImpl(const std::string& database_path, - const std::string& connection_name); - ~SQLDatabaseImpl(); - - /** - * Opens connection to the temporary in-memory database - * @return true if successfully - */ - bool Open(); - - /** - * Closes connection to the database - */ - void Close(); - - /** - * Begins a transaction on the database - * @return true if successfully - */ - bool BeginTransaction(); - - /** - * Commits a transaction to the database - * @return true if successfully - */ - bool CommitTransaction(); - - /** - * Rolls back a transaction on the database - * @return true if successfully - */ - bool RollbackTransaction(); - - /** - * Gets information about the last error that occurred on the database - * @return last error - */ - SQLError LastError() const; - - /** - * @brief HasErrors Indicate the status of the last executed operation. - * - * @return true in case last operation has any errors, false otherwise. - */ - bool HasErrors() const; - - /** - * @brief get_path databse location path. - * - * @return the path to the database location - */ - std::string get_path() const; - - /** - * Checks if database is read/write - * @return true if database is read/write - */ - bool IsReadWrite(); - - /** - * Call backup for opened DB - */ - bool Backup(); - - operator QSqlDatabase() const; - - private: - QSqlDatabase db_; - - /** - * The filename of database - */ - const QString database_path_; - - /** - * The database connection name - */ - const QString connection_name_; - - /** - * Lock for guarding connection to database - */ - mutable sync_primitives::Lock conn_lock_; -}; - -} // namespace dbms -} // namespace utils - -#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_QT_WRAPPER_SQL_DATABASE_IMPL_H_ diff --git a/src/components/utils/include/utils/sql_wrapper.h b/src/components/utils/include/utils/sql_wrapper.h index 41e8ad381c..4ed7b4e3f3 100644 --- a/src/components/utils/include/utils/sql_wrapper.h +++ b/src/components/utils/include/utils/sql_wrapper.h @@ -30,18 +30,18 @@ POSSIBILITY OF SUCH DAMAGE. */ -#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_WRAPPER_H_ -#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_WRAPPER_H_ +#ifndef SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_ +#define SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_ #if __QNX__ -#include "utils/qdb_wrapper/sql_database_impl.h" -#include "utils/qdb_wrapper/sql_query.h" +#include "qdb_wrapper/sql_database.h" +#include "qdb_wrapper/sql_query.h" #elif defined QT_PORT -#include "utils/sql_qt_wrapper/sql_database_impl.h" -#include "utils/sql_qt_wrapper/sql_query.h" +#include "sql_qt_wrapper/sql_database.h" +#include "sql_qt_wrapper/sql_query.h" #else // __QNX__ -#include "utils/sqlite_wrapper/sql_database_impl.h" -#include "utils/sqlite_wrapper/sql_query.h" +#include "sqlite_wrapper/sql_database.h" +#include "sqlite_wrapper/sql_query.h" #endif // __QNX__ -#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_WRAPPER_H_ +#endif // SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_ diff --git a/src/components/utils/include/utils/sqlite_wrapper/sql_database.h b/src/components/utils/include/utils/sqlite_wrapper/sql_database.h new file mode 100644 index 0000000000..5fd3de5fa1 --- /dev/null +++ b/src/components/utils/include/utils/sqlite_wrapper/sql_database.h @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2015, Ford Motor Company + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the Ford Motor Company nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_H_ +#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_H_ + +#include +#include "utils/sqlite_wrapper/sql_error.h" +#include "utils/lock.h" + +struct sqlite3; + +namespace utils { +namespace dbms { + +class SQLQuery; + +/** + * Represents a connection to a database. + */ +class SQLDatabase { + public: + SQLDatabase(); + SQLDatabase(const std::string& database_path, + const std::string& connection_name); + ~SQLDatabase(); + + /** + * Opens connection to the temporary in-memory database + * @return true if successfully + */ + bool Open(); + + /** + * Closes connection to the database + */ + void Close(); + + /** + * Begins a transaction on the database + * @return true if successfully + */ + bool BeginTransaction(); + + /** + * Commits a transaction to the database + * @return true if successfully + */ + bool CommitTransaction(); + + /** + * Rolls back a transaction on the database + * @return true if successfully + */ + bool RollbackTransaction(); + + /** + * Gets information about the last error that occurred on the database + * @return last error + */ + SQLError LastError() const; + + /** + * @brief HasErrors Indicate the status of the last executed operation. + * + * @return true in case last operation has any errors, false otherwise. + */ + bool HasErrors() const; + + /** + * @brief get_path databse location path. + * + * @return the path to the database location + */ + std::string get_path() const; + + /** + * Checks if database is read/write + * @return true if database is read/write + */ + bool IsReadWrite(); + + /** + * Call backup for opened DB + */ + bool Backup(); + + protected: +#ifndef QT_PORT + /** + * Gets connection to the SQLite database + * @return pointer to connection + */ + sqlite3* conn() const; +#endif // QT_PORT + + private: +#ifndef QT_PORT + /** + * The connection to the SQLite database + */ + sqlite3* conn_; +#endif // QT_PORT + + /** + * Lock for guarding connection to database + */ + sync_primitives::Lock conn_lock_; + + /** + * The filename of database + */ + const std::string database_path_; + + /** + * The database connection name + */ + const std::string connection_name_; + + int error_; + + /** + * Execs query for internal using in this class + * @param query sql query without return results + * @return true if query was executed successfully + */ + inline bool Exec(const std::string& query); + + friend class SQLQuery; +}; + +} // namespace dbms +} // namespace utils + +#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_H_ diff --git a/src/components/utils/include/utils/sqlite_wrapper/sql_database_impl.h b/src/components/utils/include/utils/sqlite_wrapper/sql_database_impl.h deleted file mode 100644 index d9984604a9..0000000000 --- a/src/components/utils/include/utils/sqlite_wrapper/sql_database_impl.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 2016, Ford Motor Company - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of the Ford Motor Company nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_IMPL_H_ -#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_IMPL_H_ - -#include - -#include "utils/sql_database.h" -#include "utils/sqlite_wrapper/sql_error.h" -#include "utils/lock.h" - -namespace utils { -namespace dbms { -/** - * Represents a connection to a database. - */ -class SQLDatabaseImpl : public SQLDatabase { - public: - SQLDatabaseImpl(); - explicit SQLDatabaseImpl(const std::string& filename); - ~SQLDatabaseImpl(); - - /** - * Opens connection to the temporary in-memory database - * @return true if successfully - */ - bool Open() OVERRIDE; - - /** - * Closes connection to the database - */ - void Close() OVERRIDE; - - /** - * Begins a transaction on the database - * @return true if successfully - */ - bool BeginTransaction() OVERRIDE; - - /** - * Commits a transaction to the database - * @return true if successfully - */ - bool CommitTransaction() OVERRIDE; - - /** - * Rolls back a transaction on the database - * @return true if successfully - */ - bool RollbackTransaction() OVERRIDE; - - /** - * Gets information about the last error that occurred on the database - * @return last error - */ - SQLError LastError() const OVERRIDE; - - /** - * @brief HasErrors Indicate the status of the last executed operation. - * - * @return true in case last operation has any errors, false otherwise. - */ - bool HasErrors() const OVERRIDE; - - void set_path(const std::string& path) OVERRIDE; - - /** - * @brief get_path databse location path. - * - * @return the path to the database location - */ - std::string get_path() const OVERRIDE; - - /** - * Checks if database is read/write - * @return true if database is read/write - */ - bool IsReadWrite() OVERRIDE; - - /** - * Call backup for opened DB - */ - bool Backup() OVERRIDE; - -#ifndef QT_PORT - /** - * Gets connection to the SQLite database - * @return pointer to connection - */ - sqlite3* conn() const OVERRIDE; -#endif // QT_PORT - - private: -#ifndef QT_PORT - /** - * The connection to the SQLite database - */ - sqlite3* conn_; -#endif // QT_PORT - - /** - * Lock for guarding connection to database - */ - sync_primitives::Lock conn_lock_; - - /** - * The filename of database - */ - std::string database_name_; - - int error_; - - /** - * Execs query for internal using in this class - * @param query sql query without return results - * @return true if query was executed successfully - */ - inline bool Exec(const std::string& query); - - friend class SQLQuery; -}; - -} // namespace dbms -} // namespace utils - -#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_IMPL_H_ diff --git a/src/components/utils/src/json_utils.cc b/src/components/utils/src/json_utils.cc index ddb1c7d578..5c36f5e660 100644 --- a/src/components/utils/src/json_utils.cc +++ b/src/components/utils/src/json_utils.cc @@ -140,10 +140,6 @@ utils::json::JsonValueRef::JsonValueRef(JsonValue::Storage& storage, } } -void utils::json::JsonValueRef::RemoveMember(const char* key) { - storage_->removeMember(key); -} - void utils::json::JsonValueRef::Clear() { DCHECK(IsValid()); storage_->clear(); diff --git a/src/components/utils/src/qdb_wrapper/CMakeLists.txt b/src/components/utils/src/qdb_wrapper/CMakeLists.txt index abf3ba6516..6a10c3aa10 100644 --- a/src/components/utils/src/qdb_wrapper/CMakeLists.txt +++ b/src/components/utils/src/qdb_wrapper/CMakeLists.txt @@ -34,7 +34,7 @@ set(QDB_SRC_DIR ${COMPONENTS_DIR}/utils/src/qdb_wrapper) include_directories(${COMPONENTS_DIR}/utils/include/) set(SOURCES - ${QDB_SRC_DIR}/sql_database_impl.cc + ${QDB_SRC_DIR}/sql_database.cc ${QDB_SRC_DIR}/sql_query.cc ${QDB_SRC_DIR}/sql_error.cc ) diff --git a/src/components/utils/src/qdb_wrapper/sql_database.cc b/src/components/utils/src/qdb_wrapper/sql_database.cc new file mode 100644 index 0000000000..32db4e4469 --- /dev/null +++ b/src/components/utils/src/qdb_wrapper/sql_database.cc @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2013, Ford Motor Company + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the Ford Motor Company nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "qdb_wrapper/sql_database.h" +#include "utils/logger.h" + +namespace utils { +namespace dbms { + +SDL_CREATE_LOGGER("SQLDatabase") + +SQLDatabase::SQLDatabase(const std::string& db_name) + : conn_(NULL), db_name_(db_name), error_(Error::OK) {} + +SQLDatabase::~SQLDatabase() { + Close(); +} + +bool SQLDatabase::Open() { + sync_primitives::AutoLock auto_lock(conn_lock_); + if (conn_) + return true; + conn_ = qdb_connect(db_name_.c_str(), 0); + if (conn_ == NULL) { + error_ = Error::ERROR; + return false; + } + return true; +} + +void SQLDatabase::Close() { + sync_primitives::AutoLock auto_lock(conn_lock_); + if (conn_) { + if (qdb_disconnect(conn_) != -1) { + conn_ = NULL; + } else { + error_ = Error::ERROR; + } + } +} + +bool SQLDatabase::BeginTransaction() { + return Exec("BEGIN TRANSACTION"); +} + +bool SQLDatabase::CommitTransaction() { + return Exec("COMMIT TRANSACTION"); +} + +bool SQLDatabase::RollbackTransaction() { + return Exec("ROLLBACK TRANSACTION"); +} + +bool SQLDatabase::Exec(const std::string& query) { + sync_primitives::AutoLock auto_lock(conn_lock_); + if (qdb_statement(conn_, query.c_str()) == -1) { + error_ = Error::ERROR; + return false; + } + return true; +} + +SQLError SQLDatabase::LastError() const { + return SQLError(error_, qdb_geterrmsg(conn_)); +} + +bool SQLDatabase::HasErrors() const { + return Error(error_) != OK; +} + +qdb_hdl_t* SQLDatabase::conn() const { + return conn_; +} + +bool SQLDatabase::Backup() { + if (qdb_backup(conn_, QDB_ATTACH_DEFAULT) == -1) { + error_ = Error::ERROR; + SDL_ERROR("Backup returned error: " << std::strerror(errno)); + return false; + } + SDL_INFO("Backup was successful."); + return true; +} + +} // namespace dbms +} // namespace utils diff --git a/src/components/utils/src/qdb_wrapper/sql_database_impl.cc b/src/components/utils/src/qdb_wrapper/sql_database_impl.cc deleted file mode 100644 index 194d164b47..0000000000 --- a/src/components/utils/src/qdb_wrapper/sql_database_impl.cc +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2013, Ford Motor Company - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of the Ford Motor Company nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include "qdb_wrapper/sql_database_impl.h" -#include "utils/logger.h" - -namespace utils { -namespace dbms { - -SDL_CREATE_LOGGER("SQLDatabase") - -SQLDatabaseImpl::SQLDatabaseImpl(const std::string& db_name) - : conn_(NULL), db_name_(db_name), error_(Error::OK) {} - -SQLDatabaseImpl::~SQLDatabaseImpl() { - Close(); -} - -bool SQLDatabaseImpl::Open() { - sync_primitives::AutoLock auto_lock(conn_lock_); - if (conn_) - return true; - conn_ = qdb_connect(db_name_.c_str(), 0); - if (conn_ == NULL) { - error_ = Error::ERROR; - return false; - } - return true; -} - -void SQLDatabaseImpl::Close() { - sync_primitives::AutoLock auto_lock(conn_lock_); - if (conn_) { - if (qdb_disconnect(conn_) != -1) { - conn_ = NULL; - } else { - error_ = Error::ERROR; - } - } -} - -bool SQLDatabaseImpl::BeginTransaction() { - return Exec("BEGIN TRANSACTION"); -} - -bool SQLDatabaseImpl::CommitTransaction() { - return Exec("COMMIT TRANSACTION"); -} - -bool SQLDatabaseImpl::RollbackTransaction() { - return Exec("ROLLBACK TRANSACTION"); -} - -bool SQLDatabaseImpl::Exec(const std::string& query) { - sync_primitives::AutoLock auto_lock(conn_lock_); - if (qdb_statement(conn_, query.c_str()) == -1) { - error_ = Error::ERROR; - return false; - } - return true; -} - -SQLError SQLDatabaseImpl::LastError() const { - return SQLError(error_, qdb_geterrmsg(conn_)); -} - -bool SQLDatabase::HasErrors() const { - return Error(error_) != OK; -} - -qdb_hdl_t* SQLDatabaseImpl::conn() const { - return conn_; -} - -std::string SQLDatabaseImpl::get_path() const { - return db_name_; -} - -bool SQLDatabaseImpl::Backup() { - if (qdb_backup(conn_, QDB_ATTACH_DEFAULT) == -1) { - error_ = Error::ERROR; - SDL_ERROR("Backup returned error: " << std::strerror(errno)); - return false; - } - SDL_INFO("Backup was successful."); - return true; -} - -} // namespace dbms -} // namespace utils diff --git a/src/components/utils/src/qdb_wrapper/sql_query.cc b/src/components/utils/src/qdb_wrapper/sql_query.cc index 4cafae8c3b..3ce193c756 100644 --- a/src/components/utils/src/qdb_wrapper/sql_query.cc +++ b/src/components/utils/src/qdb_wrapper/sql_query.cc @@ -34,7 +34,7 @@ #include #include #include -#include "utils/sql_database.h" +#include "qdb_wrapper/sql_database.h" #include "utils/logger.h" #include diff --git a/src/components/utils/src/sql_qt_wrapper/CMakeLists.txt b/src/components/utils/src/sql_qt_wrapper/CMakeLists.txt index bb38b97751..4ef122e4de 100644 --- a/src/components/utils/src/sql_qt_wrapper/CMakeLists.txt +++ b/src/components/utils/src/sql_qt_wrapper/CMakeLists.txt @@ -36,7 +36,7 @@ include_directories( ) set(SOURCES - ./sql_database_impl.cc + ./sql_database.cc ./sql_error.cc ./sql_query.cc ) diff --git a/src/components/utils/src/sql_qt_wrapper/sql_database.cc b/src/components/utils/src/sql_qt_wrapper/sql_database.cc new file mode 100644 index 0000000000..203cfdaa16 --- /dev/null +++ b/src/components/utils/src/sql_qt_wrapper/sql_database.cc @@ -0,0 +1,88 @@ +#include "sql_qt_wrapper/sql_database.h" + +#include + +namespace { +const QString kDatabaseExtension = ".sqlite"; +} // namespace + +namespace utils { +namespace dbms { + +SQLDatabase::SQLDatabase() : database_path_() {} + +SQLDatabase::SQLDatabase(const std::string& database_path, + const std::string& connection_name) + : database_path_((database_path + kDatabaseExtension.toStdString()).c_str()) + , connection_name_(connection_name.c_str()) { + db_ = QSqlDatabase::addDatabase("QSQLITE", connection_name_); +} + +SQLDatabase::~SQLDatabase() { + Close(); + sync_primitives::AutoLock auto_lock(conn_lock_); + /* + * All database queries and connections should be destroyed + * before database removing. See + * http://doc.qt.io/qt-5/qsqldatabase.html#removeDatabase + */ + db_ = QSqlDatabase(); + QSqlDatabase::removeDatabase(connection_name_); +} + +bool SQLDatabase::Open() { + sync_primitives::AutoLock auto_lock(conn_lock_); + db_.setDatabaseName(database_path_); + return db_.open(); +} + +void SQLDatabase::Close() { + sync_primitives::AutoLock auto_lock(conn_lock_); + if (db_.isOpen()) { + db_.close(); + } +} + +bool SQLDatabase::BeginTransaction() { + sync_primitives::AutoLock auto_lock(conn_lock_); + return db_.transaction(); +} + +bool SQLDatabase::CommitTransaction() { + sync_primitives::AutoLock auto_lock(conn_lock_); + return db_.commit(); +} + +bool SQLDatabase::RollbackTransaction() { + sync_primitives::AutoLock auto_lock(conn_lock_); + return db_.rollback(); +} + +SQLError SQLDatabase::LastError() const { + sync_primitives::AutoLock auto_lock(conn_lock_); + return SQLError(db_.lastError()); +} + +bool SQLDatabase::HasErrors() const { + sync_primitives::AutoLock auto_lock(conn_lock_); + return db_.lastError().type() != QSqlError::NoError; +} + +std::string SQLDatabase::get_path() const { + return database_path_.toStdString(); +} + +bool SQLDatabase::IsReadWrite() { + return true; +} + +SQLDatabase::operator QSqlDatabase() const { + return db_; +} + +bool SQLDatabase::Backup() { + return true; +} + +} // namespace dbms +} // namespace utils diff --git a/src/components/utils/src/sql_qt_wrapper/sql_database_impl.cc b/src/components/utils/src/sql_qt_wrapper/sql_database_impl.cc deleted file mode 100644 index c32859bc31..0000000000 --- a/src/components/utils/src/sql_qt_wrapper/sql_database_impl.cc +++ /dev/null @@ -1,88 +0,0 @@ -#include "sql_qt_wrapper/sql_database_impl.h" - -#include - -namespace { -const QString kDatabaseExtension = ".sqlite"; -} // namespace - -namespace utils { -namespace dbms { - -SQLDatabaseImpl::SQLDatabaseImpl() : database_path_() {} - -SQLDatabaseImpl::SQLDatabaseImpl(const std::string& database_path, - const std::string& connection_name) - : database_path_((database_path + kDatabaseExtension.toStdString()).c_str()) - , connection_name_(connection_name.c_str()) { - db_ = QSqlDatabase::addDatabase("QSQLITE", connection_name_); -} - -SQLDatabaseImpl::~SQLDatabaseImpl() { - Close(); - sync_primitives::AutoLock auto_lock(conn_lock_); - /* - * All database queries and connections should be destroyed - * before database removing. See - * http://doc.qt.io/qt-5/qsqldatabase.html#removeDatabase - */ - db_ = QSqlDatabase(); - QSqlDatabase::removeDatabase(connection_name_); -} - -bool SQLDatabaseImpl::Open() { - sync_primitives::AutoLock auto_lock(conn_lock_); - db_.setDatabaseName(database_path_); - return db_.open(); -} - -void SQLDatabaseImpl::Close() { - sync_primitives::AutoLock auto_lock(conn_lock_); - if (db_.isOpen()) { - db_.close(); - } -} - -bool SQLDatabaseImpl::BeginTransaction() { - sync_primitives::AutoLock auto_lock(conn_lock_); - return db_.transaction(); -} - -bool SQLDatabaseImpl::CommitTransaction() { - sync_primitives::AutoLock auto_lock(conn_lock_); - return db_.commit(); -} - -bool SQLDatabaseImpl::RollbackTransaction() { - sync_primitives::AutoLock auto_lock(conn_lock_); - return db_.rollback(); -} - -SQLError SQLDatabaseImpl::LastError() const { - sync_primitives::AutoLock auto_lock(conn_lock_); - return SQLError(db_.lastError()); -} - -bool SQLDatabaseImpl::HasErrors() const { - sync_primitives::AutoLock auto_lock(conn_lock_); - return db_.lastError().type() != QSqlError::NoError; -} - -std::string SQLDatabaseImpl::get_path() const { - return database_path_.toStdString(); -} - -bool SQLDatabaseImpl::IsReadWrite() { - return true; -} - -SQLDatabaseImpl::operator QSqlDatabase() const { - return db_; -} - -bool SQLDatabaseImpl::Backup() { - return true; -} - -} // namespace dbms -} // namespace utils diff --git a/src/components/utils/src/sql_qt_wrapper/sql_query.cc b/src/components/utils/src/sql_qt_wrapper/sql_query.cc index 6cbbe5fe07..4aa5b33c43 100644 --- a/src/components/utils/src/sql_qt_wrapper/sql_query.cc +++ b/src/components/utils/src/sql_qt_wrapper/sql_query.cc @@ -41,7 +41,7 @@ #include #include -#include "utils/sql_database.h" +#include "sql_qt_wrapper/sql_database.h" #include "utils/macro.h" namespace utils { diff --git a/src/components/utils/src/sqlite_wrapper/CMakeLists.txt b/src/components/utils/src/sqlite_wrapper/CMakeLists.txt index dd64d210d6..4224376548 100644 --- a/src/components/utils/src/sqlite_wrapper/CMakeLists.txt +++ b/src/components/utils/src/sqlite_wrapper/CMakeLists.txt @@ -43,7 +43,7 @@ include_directories( ) set(SOURCES - ${SQLITE_SRC_DIR}/sql_database_impl.cc + ${SQLITE_SRC_DIR}/sql_database.cc ${SQLITE_SRC_DIR}/sql_query.cc ${SQLITE_SRC_DIR}/sql_error.cc ) diff --git a/src/components/utils/src/sqlite_wrapper/sql_database.cc b/src/components/utils/src/sqlite_wrapper/sql_database.cc new file mode 100644 index 0000000000..4763ddc776 --- /dev/null +++ b/src/components/utils/src/sqlite_wrapper/sql_database.cc @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2013, Ford Motor Company + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the Ford Motor Company nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "utils/sqlite_wrapper/sql_database.h" +#include + +namespace utils { +namespace dbms { + +namespace { +const char* kInMemory = ":memory:"; +const char* kExtension = ".sqlite"; +} // namespace + +SQLDatabase::SQLDatabase() + : conn_(NULL), database_path_(kInMemory), error_(SQLITE_OK) {} + +SQLDatabase::SQLDatabase(const std::string& database_path, + const std::string& connection_name) + : conn_(NULL) + , database_path_(database_path + kExtension) + , connection_name_(connection_name) + , error_(SQLITE_OK) {} + +SQLDatabase::~SQLDatabase() { + Close(); +} + +bool SQLDatabase::Open() { + sync_primitives::AutoLock auto_lock(conn_lock_); + if (conn_) + return true; + error_ = sqlite3_open(database_path_.c_str(), &conn_); + return error_ == SQLITE_OK; + return true; +} + +bool SQLDatabase::IsReadWrite() { + const char* schema = "main"; + return sqlite3_db_readonly(conn_, schema) == 0; + return true; +} + +void SQLDatabase::Close() { + if (!conn_) { + return; + } + + sync_primitives::AutoLock auto_lock(conn_lock_); + error_ = sqlite3_close(conn_); + if (error_ == SQLITE_OK) { + conn_ = NULL; + } +} + +bool SQLDatabase::BeginTransaction() { + return Exec("BEGIN TRANSACTION"); +} + +bool SQLDatabase::CommitTransaction() { + return Exec("COMMIT TRANSACTION"); +} + +bool SQLDatabase::RollbackTransaction() { + return Exec("ROLLBACK TRANSACTION"); +} + +bool SQLDatabase::Exec(const std::string& query) { + sync_primitives::AutoLock auto_lock(conn_lock_); + error_ = sqlite3_exec(conn_, query.c_str(), NULL, NULL, NULL); + return error_ == SQLITE_OK; +} + +SQLError SQLDatabase::LastError() const { + return SQLError(Error(error_)); +} + +bool SQLDatabase::HasErrors() const { + return Error(error_) != OK; +} +sqlite3* SQLDatabase::conn() const { + return conn_; +} + +std::string SQLDatabase::get_path() const { + return database_path_; +} + +bool SQLDatabase::Backup() { + return true; +} +} // namespace dbms +} // namespace utils diff --git a/src/components/utils/src/sqlite_wrapper/sql_database_impl.cc b/src/components/utils/src/sqlite_wrapper/sql_database_impl.cc deleted file mode 100644 index 1aacc05c0e..0000000000 --- a/src/components/utils/src/sqlite_wrapper/sql_database_impl.cc +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (c) 2013, Ford Motor Company - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of the Ford Motor Company nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "sqlite_wrapper/sql_database_impl.h" -#include - -namespace utils { -namespace dbms { - -namespace { -const char* kInMemory = ":memory:"; -const char* kExtension = ".sqlite"; -} // namespace - -SQLDatabaseImpl::SQLDatabaseImpl() - : conn_(NULL), database_name_(kInMemory), error_(SQLITE_OK) {} - -SQLDatabaseImpl::SQLDatabaseImpl(const std::string& db_name) - : conn_(NULL), database_name_(db_name + kExtension), error_(SQLITE_OK) {} - -SQLDatabaseImpl::~SQLDatabaseImpl() { - Close(); -} - -bool SQLDatabaseImpl::Open() { - sync_primitives::AutoLock auto_lock(conn_lock_); - if (conn_) { - return true; - } - error_ = sqlite3_open(database_name_.c_str(), &conn_); - return error_ == SQLITE_OK; - return true; -} - -bool SQLDatabaseImpl::IsReadWrite() { - const char* schema = "main"; - return sqlite3_db_readonly(conn_, schema) == 0; - return true; -} - -void SQLDatabaseImpl::Close() { - if (!conn_) { - return; - } - - sync_primitives::AutoLock auto_lock(conn_lock_); - error_ = sqlite3_close(conn_); - if (error_ == SQLITE_OK) { - conn_ = NULL; - } -} - -bool SQLDatabaseImpl::BeginTransaction() { - return Exec("BEGIN TRANSACTION"); -} - -bool SQLDatabaseImpl::CommitTransaction() { - return Exec("COMMIT TRANSACTION"); -} - -bool SQLDatabaseImpl::RollbackTransaction() { - return Exec("ROLLBACK TRANSACTION"); -} - -bool SQLDatabaseImpl::Exec(const std::string& query) { - sync_primitives::AutoLock auto_lock(conn_lock_); - error_ = sqlite3_exec(conn_, query.c_str(), NULL, NULL, NULL); - return error_ == SQLITE_OK; -} - -SQLError SQLDatabaseImpl::LastError() const { - return SQLError(Error(error_)); -} - -bool SQLDatabaseImpl::HasErrors() const { - return Error(error_) != OK; -} - -sqlite3* SQLDatabaseImpl::conn() const { - return conn_; -} - -void SQLDatabaseImpl::set_path(const std::string& path) { - database_name_ = path + database_name_; -} - -std::string SQLDatabaseImpl::get_path() const { - return database_name_; -} - -bool SQLDatabaseImpl::Backup() { - return true; -} -} // namespace dbms -} // namespace utils diff --git a/src/components/utils/src/sqlite_wrapper/sql_query.cc b/src/components/utils/src/sqlite_wrapper/sql_query.cc index 2369363bb4..14fa0a5313 100644 --- a/src/components/utils/src/sqlite_wrapper/sql_query.cc +++ b/src/components/utils/src/sqlite_wrapper/sql_query.cc @@ -33,7 +33,7 @@ #include "utils/sqlite_wrapper/sql_query.h" #include #include -#include "utils/sql_database.h" +#include "utils/sqlite_wrapper/sql_database.h" namespace utils { namespace dbms { diff --git a/src/components/utils/test/generated_code_with_sqlite_test.cc b/src/components/utils/test/generated_code_with_sqlite_test.cc index bd46e10b56..19a8d1823a 100644 --- a/src/components/utils/test/generated_code_with_sqlite_test.cc +++ b/src/components/utils/test/generated_code_with_sqlite_test.cc @@ -90,7 +90,7 @@ const std::string GeneratedCodeTest::kGroupsCreation = TEST_F(GeneratedCodeTest, FindSectionEndpoints_OpenDBSetDefaultUrl_ExpectDefaultUrl) { // arrange - utils::dbms::SQLDatabaseImpl db(GeneratedCodeTest::kDatabaseName); + dbms::SQLDatabase db(GeneratedCodeTest::kDatabaseName, "test"); // assert EXPECT_TRUE(db.Open()); @@ -110,7 +110,7 @@ TEST_F(GeneratedCodeTest, TEST_F(GeneratedCodeTest, RemoveSectionEndpoints_RemoveSectionEndpoints_Expect0EndPoints) { // arrange - utils::dbms::SQLDatabaseImpl db(GeneratedCodeTest::kDatabaseName); + dbms::SQLDatabase db(GeneratedCodeTest::kDatabaseName, "test"); // assert EXPECT_TRUE(db.Open()); @@ -135,7 +135,7 @@ TEST_F(GeneratedCodeTest, TEST_F(GeneratedCodeTest, UpdateSectionEndpoints_SetUrlPoint_ExpectPointEqualsUrl) { // arrange - utils::dbms::SQLDatabaseImpl db(GeneratedCodeTest::kDatabaseName); + dbms::SQLDatabase db(GeneratedCodeTest::kDatabaseName, "test"); // assert EXPECT_TRUE(db.Open()); @@ -178,7 +178,7 @@ TEST_F(GeneratedCodeTest, TEST_F(GeneratedCodeTest, UpdateSectionAppPolicies_SetAppParams_ExpectDBHasThem) { // arrange - utils::dbms::SQLDatabaseImpl db(GeneratedCodeTest::kDatabaseName); + dbms::SQLDatabase db(GeneratedCodeTest::kDatabaseName, "test"); // assert EXPECT_TRUE(db.Open()); diff --git a/src/components/utils/test/include/utils/generated_code_with_sqlite_test.h b/src/components/utils/test/include/utils/generated_code_with_sqlite_test.h index f1888e3f68..e21fd75f87 100644 --- a/src/components/utils/test/include/utils/generated_code_with_sqlite_test.h +++ b/src/components/utils/test/include/utils/generated_code_with_sqlite_test.h @@ -36,7 +36,7 @@ #include "policy/policy_table/types.h" #include "rpc_base/rpc_base.h" #include "utils/sqlite_wrapper/sql_query.h" -#include "utils/sqlite_wrapper/sql_database_impl.h" +#include "utils/sqlite_wrapper/sql_database.h" namespace test { namespace components { diff --git a/src/components/utils/test/qdb_wrapper/sql_database_test.cc b/src/components/utils/test/qdb_wrapper/sql_database_test.cc index fd07ffcb67..4e1a822b57 100644 --- a/src/components/utils/test/qdb_wrapper/sql_database_test.cc +++ b/src/components/utils/test/qdb_wrapper/sql_database_test.cc @@ -33,8 +33,8 @@ #include "gtest/gtest.h" -#include "utils/qdb_wrapper/sql_error.h" -#include "utils/qdb_wrapper/sql_database_impl.h" +#include "qdb_wrapper/sql_error.h" +#include "qdb_wrapper/sql_database.h" using ::utils::dbms::SQLError; using ::utils::dbms::SQLDatabase; diff --git a/src/components/utils/test/qdb_wrapper/sql_query_test.cc b/src/components/utils/test/qdb_wrapper/sql_query_test.cc index 6109560e68..e575e4f575 100644 --- a/src/components/utils/test/qdb_wrapper/sql_query_test.cc +++ b/src/components/utils/test/qdb_wrapper/sql_query_test.cc @@ -34,9 +34,9 @@ #include "gtest/gtest.h" -#include "utils/qdb_wrapper/sql_error.h" -#include "utils/qdb_wrapper/sql_database_impl.h" -#include "utils/qdb_wrapper/sql_query.h" +#include "qdb_wrapper/sql_error.h" +#include "qdb_wrapper/sql_database.h" +#include "qdb_wrapper/sql_query.h" using ::utils::dbms::SQLError; using ::utils::dbms::SQLDatabase; diff --git a/src/components/utils/test/sqlite_wrapper/sql_database_test.cc b/src/components/utils/test/sqlite_wrapper/sql_database_test.cc index bda887c6d1..78689aa236 100644 --- a/src/components/utils/test/sqlite_wrapper/sql_database_test.cc +++ b/src/components/utils/test/sqlite_wrapper/sql_database_test.cc @@ -31,10 +31,10 @@ #include "gtest/gtest.h" #include "utils/sqlite_wrapper/sql_error.h" -#include "utils/sqlite_wrapper/sql_database_impl.h" +#include "utils/sqlite_wrapper/sql_database.h" using ::utils::dbms::SQLError; -using ::utils::dbms::SQLDatabaseImpl; +using ::utils::dbms::SQLDatabase; namespace test { namespace components { @@ -49,9 +49,9 @@ namespace dbms_test { } } -TEST(SQLDatabaseImplTest, OpenCloseMemory_OpenAndCloseDB_ActsWithoutError) { +TEST(SQLDatabaseTest, OpenCloseMemory_OpenAndCloseDB_ActsWithoutError) { // arrange - SQLDatabaseImpl db; + SQLDatabase db("test-database", "test"); bool ret = db.Open(); // assert @@ -65,10 +65,9 @@ TEST(SQLDatabaseImplTest, OpenCloseMemory_OpenAndCloseDB_ActsWithoutError) { EXPECT_FALSE(IsError(db.LastError())); } -TEST(SQLDatabaseImplTest, - OpenCloseFile_OpenAndCloseSpecifiedDB_ActsWithoutError) { +TEST(SQLDatabaseTest, OpenCloseFile_OpenAndCloseSpecifiedDB_ActsWithoutError) { // arrange - SQLDatabaseImpl db("test-database"); + SQLDatabase db("test-database", "test"); bool ret = db.Open(); // assert @@ -84,9 +83,9 @@ TEST(SQLDatabaseImplTest, remove("test-database.sqlite"); } -TEST(SQLDatabaseImplTest, OpenDBTwice_NoError) { +TEST(SQLDatabaseTest, OpenDBTwice_NoError) { // arrange - SQLDatabaseImpl db; + SQLDatabase db("test-database", "test"); bool ret = db.Open(); // assert @@ -103,9 +102,9 @@ TEST(SQLDatabaseImplTest, OpenDBTwice_NoError) { db.Close(); } -TEST(SQLDatabaseImplTest, CloseDBTwice_NoError) { +TEST(SQLDatabaseTest, CloseDBTwice_NoError) { // arrange - SQLDatabaseImpl db; + SQLDatabase db("test-database", "test"); bool ret = db.Open(); // assert @@ -125,19 +124,19 @@ TEST(SQLDatabaseImplTest, CloseDBTwice_NoError) { EXPECT_FALSE(IsError(db.LastError())); } -TEST(SQLDatabaseImplTest, Close_DBWasNotOpened_NoError) { +TEST(SQLDatabaseTest, Close_DBWasNotOpened_NoError) { // act - SQLDatabaseImpl db; + SQLDatabase db("test-database", "test"); db.Close(); // assert EXPECT_FALSE(IsError(db.LastError())); } -TEST(SQLDatabaseImplTest, +TEST(SQLDatabaseTest, CommitTransaction_StartAndCommitTransaction_ExpectActsWithoutError) { // arrange - SQLDatabaseImpl db; + SQLDatabase db("test-database", "test"); // assert ASSERT_TRUE(db.Open()); @@ -149,10 +148,10 @@ TEST(SQLDatabaseImplTest, db.Close(); } -TEST(SQLDatabaseImplTest, +TEST(SQLDatabaseTest, RollbackTransaction_StartAndRollbackTransaction_ExpectActsWithoutError) { // arrange - SQLDatabaseImpl db; + SQLDatabase db("test-database", "test"); // assert ASSERT_TRUE(db.Open()); @@ -164,10 +163,10 @@ TEST(SQLDatabaseImplTest, db.Close(); } -TEST(SQLDatabaseImplTest, +TEST(SQLDatabaseTest, FailedCommitTransaction_CommitTransactionWithoutBeginning_ExpectError) { // arrange - SQLDatabaseImpl db; + SQLDatabase db("test-database", "test"); // assert ASSERT_TRUE(db.Open()); @@ -178,10 +177,10 @@ TEST(SQLDatabaseImplTest, } TEST( - SQLDatabaseImplTest, + SQLDatabaseTest, FailedRollbackTransaction_RollbackTransactionWithoutBeginning_ExpectError) { // arrange - SQLDatabaseImpl db; + SQLDatabase db("test-database", "test"); // assert ASSERT_TRUE(db.Open()); @@ -191,19 +190,18 @@ TEST( db.Close(); } -TEST(SQLDatabaseImplTest, - BadTransaction_BeginTransitionWithoutOpenDB_ExpectError) { +TEST(SQLDatabaseTest, BadTransaction_BeginTransitionWithoutOpenDB_ExpectError) { // arrange - SQLDatabaseImpl db; + SQLDatabase db("test-database", "test"); // assert EXPECT_FALSE(db.BeginTransaction()); EXPECT_TRUE(IsError(db.LastError())); } -TEST(SQLDatabaseImplTest, IsReadWrite_FirstOpenDBIsRWSecondIsNot) { +TEST(SQLDatabaseTest, IsReadWrite_FirstOpenDBIsRWSecondIsNot) { // arrange - SQLDatabaseImpl db("test-database"); + SQLDatabase db("test-database", "test"); // assert ASSERT_TRUE(db.Open()); diff --git a/src/components/utils/test/sqlite_wrapper/sql_query_test.cc b/src/components/utils/test/sqlite_wrapper/sql_query_test.cc index 245b55116c..074b4689bc 100644 --- a/src/components/utils/test/sqlite_wrapper/sql_query_test.cc +++ b/src/components/utils/test/sqlite_wrapper/sql_query_test.cc @@ -35,11 +35,11 @@ #include "gtest/gtest.h" #include "utils/sqlite_wrapper/sql_error.h" -#include "utils/sqlite_wrapper/sql_database_impl.h" +#include "utils/sqlite_wrapper/sql_database.h" #include "utils/sqlite_wrapper/sql_query.h" using ::utils::dbms::SQLError; -using ::utils::dbms::SQLDatabaseImpl; +using ::utils::dbms::SQLDatabase; using ::utils::dbms::SQLQuery; namespace test { @@ -102,7 +102,7 @@ const std::string SQLQueryTest::kDatabaseName = "test-query"; TEST_F(SQLQueryTest, Query_CreateQuery_QueryInDBEqualCreated) { // arrange const std::string kSelect("SELECT * FROM testTable WHERE integerValue = ?"); - SQLDatabaseImpl db(kDatabaseName); + SQLDatabase db(kDatabaseName, "test"); // assert ASSERT_TRUE(db.Open()); @@ -121,7 +121,7 @@ TEST_F(SQLQueryTest, ExecString_ExecuteQuery_ActWithoutError) { "INSERT INTO testTable" " (integerValue, doubleValue, stringValue)" " VALUES(2, 3.4, 'five-пять')"); - SQLDatabaseImpl db(kDatabaseName); + SQLDatabase db(kDatabaseName, "test"); // assert ASSERT_TRUE(db.Open()); @@ -146,7 +146,7 @@ TEST_F(SQLQueryTest, const double kDoubleValue = 2.3; const std::string kStringValue = "four"; - SQLDatabaseImpl db(kDatabaseName); + SQLDatabase db(kDatabaseName, "test"); // assert ASSERT_TRUE(db.Open()); @@ -217,7 +217,7 @@ TEST_F(SQLQueryTest, SetValue_InsertValues_ExpectDBHasInsertedValues) { const double kDoubleValue = 2.3; const std::string kStringValue = "four"; - SQLDatabaseImpl db(kDatabaseName); + SQLDatabase db(kDatabaseName, "test"); // assert ASSERT_TRUE(db.Open()); @@ -242,7 +242,7 @@ TEST_F(SQLQueryTest, EmptySelect_SelectValuesEqual0_ExecWithoutErrors) { const std::string kSelect( "SELECT integerValue, doubleValue, stringValue" " FROM testTable WHERE 0"); - SQLDatabaseImpl db(kDatabaseName); + SQLDatabase db(kDatabaseName, "test"); // assert ASSERT_TRUE(db.Open()); @@ -278,7 +278,7 @@ TEST_F( const double kDoubleValue = 2.3; const std::string kStringValue = "four"; - SQLDatabaseImpl db(kDatabaseName); + SQLDatabase db(kDatabaseName, "test"); ASSERT_TRUE(db.Open()); SQLQuery query(&db); @@ -314,7 +314,7 @@ TEST_F(SQLQueryTest, LastInsertId_InsertValuesAndBindQuery_GetExpectedId) { const std::string kInsert("INSERT INTO idTable (value) VALUES(?)"); // act - SQLDatabaseImpl db(kDatabaseName); + SQLDatabase db(kDatabaseName, "test"); // assert ASSERT_TRUE(db.Open()); @@ -343,7 +343,7 @@ TEST_F(SQLQueryTest, BindNull_BindWithoutValue_ActWithoutErrors) { const std::string kInsert( "INSERT INTO testTable (`integerValue`)" " VALUES (?)"); - SQLDatabaseImpl db(kDatabaseName); + SQLDatabase db(kDatabaseName, "test"); // assert ASSERT_TRUE(db.Open()); @@ -362,7 +362,7 @@ TEST_F(SQLQueryTest, BindNull_BindWithoutValue_ActWithoutErrors) { TEST_F(SQLQueryTest, DoublePrepare_TwicePrepareQuery_ActWithoutErrors) { // arrange - SQLDatabaseImpl db(kDatabaseName); + SQLDatabase db(kDatabaseName, "test"); // assert ASSERT_TRUE(db.Open()); // act -- cgit v1.2.1