1484543d1Sopenharmony_ci/* 2484543d1Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3484543d1Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4484543d1Sopenharmony_ci * you may not use this file except in compliance with the License. 5484543d1Sopenharmony_ci * You may obtain a copy of the License at 6484543d1Sopenharmony_ci * 7484543d1Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8484543d1Sopenharmony_ci * 9484543d1Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10484543d1Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11484543d1Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12484543d1Sopenharmony_ci * See the License for the specific language governing permissions and 13484543d1Sopenharmony_ci * limitations under the License. 14484543d1Sopenharmony_ci */ 15484543d1Sopenharmony_ci 16484543d1Sopenharmony_ci#include <gtest/gtest.h> 17484543d1Sopenharmony_ci#include <thread> 18484543d1Sopenharmony_ci#include <cstdio> 19484543d1Sopenharmony_ci#include <cstdlib> 20484543d1Sopenharmony_ci#include <unistd.h> 21484543d1Sopenharmony_ci#include <sys/ioctl.h> 22484543d1Sopenharmony_ci#include <fcntl.h> 23484543d1Sopenharmony_ci#include <unistd.h> 24484543d1Sopenharmony_ci#include <sys/syscall.h> 25484543d1Sopenharmony_ci#include <linux/types.h> 26484543d1Sopenharmony_ci#include "eu/qos_interface.h" 27484543d1Sopenharmony_ci#include "ffrt_inner.h" 28484543d1Sopenharmony_ci#include "common.h" 29484543d1Sopenharmony_ci 30484543d1Sopenharmony_ci#define GET_TID() syscall(SYS_gettid) 31484543d1Sopenharmony_ci 32484543d1Sopenharmony_ciusing namespace testing; 33484543d1Sopenharmony_ci#ifdef HWTEST_TESTING_EXT_ENABLE 34484543d1Sopenharmony_ciusing namespace testing::ext; 35484543d1Sopenharmony_ci#endif 36484543d1Sopenharmony_ciusing namespace ffrt; 37484543d1Sopenharmony_ci 38484543d1Sopenharmony_ciclass QosInterfaceTest : public testing::Test { 39484543d1Sopenharmony_ciprotected: 40484543d1Sopenharmony_ci static void SetUpTestCase() 41484543d1Sopenharmony_ci { 42484543d1Sopenharmony_ci } 43484543d1Sopenharmony_ci 44484543d1Sopenharmony_ci static void TearDownTestCase() 45484543d1Sopenharmony_ci { 46484543d1Sopenharmony_ci } 47484543d1Sopenharmony_ci 48484543d1Sopenharmony_ci virtual void SetUp() 49484543d1Sopenharmony_ci { 50484543d1Sopenharmony_ci } 51484543d1Sopenharmony_ci 52484543d1Sopenharmony_ci virtual void TearDown() 53484543d1Sopenharmony_ci { 54484543d1Sopenharmony_ci } 55484543d1Sopenharmony_ci}; 56484543d1Sopenharmony_ci 57484543d1Sopenharmony_ci/** 58484543d1Sopenharmony_ci * @tc.name: FFRTEnableRtg_test 59484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTEnableRtg interface are normal. 60484543d1Sopenharmony_ci * @tc.type: FUNC 61484543d1Sopenharmony_ci */ 62484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTEnableRtgTest, TestSize.Level1) 63484543d1Sopenharmony_ci{ 64484543d1Sopenharmony_ci bool flag = false; 65484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTEnableRtg(flag)); 66484543d1Sopenharmony_ci 67484543d1Sopenharmony_ci flag = true; 68484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTEnableRtg(flag)); 69484543d1Sopenharmony_ci} 70484543d1Sopenharmony_ci 71484543d1Sopenharmony_ci/** 72484543d1Sopenharmony_ci * @tc.name: FFRTAuthEnable_test 73484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTAuthEnable interface are normal. 74484543d1Sopenharmony_ci * @tc.type: FUNC 75484543d1Sopenharmony_ci */ 76484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTAuthEnableTest, TestSize.Level1) 77484543d1Sopenharmony_ci{ 78484543d1Sopenharmony_ci unsigned int uid = getpid(); 79484543d1Sopenharmony_ci unsigned int uaFlag = 0x1fff; 80484543d1Sopenharmony_ci unsigned int status = 3; 81484543d1Sopenharmony_ci 82484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTAuthEnable(uid, uaFlag, status)); 83484543d1Sopenharmony_ci} 84484543d1Sopenharmony_ci 85484543d1Sopenharmony_ci/** 86484543d1Sopenharmony_ci * @tc.name: FFRTAuthSwitch_test 87484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTAuthSwitch interface are normal. 88484543d1Sopenharmony_ci * @tc.type: FUNC 89484543d1Sopenharmony_ci */ 90484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTAuthSwitchTest, TestSize.Level1) 91484543d1Sopenharmony_ci{ 92484543d1Sopenharmony_ci unsigned int uid = getpid(); 93484543d1Sopenharmony_ci unsigned int rtgFlag = 0x1fff; 94484543d1Sopenharmony_ci unsigned int qosFlag = 0x0003; 95484543d1Sopenharmony_ci unsigned int status = 3; 96484543d1Sopenharmony_ci 97484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTAuthSwitch(uid, rtgFlag, qosFlag, status)); 98484543d1Sopenharmony_ci} 99484543d1Sopenharmony_ci 100484543d1Sopenharmony_ci/** 101484543d1Sopenharmony_ci * @tc.name: FFRTAuthDelete_test 102484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTAuthDelete interface are normal. 103484543d1Sopenharmony_ci * @tc.type: FUNC 104484543d1Sopenharmony_ci */ 105484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTAuthDeleteTest, TestSize.Level1) 106484543d1Sopenharmony_ci{ 107484543d1Sopenharmony_ci unsigned int uid = getpid(); 108484543d1Sopenharmony_ci 109484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTAuthDelete(uid)); 110484543d1Sopenharmony_ci} 111484543d1Sopenharmony_ci 112484543d1Sopenharmony_ci/** 113484543d1Sopenharmony_ci * @tc.name: FFRTAuthPause_test 114484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTAuthPause interface are normal. 115484543d1Sopenharmony_ci * @tc.type: FUNC 116484543d1Sopenharmony_ci */ 117484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTAuthPauseTest, TestSize.Level1) 118484543d1Sopenharmony_ci{ 119484543d1Sopenharmony_ci unsigned int uid = getpid(); 120484543d1Sopenharmony_ci unsigned int uaFlag = 0x1fff; 121484543d1Sopenharmony_ci unsigned int status = 3; 122484543d1Sopenharmony_ci FFRTAuthEnable(uid, uaFlag, status); 123484543d1Sopenharmony_ci 124484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTAuthPause(uid)); 125484543d1Sopenharmony_ci} 126484543d1Sopenharmony_ci 127484543d1Sopenharmony_ci/** 128484543d1Sopenharmony_ci * @tc.name: FFRTAuthGet_test 129484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTAuthGet interface are normal. 130484543d1Sopenharmony_ci * @tc.type: FUNC 131484543d1Sopenharmony_ci */ 132484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTAuthGetTest, TestSize.Level1) 133484543d1Sopenharmony_ci{ 134484543d1Sopenharmony_ci unsigned int uid = getpid(); 135484543d1Sopenharmony_ci unsigned int uaFlag = 0x1fff; 136484543d1Sopenharmony_ci unsigned int status = 3; 137484543d1Sopenharmony_ci 138484543d1Sopenharmony_ci FFRTAuthEnable(uid, uaFlag, status); 139484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTAuthGet(uid, &uaFlag, &status)); 140484543d1Sopenharmony_ci} 141484543d1Sopenharmony_ci 142484543d1Sopenharmony_ci/** 143484543d1Sopenharmony_ci * @tc.name: FFRTQosApply_test 144484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTQosApply interface are normal. 145484543d1Sopenharmony_ci * @tc.type: FUNC 146484543d1Sopenharmony_ci */ 147484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTQosApplyTest, TestSize.Level1) 148484543d1Sopenharmony_ci{ 149484543d1Sopenharmony_ci unsigned int level = 1; 150484543d1Sopenharmony_ci 151484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTQosApply(level)); 152484543d1Sopenharmony_ci} 153484543d1Sopenharmony_ci 154484543d1Sopenharmony_ci/** 155484543d1Sopenharmony_ci * @tc.name: FFRTQosApplyForOther_test 156484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTQosApplyForOther interface are normal. 157484543d1Sopenharmony_ci * @tc.type: FUNC 158484543d1Sopenharmony_ci */ 159484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTQosApplyForOtherTest, TestSize.Level1) 160484543d1Sopenharmony_ci{ 161484543d1Sopenharmony_ci unsigned int level = 1; 162484543d1Sopenharmony_ci int tid = GET_TID(); 163484543d1Sopenharmony_ci 164484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTQosApplyForOther(level, tid)); 165484543d1Sopenharmony_ci} 166484543d1Sopenharmony_ci 167484543d1Sopenharmony_ci/** 168484543d1Sopenharmony_ci * @tc.name: FFRTQosLeave_test 169484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTQosLeave interface are normal. 170484543d1Sopenharmony_ci * @tc.type: FUNC 171484543d1Sopenharmony_ci */ 172484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTQosLeaveTest, TestSize.Level1) 173484543d1Sopenharmony_ci{ 174484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTQosLeave()); 175484543d1Sopenharmony_ci} 176484543d1Sopenharmony_ci 177484543d1Sopenharmony_ci/** 178484543d1Sopenharmony_ci * @tc.name: FFRTQosLeaveForOther_test 179484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTQosLeaveForOther interface are normal. 180484543d1Sopenharmony_ci * @tc.type: FUNC 181484543d1Sopenharmony_ci */ 182484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTQosLeaveForOtherTest, TestSize.Level1) 183484543d1Sopenharmony_ci{ 184484543d1Sopenharmony_ci unsigned int level = 1; 185484543d1Sopenharmony_ci int tid = GET_TID(); 186484543d1Sopenharmony_ci FFRTQosApplyForOther(level, tid); 187484543d1Sopenharmony_ci 188484543d1Sopenharmony_ci EXPECT_EQ(0, FFRTQosLeaveForOther(tid)); 189484543d1Sopenharmony_ci} 190484543d1Sopenharmony_ci 191484543d1Sopenharmony_ci/** 192484543d1Sopenharmony_ci * @tc.name: QosPolicyTest 193484543d1Sopenharmony_ci * @tc.desc: Test whether the QosPolicy interface are normal. 194484543d1Sopenharmony_ci * @tc.type: FUNC 195484543d1Sopenharmony_ci */ 196484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, QosPolicyTest, TestSize.Level1) 197484543d1Sopenharmony_ci{ 198484543d1Sopenharmony_ci struct QosPolicyData qp = {0, 0, 0, 0, 0}; 199484543d1Sopenharmony_ci struct QosPolicyDatas policyDatas = {0, 0, {qp}}; 200484543d1Sopenharmony_ci 201484543d1Sopenharmony_ci EXPECT_EQ(-1, QosPolicy(&policyDatas)); 202484543d1Sopenharmony_ci} 203