提交 92cb2fa0 编写于 作者: O openharmony_ci 提交者: Gitee

!240 ...

!240  【轻鸿蒙内核子系统集成测试】下架time模块性能测试用例SleepTest.cpp#testUsleepAccuracy#testSleepAccuracy#testClockNanosleepAccuracy#
Merge pull request !240 from 南先森/kernel_lite_20210602_04
上级 f6acc234 1cd0a188
master 0303 OpenHarmony-2.2-Beta2 OpenHarmony-2.3-Beta OpenHarmony-3.0-LTS OpenHarmony-3.1-API8-SDK-Public OpenHarmony-3.1-API9-SDK-Canary OpenHarmony-3.1-Beta OpenHarmony-3.1-Release OpenHarmony-3.2-Beta1 OpenHarmony-3.2-Beta2 OpenHarmony-3.2-Beta3 OpenHarmony-3.2-Beta4 OpenHarmony-3.2-Beta5 OpenHarmony-3.2-Release OpenHarmony-4.0-Beta1 OpenHarmony-4.0-Beta2 OpenHarmony-v2.2-Beta OpenHarmony_filemanager_develop_20220505 OpenHarmony_filemanager_develop_20220614 feature_IDL_20220811 jh0621 master_dy monthly_20220614 monthly_20220816 monthly_20221018 monthly_20230815 myfeature1 myfrature origin/monthly_20220816 resource0125 revert-merge-1127-OpenHarmony-3.0-LTS revert-merge-4467-master revert-merge-483-master revert-merge-5164-master revert-merge-5846-master revert-merge-5923-master revert-merge-6291-monthly_20221018 revert-merge-6553-master revert-merge-7801-master revert-merge-8920-master revert-merge-9046-master revert-merge-9047-master revert-merge-9049-master revert-merge-9077-master revert-merge-9108-master revert-merge-9210-master revert-merge-9281-master revert-merge-9324-master revert-merge-9325-master revert-merge-9329-master revert-merge-9330-master revert-merge-9359-master revert-merge-9361-master startup1218 startup121802 startup1220 startup_0303 update_master_0415 weekly_20220105 weekly_20220111 weekly_20220118 weekly_20220125 weekly_20220201 weekly_20220208 weekly_20220215 weekly_20220222 weekly_20220301 weekly_20220406 weekly_20220412 weekly_20220419 weekly_20220426 weekly_20220503 weekly_20220510 weekly_20220524 weekly_20220531 weekly_20220607 weekly_20220614 weekly_20220621 weekly_20220628 weekly_20220705 weekly_20220712 weekly_20220719 weekly_20220726 weekly_20220802 weekly_20220809 weekly_20220816 weekly_20220823 weekly_20220830 weekly_20220906 weekly_20220913 weekly_20220920 weekly_20220927 weekly_20221004 weekly_20221011 weekly_20221018 weekly_20221025 weekly_20221101 weekly_20221108 weekly_20221115 weekly_20221122 weekly_20221129 weekly_20221206 weekly_20221213 weekly_20221220 weekly_20221227 weekly_20230103 weekly_20230110 weekly_20230117 weekly_20230124 weekly_20230131 weekly_20230207 weekly_20230214 weekly_20230221 weekly_20230228 weekly_20230307 weekly_20230314 weekly_20230321 weekly_20230328 weekly_20230404 weekly_20230411 weekly_20230418 weekly_20230425 weekly_20230502 weekly_20230509 weekly_20230516 weekly_20230523 weekly_20230530 weekly_20230606 weekly_20230613 weekly_20230619 weekly_20230626 weekly_20230627 weekly_20230704 weekly_20230712 weekly_20230725 weekly_20230801 weekly_20230808 weekly_20230815 weekly_20230822 weekly_20230829 OpenHarmony-v4.0-Beta2 OpenHarmony-v4.0-Beta1 OpenHarmony-v3.2.2-Release OpenHarmony-v3.2.1-Release OpenHarmony-v3.2-Release OpenHarmony-v3.2-Beta5 OpenHarmony-v3.2-Beta4 OpenHarmony-v3.2-Beta3 OpenHarmony-v3.2-Beta2 OpenHarmony-v3.2-Beta1 OpenHarmony-v3.1.7-Release OpenHarmony-v3.1.6-Release OpenHarmony-v3.1.5-Release OpenHarmony-v3.1.4-Release OpenHarmony-v3.1.3-Release OpenHarmony-v3.1.2-Release OpenHarmony-v3.1.1-Release OpenHarmony-v3.1-Release OpenHarmony-v3.1-Beta OpenHarmony-v3.0.8-LTS OpenHarmony-v3.0.7-LTS OpenHarmony-v3.0.6-LTS OpenHarmony-v3.0.5-LTS OpenHarmony-v3.0.3-LTS OpenHarmony-v3.0.2-LTS OpenHarmony-v3.0.1-LTS OpenHarmony-v3.0-LTS OpenHarmony-v3.0-Beta1 OpenHarmony-v2.2-Beta2
无相关合并请求
...@@ -24,151 +24,13 @@ ...@@ -24,151 +24,13 @@
using namespace testing::ext; using namespace testing::ext;
const int SLEEP_ACCURACY = 21 * 1000; // 20 ms, with 1ms deviation class UsleepParamTest : public testing::TestWithParam<int> {
const int ACCURACY_TEST_LOOPS = 5; // loops for accuracy test, than count average value
class UsleepParamTest : public testing::TestWithParam<int>
{
}; };
class SleepParamTest : public testing::TestWithParam<int> class SleepParamTest : public testing::TestWithParam<int> {
{
}; };
class SleepTest : public testing::Test class SleepTest : public testing::Test {
{
}; };
static void usleepAccuracyTest(int interVal)
{
int interval = interVal;
LOG("\ntest interval:%d", interval);
struct timespec time1 = {0}, time2 = {0};
long duration; // unit: us
double d = 0.0;
for (int i = 1; i <= ACCURACY_TEST_LOOPS; i++)
{
clock_gettime(CLOCK_MONOTONIC, &time1);
int rt = usleep(interval);
clock_gettime(CLOCK_MONOTONIC, &time2);
EXPECT_EQ(rt, 0);
//duration = (time2.tv_sec - time1.tv_sec)*1000000 + (time2.tv_nsec - time1.tv_nsec)/1000;
duration = (time2.tv_sec * 1000000 + time2.tv_nsec / 1000) - (time1.tv_sec * 1000000 + time1.tv_nsec / 1000);
d += duration;
}
d = d / ACCURACY_TEST_LOOPS; // average
LOG("average duration: %.2f", d);
EXPECT_GE(d, interval) << "actual sleep time shoud greater or equal to the input-parameter\n";
ASSERT_NEAR(d, interval, SLEEP_ACCURACY) << "usleep accuracy check fail\n";
}
static void *ttestUsleepAccuracyThread(void *param)
{
int interval = (int)param;
usleepAccuracyTest(interval);
return 0;
}
/**
* @tc.number SUB_KERNEL_TIME_API_USLEEP_0100
* @tc.name usleep accuracy test
* @tc.desc [C- SOFTWARE -0200]
*/
HWTEST_P(UsleepParamTest, testUsleepAccuracy, Performance | SmallTest | Level1)
{
int interVal = GetParam();
pthread_t tid;
pthread_create(&tid, 0, ttestUsleepAccuracyThread, (void *)interVal);
pthread_setschedprio(tid, 1);
pthread_join(tid, 0);
}
INSTANTIATE_TEST_CASE_P(SleepTest, UsleepParamTest,
testing::Values(100, 1000, 10 * 1000, 20 * 1000, 30 * 1000, 300 * 1000, 3000 * 1000));
/**
* @tc.number SUB_KERNEL_TIME_API_SLEEP_0100
* @tc.name sleep accuracy test
* @tc.desc [C- SOFTWARE -0200]
*/
HWTEST_P(SleepParamTest, testSleepAccuracy, Performance | SmallTest | Level1)
{
int testLoop = 3;
int interval = GetParam();
LOG("\ntest interval:%d", interval);
struct timespec time1 = {0}, time2 = {0};
double duration;
double d = 0.0;
for (int i = 1; i <= testLoop; i++)
{
clock_gettime(CLOCK_MONOTONIC, &time1);
int rt = sleep(interval);
clock_gettime(CLOCK_MONOTONIC, &time2);
EXPECT_EQ(rt, 0);
duration = (time2.tv_sec - time1.tv_sec) + (time2.tv_nsec - time1.tv_nsec) / 1000000000.0;
LOG("testloop %d, actual sleep duration: %.1f s", i, duration);
d += duration;
}
d = d / testLoop; // average
LOG("average duration: %.2f", d);
ASSERT_NEAR(d, interval, interval * 0.03) << "sleep accuracy check fail\n";
}
INSTANTIATE_TEST_CASE_P(SleepTest, SleepParamTest, testing::Values(1, 5, 30));
/**
* @tc.number SUB_KERNEL_TIME_API_NANOSLEEP_0100
* @tc.name nanosleep accuracy test
* @tc.desc [C- SOFTWARE -0200]
*/
HWTEST_F(SleepTest, testNanosleepAccuracy, Performance | SmallTest | Level2)
{
long interval = 50 * 1000 * 1000;
struct timespec req = {0, interval};
struct timespec rem = {0, 0};
struct timespec time1 = {0}, time2 = {0};
double duration;
double d = 0.0;
for (int i = 1; i <= ACCURACY_TEST_LOOPS; i++)
{
clock_gettime(CLOCK_MONOTONIC, &time1);
int rt = nanosleep(&req, &rem);
clock_gettime(CLOCK_MONOTONIC, &time2);
EXPECT_EQ(rt, 0);
duration = (time2.tv_sec * 1000000 + time2.tv_nsec / 1000) - (time1.tv_sec * 1000000 + time1.tv_nsec / 1000);
LOG("testloop %d, actual sleep duration: %.1f s", i, duration);
d += duration;
}
d = d / ACCURACY_TEST_LOOPS; // average
LOG("average duration: %.2f", d);
ASSERT_NEAR(d, interval / 1000, SLEEP_ACCURACY) << "sleep accuracy check fail\n";
}
/**
* @tc.number SUB_KERNEL_TIME_API_CLOCK_NANOSLEEP_0100
* @tc.name clock_nanosleep accuracy test
* @tc.desc [C- SOFTWARE -0200]
*/
HWTEST_F(SleepTest, testClockNanosleepAccuracy, Performance | SmallTest | Level2)
{
long interval = 25 * 1000 * 1000;
struct timespec req = {0, interval};
struct timespec rem = {0, 0};
struct timespec time1 = {0}, time2 = {0};
double duration;
double d = 0.0;
for (int i = 1; i <= ACCURACY_TEST_LOOPS; i++)
{
clock_gettime(CLOCK_MONOTONIC, &time1);
int rt = clock_nanosleep(CLOCK_REALTIME, 0, &req, &rem);
clock_gettime(CLOCK_MONOTONIC, &time2);
EXPECT_EQ(rt, 0);
duration = (time2.tv_sec * 1000000 + time2.tv_nsec / 1000) - (time1.tv_sec * 1000000 + time1.tv_nsec / 1000);
LOG("testloop %d, actual sleep duration: %.1f s", i, duration);
d += duration;
}
d = d / ACCURACY_TEST_LOOPS; // average
LOG("average duration: %.2f", d);
ASSERT_NEAR(d, interval / 1000, SLEEP_ACCURACY) << "sleep accuracy check fail\n";
}
/** /**
* @tc.number SUB_KERNEL_TIME_API_CLOCK_NANOSLEEP_0200 * @tc.number SUB_KERNEL_TIME_API_CLOCK_NANOSLEEP_0200
* @tc.name clock_nanosleep fail test - non-support clock_id * @tc.name clock_nanosleep fail test - non-support clock_id
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册
反馈
建议
客服 返回
顶部