1d9f0492fSopenharmony_ci/* 2d9f0492fSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3d9f0492fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4d9f0492fSopenharmony_ci * you may not use this file except in compliance with the License. 5d9f0492fSopenharmony_ci * You may obtain a copy of the License at 6d9f0492fSopenharmony_ci * 7d9f0492fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8d9f0492fSopenharmony_ci * 9d9f0492fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10d9f0492fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11d9f0492fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d9f0492fSopenharmony_ci * See the License for the specific language governing permissions and 13d9f0492fSopenharmony_ci * limitations under the License. 14d9f0492fSopenharmony_ci */ 15d9f0492fSopenharmony_ci 16d9f0492fSopenharmony_ci#include <thread> 17d9f0492fSopenharmony_ci#include <gtest/gtest.h> 18d9f0492fSopenharmony_ci#include <cstdint> 19d9f0492fSopenharmony_ci#include "param_wrapper.h" 20d9f0492fSopenharmony_ci#include "parameter.h" 21d9f0492fSopenharmony_ci#include "parameters.h" 22d9f0492fSopenharmony_ci#include "sysversion.h" 23d9f0492fSopenharmony_ci#include "param_comm.h" 24d9f0492fSopenharmony_ci#include "init_param.h" 25d9f0492fSopenharmony_ci#include "sysparam_errno.h" 26d9f0492fSopenharmony_ci#include "sys_param.h" 27d9f0492fSopenharmony_ci 28d9f0492fSopenharmony_ciusing namespace std; 29d9f0492fSopenharmony_ciusing namespace testing::ext; 30d9f0492fSopenharmony_ciusing namespace OHOS; 31d9f0492fSopenharmony_ci 32d9f0492fSopenharmony_ciconst int THREAD_NUM = 5; 33d9f0492fSopenharmony_ci 34d9f0492fSopenharmony_cinamespace initModuleTest { 35d9f0492fSopenharmony_cistatic void GetAllParameterTestFunc(void) 36d9f0492fSopenharmony_ci{ 37d9f0492fSopenharmony_ci EXPECT_STRNE(GetSecurityPatchTag(), nullptr); 38d9f0492fSopenharmony_ci EXPECT_STRNE(GetOSFullName(), nullptr); 39d9f0492fSopenharmony_ci EXPECT_STRNE(GetVersionId(), nullptr); 40d9f0492fSopenharmony_ci EXPECT_STRNE(GetBuildRootHash(), nullptr); 41d9f0492fSopenharmony_ci EXPECT_STRNE(GetOsReleaseType(), nullptr); 42d9f0492fSopenharmony_ci GetSdkApiVersion(); 43d9f0492fSopenharmony_ci EXPECT_STRNE(GetDeviceType(), nullptr); 44d9f0492fSopenharmony_ci EXPECT_STRNE(GetProductModel(), nullptr); 45d9f0492fSopenharmony_ci EXPECT_STRNE(GetManufacture(), nullptr); 46d9f0492fSopenharmony_ci EXPECT_STRNE(GetBrand(), nullptr); 47d9f0492fSopenharmony_ci EXPECT_STRNE(GetMarketName(), nullptr); 48d9f0492fSopenharmony_ci EXPECT_STRNE(GetProductSeries(), nullptr); 49d9f0492fSopenharmony_ci EXPECT_STRNE(GetSoftwareModel(), nullptr); 50d9f0492fSopenharmony_ci EXPECT_STRNE(GetHardwareModel(), nullptr); 51d9f0492fSopenharmony_ci EXPECT_STRNE(GetHardwareProfile(), nullptr); 52d9f0492fSopenharmony_ci EXPECT_STRNE(GetSerial(), nullptr); 53d9f0492fSopenharmony_ci EXPECT_STRNE(GetAbiList(), nullptr); 54d9f0492fSopenharmony_ci EXPECT_STRNE(GetDisplayVersion(), nullptr); 55d9f0492fSopenharmony_ci EXPECT_STRNE(GetIncrementalVersion(), nullptr); 56d9f0492fSopenharmony_ci EXPECT_STRNE(GetBootloaderVersion(), nullptr); 57d9f0492fSopenharmony_ci EXPECT_STRNE(GetBuildType(), nullptr); 58d9f0492fSopenharmony_ci EXPECT_STRNE(GetBuildUser(), nullptr); 59d9f0492fSopenharmony_ci EXPECT_STRNE(GetBuildHost(), nullptr); 60d9f0492fSopenharmony_ci EXPECT_STRNE(GetBuildTime(), nullptr); 61d9f0492fSopenharmony_ci GetFirstApiVersion(); 62d9f0492fSopenharmony_ci EXPECT_STRNE(system::GetDeviceType().c_str(), nullptr); 63d9f0492fSopenharmony_ci} 64d9f0492fSopenharmony_ci 65d9f0492fSopenharmony_cistatic void GetUdidTestFunc(char* udid, int size) 66d9f0492fSopenharmony_ci{ 67d9f0492fSopenharmony_ci int ret = GetDevUdid(udid, size); 68d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 69d9f0492fSopenharmony_ci EXPECT_STRNE(udid, nullptr); 70d9f0492fSopenharmony_ci} 71d9f0492fSopenharmony_ci 72d9f0492fSopenharmony_cistatic void SetParameterTestFunc(const char *key, const char *value) 73d9f0492fSopenharmony_ci{ 74d9f0492fSopenharmony_ci EXPECT_EQ(SetParameter(key, value), 0); 75d9f0492fSopenharmony_ci uint32_t handle = FindParameter(key); 76d9f0492fSopenharmony_ci EXPECT_NE(handle, static_cast<unsigned int>(-1)); 77d9f0492fSopenharmony_ci uint32_t result = GetParameterCommitId(handle); 78d9f0492fSopenharmony_ci EXPECT_NE(result, static_cast<unsigned int>(-1)); 79d9f0492fSopenharmony_ci char nameGet[PARAM_NAME_LEN_MAX] = {0}; 80d9f0492fSopenharmony_ci int ret = GetParameterName(handle, nameGet, PARAM_NAME_LEN_MAX); 81d9f0492fSopenharmony_ci EXPECT_EQ(ret, strlen(nameGet)); 82d9f0492fSopenharmony_ci EXPECT_STREQ(key, nameGet); 83d9f0492fSopenharmony_ci char valueGet[PARAM_VALUE_LEN_MAX] = {0}; 84d9f0492fSopenharmony_ci ret = GetParameterValue(handle, valueGet, PARAM_VALUE_LEN_MAX); 85d9f0492fSopenharmony_ci EXPECT_EQ(ret, strlen(valueGet)); 86d9f0492fSopenharmony_ci EXPECT_STREQ(value, valueGet); 87d9f0492fSopenharmony_ci EXPECT_NE(GetSystemCommitId(), 0); 88d9f0492fSopenharmony_ci} 89d9f0492fSopenharmony_ci 90d9f0492fSopenharmony_cistatic void GetParameterTestReInt(const char *key, const char *def, char *value, uint32_t len) 91d9f0492fSopenharmony_ci{ 92d9f0492fSopenharmony_ci int ret = GetParameter(key, def, value, len); 93d9f0492fSopenharmony_ci EXPECT_EQ(ret, strlen(value)); 94d9f0492fSopenharmony_ci EXPECT_STREQ(value, "v10.1.1"); 95d9f0492fSopenharmony_ci} 96d9f0492fSopenharmony_ci 97d9f0492fSopenharmony_cistatic void GetParameterTestFuncReStr(string key, string def) 98d9f0492fSopenharmony_ci{ 99d9f0492fSopenharmony_ci string ret = system::GetParameter(key, def); 100d9f0492fSopenharmony_ci EXPECT_STREQ(ret.c_str(), "v10.1.1"); 101d9f0492fSopenharmony_ci} 102d9f0492fSopenharmony_ci 103d9f0492fSopenharmony_cistatic void ParamSetFun(string key, string value) 104d9f0492fSopenharmony_ci{ 105d9f0492fSopenharmony_ci bool ret = system::SetParameter(key, value); 106d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 107d9f0492fSopenharmony_ci string testValue = system::GetParameter(key, ""); 108d9f0492fSopenharmony_ci EXPECT_STREQ(testValue.c_str(), value.c_str()); 109d9f0492fSopenharmony_ci} 110d9f0492fSopenharmony_ci 111d9f0492fSopenharmony_cistatic void TestParameterChange(const char *key, const char *value, void *context) 112d9f0492fSopenharmony_ci{ 113d9f0492fSopenharmony_ci std::cout<<"TestParameterChange key: "<<key<<"value: "<<value<<endl; 114d9f0492fSopenharmony_ci} 115d9f0492fSopenharmony_ci 116d9f0492fSopenharmony_cistatic void TestParameterWatchChange(void) 117d9f0492fSopenharmony_ci{ 118d9f0492fSopenharmony_ci size_t index = 1; 119d9f0492fSopenharmony_ci int ret = WatchParameter("test.param.watcher.test1", TestParameterChange, reinterpret_cast<void *>(index)); 120d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 121d9f0492fSopenharmony_ci ret = RemoveParameterWatcher("test.param.watcher.test1", TestParameterChange, reinterpret_cast<void *>(index)); 122d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 123d9f0492fSopenharmony_ci} 124d9f0492fSopenharmony_ci 125d9f0492fSopenharmony_ciclass SysparaModuleTest : public testing::Test { 126d9f0492fSopenharmony_cipublic: 127d9f0492fSopenharmony_ci static void SetUpTestCase(void) {}; 128d9f0492fSopenharmony_ci static void TearDownTestCase(void) {}; 129d9f0492fSopenharmony_ci void SetUp(void) {}; 130d9f0492fSopenharmony_ci void TearDown(void) {}; 131d9f0492fSopenharmony_ci}; 132d9f0492fSopenharmony_ci 133d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_SysVersion_test_001, TestSize.Level0) 134d9f0492fSopenharmony_ci{ 135d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_SysVersion_test_001 start"; 136d9f0492fSopenharmony_ci GetMajorVersion(); 137d9f0492fSopenharmony_ci GetSeniorVersion(); 138d9f0492fSopenharmony_ci GetFeatureVersion(); 139d9f0492fSopenharmony_ci GetBuildVersion(); 140d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_SysVersion_test_001 end"; 141d9f0492fSopenharmony_ci} 142d9f0492fSopenharmony_ci 143d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_GetParam_test_002, TestSize.Level0) 144d9f0492fSopenharmony_ci{ 145d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_GetParam_test_002 start"; 146d9f0492fSopenharmony_ci for (int i = 0; i < THREAD_NUM; ++i) { 147d9f0492fSopenharmony_ci std::thread(GetAllParameterTestFunc).join(); 148d9f0492fSopenharmony_ci } 149d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_GetParam_test_002 end"; 150d9f0492fSopenharmony_ci} 151d9f0492fSopenharmony_ci 152d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_GetUdid_test_003, TestSize.Level0) 153d9f0492fSopenharmony_ci{ 154d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_GetUdid_test_003 start"; 155d9f0492fSopenharmony_ci for (int i = 0; i < THREAD_NUM; ++i) { 156d9f0492fSopenharmony_ci char udid[UDID_LEN] = {0}; 157d9f0492fSopenharmony_ci std::thread(GetUdidTestFunc, udid, UDID_LEN).join(); 158d9f0492fSopenharmony_ci } 159d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_GetUdid_test_003 end"; 160d9f0492fSopenharmony_ci} 161d9f0492fSopenharmony_ci 162d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_SetParameter_test_004, TestSize.Level0) 163d9f0492fSopenharmony_ci{ 164d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_SetParameter_test_004 start"; 165d9f0492fSopenharmony_ci char key1[] = "test1.param.version"; 166d9f0492fSopenharmony_ci char value1[] = "v10.1.1"; 167d9f0492fSopenharmony_ci char key2[] = "test2.param.version"; 168d9f0492fSopenharmony_ci char value2[] = "v10.2.2"; 169d9f0492fSopenharmony_ci char key3[] = "test3.param.version"; 170d9f0492fSopenharmony_ci char value3[] = "v10.3.3"; 171d9f0492fSopenharmony_ci std::thread(SetParameterTestFunc, key1, value1).join(); 172d9f0492fSopenharmony_ci std::thread(SetParameterTestFunc, key2, value2).join(); 173d9f0492fSopenharmony_ci std::thread(SetParameterTestFunc, key3, value3).join(); 174d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_SetParameter_test_004 end"; 175d9f0492fSopenharmony_ci} 176d9f0492fSopenharmony_ci 177d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_SetParameter_test_005, TestSize.Level0) 178d9f0492fSopenharmony_ci{ 179d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_SetParameter_test_005 start"; 180d9f0492fSopenharmony_ci // check param name length 181d9f0492fSopenharmony_ci char key1[] = "test.param.name.xxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxx"; 182d9f0492fSopenharmony_ci char value[] = "test.value.xxxx"; 183d9f0492fSopenharmony_ci int ret = SetParameter(key1, value); 184d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_INVALID); 185d9f0492fSopenharmony_ci // check param name, Illegal param name 186d9f0492fSopenharmony_ci char key2[] = ".test.param.name.xxxxx"; 187d9f0492fSopenharmony_ci ret = SetParameter(key2, value); 188d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_INVALID); 189d9f0492fSopenharmony_ci char key3[] = "test..param.name.xxxxx"; 190d9f0492fSopenharmony_ci ret = SetParameter(key3, value); 191d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_INVALID); 192d9f0492fSopenharmony_ci char key4[] = "test..param. .name"; 193d9f0492fSopenharmony_ci ret = SetParameter(key4, value); 194d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_INVALID); 195d9f0492fSopenharmony_ci // check param name, legal param name 196d9f0492fSopenharmony_ci char key5[] = "test.param.name.--__.:::"; 197d9f0492fSopenharmony_ci ret = SetParameter(key5, value); 198d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 199d9f0492fSopenharmony_ci EXPECT_STREQ(value, "test.value.xxxx"); 200d9f0492fSopenharmony_ci char key6[] = "test.param.name.@@@.---"; 201d9f0492fSopenharmony_ci ret = SetParameter(key6, value); 202d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 203d9f0492fSopenharmony_ci EXPECT_STREQ(value, "test.value.xxxx"); 204d9f0492fSopenharmony_ci // not const param, check param value, bool 8, int 32, other 96 205d9f0492fSopenharmony_ci char key7[] = "test.param.name.xxxx"; 206d9f0492fSopenharmony_ci char value1[] = "test.value.xxxxxxxxx.xxxxxxxxxxxxx.xxxxxxxxxxxx.xxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxx"; 207d9f0492fSopenharmony_ci ret = SetParameter(key7, value1); 208d9f0492fSopenharmony_ci EXPECT_EQ(ret, SYSPARAM_INVALID_VALUE); 209d9f0492fSopenharmony_ci char key8[] = "startup.service.ctl.test.int"; 210d9f0492fSopenharmony_ci char value2[] = "111111111111111111111111111111111"; 211d9f0492fSopenharmony_ci ret = SetParameter(key8, value2); 212d9f0492fSopenharmony_ci EXPECT_EQ(ret, SYSPARAM_INVALID_VALUE); 213d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_SetParameter_test_005 end"; 214d9f0492fSopenharmony_ci} 215d9f0492fSopenharmony_ci 216d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_Getparameter_test_006, TestSize.Level0) 217d9f0492fSopenharmony_ci{ 218d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_Getparameter_test_006 start"; 219d9f0492fSopenharmony_ci string key = "test.param.set.001"; 220d9f0492fSopenharmony_ci string value = "xxx.xxx.xxx"; 221d9f0492fSopenharmony_ci bool ret = system::SetParameter(key, value); 222d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 223d9f0492fSopenharmony_ci string testValue = system::GetParameter(key, ""); 224d9f0492fSopenharmony_ci EXPECT_STREQ(testValue.c_str(), value.c_str()); 225d9f0492fSopenharmony_ci // not read param value,the result is default 226d9f0492fSopenharmony_ci testValue = system::GetParameter("test.param.set.002", "aaa.aaa.aaa"); 227d9f0492fSopenharmony_ci EXPECT_STREQ(testValue.c_str(), "aaa.aaa.aaa"); 228d9f0492fSopenharmony_ci testValue = system::GetParameter("test.param.set.003", ""); 229d9f0492fSopenharmony_ci EXPECT_STREQ(testValue.c_str(), ""); 230d9f0492fSopenharmony_ci // correct set value 231d9f0492fSopenharmony_ci string key1 = "test.param.set.bool"; 232d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "1"); 233d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 234d9f0492fSopenharmony_ci EXPECT_TRUE(system::GetBoolParameter(key1, false)); 235d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "y"); 236d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 237d9f0492fSopenharmony_ci EXPECT_TRUE(system::GetBoolParameter(key1, false)); 238d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "yes"); 239d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 240d9f0492fSopenharmony_ci EXPECT_TRUE(system::GetBoolParameter(key1, false)); 241d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "on"); 242d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 243d9f0492fSopenharmony_ci EXPECT_TRUE(system::GetBoolParameter(key1, false)); 244d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "true"); 245d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 246d9f0492fSopenharmony_ci EXPECT_TRUE(system::GetBoolParameter(key1, false)); 247d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "0"); 248d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 249d9f0492fSopenharmony_ci EXPECT_FALSE(system::GetBoolParameter(key1, true)); 250d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "off"); 251d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 252d9f0492fSopenharmony_ci EXPECT_FALSE(system::GetBoolParameter(key1, true)); 253d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "n"); 254d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 255d9f0492fSopenharmony_ci EXPECT_FALSE(system::GetBoolParameter(key1, true)); 256d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "no"); 257d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 258d9f0492fSopenharmony_ci EXPECT_FALSE(system::GetBoolParameter(key1, true)); 259d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "false"); 260d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 261d9f0492fSopenharmony_ci EXPECT_FALSE(system::GetBoolParameter(key1, true)); 262d9f0492fSopenharmony_ci // set value type not bool,the result get form def 263d9f0492fSopenharmony_ci ret = system::SetParameter(key1, "test"); 264d9f0492fSopenharmony_ci EXPECT_TRUE(ret); 265d9f0492fSopenharmony_ci EXPECT_TRUE(system::GetBoolParameter(key1, true)); 266d9f0492fSopenharmony_ci EXPECT_FALSE(system::GetBoolParameter(key1, false)); 267d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_Getparameter_test_006 end"; 268d9f0492fSopenharmony_ci} 269d9f0492fSopenharmony_ci 270d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_SetParameter_test_007, TestSize.Level0) 271d9f0492fSopenharmony_ci{ 272d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_SetParameter_test_007 start"; 273d9f0492fSopenharmony_ci string key1 = "const.param.test"; 274d9f0492fSopenharmony_ci string value1 = "test.param.value.001"; 275d9f0492fSopenharmony_ci 276d9f0492fSopenharmony_ci int ret = 0; 277d9f0492fSopenharmony_ci string vRet = ""; 278d9f0492fSopenharmony_ci uint32_t handle1 = FindParameter(key1.c_str()); 279d9f0492fSopenharmony_ci cout<<"handle1 is: "<<handle1<<std::endl; 280d9f0492fSopenharmony_ci if (handle1 == static_cast<uint32_t>(-1)) { 281d9f0492fSopenharmony_ci ret = SetParameter(key1.c_str(), value1.c_str()); 282d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 283d9f0492fSopenharmony_ci vRet = system::GetParameter(key1, ""); 284d9f0492fSopenharmony_ci EXPECT_STREQ(vRet.c_str(), value1.c_str()); 285d9f0492fSopenharmony_ci } 286d9f0492fSopenharmony_ci string value2 = "test.param.value.002"; 287d9f0492fSopenharmony_ci ret = SetParameter(key1.c_str(), value2.c_str()); 288d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_INVALID); 289d9f0492fSopenharmony_ci 290d9f0492fSopenharmony_ci string key2 = "ro.param.test"; 291d9f0492fSopenharmony_ci string value3 = "test.param.value.003"; 292d9f0492fSopenharmony_ci uint32_t handle2 = FindParameter(key2.c_str()); 293d9f0492fSopenharmony_ci cout<<"handle2 is: "<<handle2<<std::endl; 294d9f0492fSopenharmony_ci if (handle2 == static_cast<uint32_t>(-1)) { 295d9f0492fSopenharmony_ci ret = SetParameter(key2.c_str(), value3.c_str()); 296d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 297d9f0492fSopenharmony_ci vRet = system::GetParameter(key2, ""); 298d9f0492fSopenharmony_ci EXPECT_STREQ(vRet.c_str(), value3.c_str()); 299d9f0492fSopenharmony_ci } 300d9f0492fSopenharmony_ci string value4 = "test.param.value.004"; 301d9f0492fSopenharmony_ci ret = SetParameter(key2.c_str(), value4.c_str()); 302d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_INVALID); 303d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_SetParameter_test_007 end"; 304d9f0492fSopenharmony_ci} 305d9f0492fSopenharmony_ci 306d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_GetParameterReIntOrStr_test_008, TestSize.Level0) 307d9f0492fSopenharmony_ci{ 308d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_GetParameterReIntOrStr_test_008 start"; 309d9f0492fSopenharmony_ci string key = "test1.param.version"; 310d9f0492fSopenharmony_ci string value = "v10.1.1"; 311d9f0492fSopenharmony_ci int ret = SetParameter(key.c_str(), value.c_str()); 312d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 313d9f0492fSopenharmony_ci char retValue[PARAM_VALUE_LEN_MAX] = {0}; 314d9f0492fSopenharmony_ci for (int i = 0; i < THREAD_NUM; ++i) { 315d9f0492fSopenharmony_ci std::thread(GetParameterTestReInt, key.c_str(), "", retValue, PARAM_VALUE_LEN_MAX).join(); 316d9f0492fSopenharmony_ci } 317d9f0492fSopenharmony_ci for (int j = 0; j < THREAD_NUM; ++j) { 318d9f0492fSopenharmony_ci std::thread(GetParameterTestFuncReStr, key, "").join(); 319d9f0492fSopenharmony_ci } 320d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_GetParameterReIntOrStr_test_008 end"; 321d9f0492fSopenharmony_ci} 322d9f0492fSopenharmony_ci 323d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_WaitParameter_test_009, TestSize.Level0) 324d9f0492fSopenharmony_ci{ 325d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_WaitParameter_test_009 start"; 326d9f0492fSopenharmony_ci // param already set succeed,waitParamter succeed. 327d9f0492fSopenharmony_ci char key[] = "test1.param.wait"; 328d9f0492fSopenharmony_ci char value[] = "aaa.bbb.ccc"; 329d9f0492fSopenharmony_ci int ret = SetParameter(key, value); 330d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 331d9f0492fSopenharmony_ci ret = WaitParameter(key, value, 5); 332d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 333d9f0492fSopenharmony_ci // param not set,waitParamter will wait param set,return succeed. 334d9f0492fSopenharmony_ci char key1[] = "test2.param.wait"; 335d9f0492fSopenharmony_ci char value1[] = "aaa.aaa.aaa"; 336d9f0492fSopenharmony_ci std::thread(ParamSetFun, key1, value1).join(); 337d9f0492fSopenharmony_ci ret = WaitParameter(key1, value1, 5); 338d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 339d9f0492fSopenharmony_ci char key2[] = "test3.param.wait"; 340d9f0492fSopenharmony_ci std::thread(ParamSetFun, key2, "*****").join(); 341d9f0492fSopenharmony_ci ret = WaitParameter(key2, "*****", 5); 342d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 343d9f0492fSopenharmony_ci // param not set,waitParamter will timeout,return failed. 344d9f0492fSopenharmony_ci char key3[] = "test4.param.wait"; 345d9f0492fSopenharmony_ci ret = WaitParameter(key3, "*****", 5); 346d9f0492fSopenharmony_ci EXPECT_EQ(ret, SYSPARAM_WAIT_TIMEOUT); 347d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_WaitParameter_test_009 end"; 348d9f0492fSopenharmony_ci} 349d9f0492fSopenharmony_ci 350d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_watcherParameter_test_010, TestSize.Level0) 351d9f0492fSopenharmony_ci{ 352d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_watcherParameter_test_010 start"; 353d9f0492fSopenharmony_ci for (int i = 0; i < THREAD_NUM; ++i) { 354d9f0492fSopenharmony_ci std::thread(TestParameterWatchChange).join(); 355d9f0492fSopenharmony_ci } 356d9f0492fSopenharmony_ci 357d9f0492fSopenharmony_ci std::thread(ParamSetFun, "test.param.watcher.test1", "test.param.value.xxx").join(); 358d9f0492fSopenharmony_ci 359d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_watcherParameter_test_010 end"; 360d9f0492fSopenharmony_ci} 361d9f0492fSopenharmony_ci 362d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_GetParameter_test_011, TestSize.Level0) 363d9f0492fSopenharmony_ci{ 364d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_GetParameter_test_011 start"; 365d9f0492fSopenharmony_ci 366d9f0492fSopenharmony_ci char key1[] = "test.param.int1"; 367d9f0492fSopenharmony_ci char value1[] = "0x111111"; 368d9f0492fSopenharmony_ci EXPECT_EQ(SetParameter(key1, value1), 0); 369d9f0492fSopenharmony_ci EXPECT_EQ(GetIntParameter(key1, 0), 1118481); // 0x111111 decimalism result 370d9f0492fSopenharmony_ci EXPECT_EQ(GetUintParameter(key1, 0), 1118481); 371d9f0492fSopenharmony_ci 372d9f0492fSopenharmony_ci char key2[] = "test.param.int2"; 373d9f0492fSopenharmony_ci char value2[] = "-0x111111"; 374d9f0492fSopenharmony_ci EXPECT_EQ(SetParameter(key2, value2), 0); 375d9f0492fSopenharmony_ci EXPECT_EQ(GetIntParameter(key2, 0), -1118481); // 0x111111 decimalism result 376d9f0492fSopenharmony_ci 377d9f0492fSopenharmony_ci GetUintParameter(key2, 0); 378d9f0492fSopenharmony_ci 379d9f0492fSopenharmony_ci char key3[] = "test.param.int3"; 380d9f0492fSopenharmony_ci char value3[] = "9999999"; 381d9f0492fSopenharmony_ci EXPECT_EQ(SetParameter(key3, value3), 0); 382d9f0492fSopenharmony_ci EXPECT_EQ(GetIntParameter(key3, 0), 9999999); // value3 int result 383d9f0492fSopenharmony_ci EXPECT_EQ(GetUintParameter(key3, 0), 9999999); // value3 uint result 384d9f0492fSopenharmony_ci 385d9f0492fSopenharmony_ci char key4[] = "test.param.int4"; 386d9f0492fSopenharmony_ci char value4[] = "-9999999"; 387d9f0492fSopenharmony_ci EXPECT_EQ(SetParameter(key4, value4), 0); 388d9f0492fSopenharmony_ci EXPECT_EQ(GetIntParameter(key4, 0), -9999999); // value4 int result 389d9f0492fSopenharmony_ci EXPECT_EQ(GetUintParameter(key4, 0), 0); 390d9f0492fSopenharmony_ci 391d9f0492fSopenharmony_ci char key5[] = "test.param.int5"; 392d9f0492fSopenharmony_ci char value5[] = "-2147483648"; // INT32_MIN 393d9f0492fSopenharmony_ci EXPECT_EQ(SetParameter(key5, value5), 0); 394d9f0492fSopenharmony_ci EXPECT_EQ(GetIntParameter(key5, 0), 0); 395d9f0492fSopenharmony_ci 396d9f0492fSopenharmony_ci char key6[] = "test.param.int6"; 397d9f0492fSopenharmony_ci char value6[] = "2147483647"; // INT32_MAX 398d9f0492fSopenharmony_ci EXPECT_EQ(SetParameter(key6, value6), 0); 399d9f0492fSopenharmony_ci EXPECT_EQ(GetIntParameter(key6, 0), 0); 400d9f0492fSopenharmony_ci 401d9f0492fSopenharmony_ci char key7[] = "test.param.uint7"; 402d9f0492fSopenharmony_ci char value7[] = "4294967295"; // UINT32_MAX 403d9f0492fSopenharmony_ci EXPECT_EQ(SetParameter(key7, value7), 0); 404d9f0492fSopenharmony_ci EXPECT_EQ(GetUintParameter(key7, 0), 0); 405d9f0492fSopenharmony_ci 406d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_GetParameter_test_011 end"; 407d9f0492fSopenharmony_ci} 408d9f0492fSopenharmony_ci 409d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_CacheParameter_test_001, TestSize.Level0) 410d9f0492fSopenharmony_ci{ 411d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_CacheParameter_test_001 start"; 412d9f0492fSopenharmony_ci 413d9f0492fSopenharmony_ci const char *name = "test.write.1111111.222222"; 414d9f0492fSopenharmony_ci CachedHandle cacheHandle = CachedParameterCreate(name, "true"); 415d9f0492fSopenharmony_ci EXPECT_NE(cacheHandle, nullptr); 416d9f0492fSopenharmony_ci const char *value = CachedParameterGet(cacheHandle); 417d9f0492fSopenharmony_ci int ret = SetParameter(name, "false"); 418d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 419d9f0492fSopenharmony_ci 420d9f0492fSopenharmony_ci value = CachedParameterGet(cacheHandle); 421d9f0492fSopenharmony_ci EXPECT_EQ(strcmp(value, "false"), 0); 422d9f0492fSopenharmony_ci CachedParameterDestroy(cacheHandle); 423d9f0492fSopenharmony_ci 424d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_CacheParameter_test_001 end"; 425d9f0492fSopenharmony_ci} 426d9f0492fSopenharmony_ci 427d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_CacheParameter_test_002, TestSize.Level0) 428d9f0492fSopenharmony_ci{ 429d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_CacheParameter_test_002 start"; 430d9f0492fSopenharmony_ci 431d9f0492fSopenharmony_ci const char *name = "test.write.1111111.333333"; 432d9f0492fSopenharmony_ci int ret = SetParameter(name, "3333"); 433d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 434d9f0492fSopenharmony_ci CachedHandle cacheHandle3 = CachedParameterCreate(name, "true"); 435d9f0492fSopenharmony_ci EXPECT_NE(cacheHandle3, nullptr); 436d9f0492fSopenharmony_ci const char *value = CachedParameterGet(cacheHandle3); 437d9f0492fSopenharmony_ci EXPECT_EQ(strcmp(value, "3333"), 0); 438d9f0492fSopenharmony_ci 439d9f0492fSopenharmony_ci ret = SetParameter(name, "2222222"); 440d9f0492fSopenharmony_ci EXPECT_EQ(ret, 0); 441d9f0492fSopenharmony_ci int valueChange = 0; 442d9f0492fSopenharmony_ci value = CachedParameterGetChanged(cacheHandle3, &valueChange); 443d9f0492fSopenharmony_ci EXPECT_EQ(strcmp(value, "2222222"), 0); 444d9f0492fSopenharmony_ci EXPECT_EQ(valueChange, 1); 445d9f0492fSopenharmony_ci CachedParameterDestroy(cacheHandle3); 446d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_CacheParameter_test_002 end"; 447d9f0492fSopenharmony_ci} 448d9f0492fSopenharmony_ci 449d9f0492fSopenharmony_ciHWTEST_F(SysparaModuleTest, Syspara_SaveParameters_test_001, TestSize.Level0) 450d9f0492fSopenharmony_ci{ 451d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_SaveParameters_test_001 start"; 452d9f0492fSopenharmony_ci 453d9f0492fSopenharmony_ci char key1[] = "test.param.int1"; 454d9f0492fSopenharmony_ci char value1[] = "0x111111"; 455d9f0492fSopenharmony_ci EXPECT_EQ(SetParameter(key1, value1), 0); 456d9f0492fSopenharmony_ci char key2[] = "persist.test.param.int2"; 457d9f0492fSopenharmony_ci char value2[] = "-0x111111"; 458d9f0492fSopenharmony_ci EXPECT_EQ(SetParameter(key2, value2), 0); 459d9f0492fSopenharmony_ci EXPECT_EQ(SaveParameters(), 0); 460d9f0492fSopenharmony_ci 461d9f0492fSopenharmony_ci GTEST_LOG_(INFO) << "Syspara_SaveParameters_test_001 end"; 462d9f0492fSopenharmony_ci} 463d9f0492fSopenharmony_ci}