1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef DISTRIBUTED_RDB_MODULE_TEST_TOOLS_H 16 #define DISTRIBUTED_RDB_MODULE_TEST_TOOLS_H 17 #include <condition_variable> 18 #include <thread> 19 20 #include "relational_store_delegate.h" 21 #include "relational_store_manager.h" 22 #include "distributed_test_sysinfo.h" 23 #include "distributeddb_data_generator.h" 24 #include "log_print.h" 25 #ifdef TESTCASES_USING_GTEST 26 #define HWTEST_F(test_case_name, test_name, level) TEST_F(test_case_name, test_name) 27 #endif 28 29 struct RdbParameters { 30 std::string path; 31 std::string storeId; 32 std::string appId; 33 std::string userId; RdbParametersRdbParameters34 RdbParameters(str::string pathStr, std::string storeIdStr, std::string appIdStr, std::string userIdStr) 35 : pathStr(pathStr), storeId(storeIdStr), appId(appIdStr), userId(userIdStr) 36 { 37 } 38 }; 39 40 const static std::string TAG = "DistributedRdbTools"; 41 42 const static std::string NORMAL_PATH = "/data/test/"; 43 const static std::string NON_EXISTENT_PATH = "/data/test/nonExistent_rdb/"; 44 const static std::string UNREADABLE_PATH = "/data/test/unreadable_rdb/"; 45 const static std::string UNWRITABLE_PATH = "/data/test/unwritable_rdb/"; 46 47 const static std::string NULL_STOREID = {}; 48 const static std::string ILLEGAL_STOREID = "rdb_$%#@~%"; 49 const static std::string MODE_STOREID = "rdb_mode"; 50 const static std::string FULL_STOREID = "rdb_full"; 51 const static std::string SUPER_STOREID = "rdb_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + 52 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 53 54 const static std::string NON_EXISTENT_TABLE = "non_table"; 55 const static std::string KEYWORD_START_TABLE = "naturalbase_rdb_a"; 56 57 const static std::string NORMAL_TABLE = "NORMAL_RDB"; 58 const static std::string CONSTRAINT_TABLE = "CONSTRAINT_RDB"; 59 60 const static RdbParameters g_rdbParameter1(NORMAL_PATH, DistributedDBDataGenerator::STORE_ID_1, 61 DistributedDBDataGenerator::APP_ID_1, DistributedDBDataGenerator::USER_ID_1); 62 63 const static RdbParameters g_rdbParameter2(NORMAL_PATH, DistributedDBDataGenerator::STORE_ID, 64 DistributedDBDataGenerator::APP_ID_1, DistributedDBDataGenerator::USER_ID_1); 65 66 const static RdbParameters g_rdbParameter3(NORMAL_PATH, ILLEGAL_STOREID, 67 DistributedDBDataGenerator::APP_ID_1, DistributedDBDataGenerator::USER_ID_1); 68 69 const static RdbParameters g_rdbParameter4(NORMAL_PATH, MODE_STOREID, 70 DistributedDBDataGenerator::APP_ID_1, DistributedDBDataGenerator::USER_ID_1); 71 72 const static RdbParameters g_rdbParameter5(NORMAL_PATH, SUPER_STOREID, 73 DistributedDBDataGenerator::APP_ID_1, DistributedDBDataGenerator::USER_ID_1); 74 75 const static RdbParameters g_rdbParameter6(NON_EXISTENT_PATH, DistributedDBDataGenerator::STORE_ID_1, 76 DistributedDBDataGenerator::APP_ID_1, DistributedDBDataGenerator::USER_ID_1); 77 78 const static RdbParameters g_rdbParameter7(UNREADABLE_PATH, DistributedDBDataGenerator::STORE_ID_1, 79 DistributedDBDataGenerator::APP_ID_1, DistributedDBDataGenerator::USER_ID_1); 80 81 const static RdbParameters g_rdbParameter8(UNWRITABLE_PATH, DistributedDBDataGenerator::STORE_ID_1, 82 DistributedDBDataGenerator::APP_ID_1, DistributedDBDataGenerator::USER_ID_1); 83 84 const static RdbParameters g_rdbParameter9(NORMAL_PATH, FULL_STOREID, 85 DistributedDBDataGenerator::APP_ID_1, DistributedDBDataGenerator::USER_ID_1); 86 87 class DistributedRdbTools final { 88 public: DistributedRdbTools()89 DistributedRdbTools() {} ~DistributedRdbTools()90 ~DistributedRdbTools() {} 91 // Relational Database OpenStore And CreateDistributeTable 92 static DistributedDB::DBStatus GetOpenStoreStatus(const RelatetionalStoreManager *&manager, 93 RelatetionalStoreDelegate *&delegate, const RdbParameters ¶m); 94 static DistributedDB::DBStatus GetCreateDistributedTableStatus(const RelatetionalStoreDelegate *&delegate, 95 const std::string &tableName); 96 static bool CloseStore(const DistributedDB::RelatetionalStoreDelegate *&delegate); 97 98 static bool InitSqlite3Store(sqlite3 *&db, const RdbParameters ¶m); 99 static bool InitTableDataAndTrigger(const sqlite3 *&db) ; 100 static bool AlterTableAttributes(const sqlite3 *&db); 101 static bool Sqlite3ExecOpration(const sqlite3 *&db, cont char *&sql_name); 102 static void CloseSqlite3Store(sqlite3 *&db); 103 } 104 #endif // DISTRIBUTED_RDB_MODULE_TEST_TOOLS_H