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 16#include "gtest/gtest.h" 17 18#include "qos.h" 19 20 21using namespace std; 22using namespace testing::ext; 23class QoSTestSuite : public testing::Test { 24protected: 25 // Preset action of the test suite, which is executed before the first test case 26 static void SetUpTestCase(void) { 27 } 28 // Test suite cleanup action, which is executed after the last test case 29 static void TearDownTestCase(void) { 30 } 31 // Preset action of the test case 32 virtual void SetUp() 33 { 34 } 35 // Cleanup action of the test case 36 virtual void TearDown() 37 { 38 } 39}; 40 41/** 42 * @tc.name: SetThreadQoSNdkTest 43 * @tc.desc: Verify the Set QoSLevel function. 44 * @tc.type: FUNC 45 */ 46HWTEST_F(QoSTestSuite, SetThreadQoSNdkTest, Function | MediumTest | Level1) 47{ 48 int ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND); 49 EXPECT_EQ(ret, 0); 50 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_UTILITY); 51 EXPECT_EQ(ret, 0); 52 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEFAULT); 53 EXPECT_EQ(ret, 0); 54 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INITIATED); 55 EXPECT_EQ(ret, 0); 56 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEADLINE_REQUEST); 57 EXPECT_EQ(ret, 0); 58 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INTERACTIVE); 59 EXPECT_EQ(ret, 0); 60 ret = OH_QoS_SetThreadQoS(QoS_Level(-1)); 61 EXPECT_EQ(ret, -1); 62 ret = OH_QoS_SetThreadQoS(QoS_Level(6)); 63 EXPECT_EQ(ret, -1); 64 ret = OH_QoS_SetThreadQoS(QoS_Level(1024)); 65 EXPECT_EQ(ret, -1); 66} 67 68/** 69 * @tc.name: ResetThreadQoSNdkTest 70 * @tc.desc: Verify the Reset QoSLevel function. 71 * @tc.type: FUNC 72 */ 73HWTEST_F(QoSTestSuite, ResetThreadQoSNdkTest, Function | MediumTest | Level1) 74{ 75 int ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND); 76 EXPECT_EQ(ret, 0); 77 ret = OH_QoS_ResetThreadQoS(); 78 EXPECT_EQ(ret, 0); 79 80 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_UTILITY); 81 EXPECT_EQ(ret, 0); 82 ret = OH_QoS_ResetThreadQoS(); 83 EXPECT_EQ(ret, 0); 84 85 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEFAULT); 86 EXPECT_EQ(ret, 0); 87 ret = OH_QoS_ResetThreadQoS(); 88 EXPECT_EQ(ret, 0); 89 90 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INITIATED); 91 EXPECT_EQ(ret, 0); 92 ret = OH_QoS_ResetThreadQoS(); 93 EXPECT_EQ(ret, 0); 94 95 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEADLINE_REQUEST); 96 EXPECT_EQ(ret, 0); 97 ret = OH_QoS_ResetThreadQoS(); 98 EXPECT_EQ(ret, 0); 99 100 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INTERACTIVE); 101 EXPECT_EQ(ret, 0); 102 ret = OH_QoS_ResetThreadQoS(); 103 EXPECT_EQ(ret, 0); 104} 105 106/** 107 * @tc.name: GetThreadQoSNdkTest 108 * @tc.desc: Verify the Get QoSLevel function. 109 * @tc.type: FUNC 110 */ 111HWTEST_F(QoSTestSuite, GetThreadQoSNdkTest, Function | MediumTest | Level1) 112{ 113 int ret = OH_QoS_GetThreadQoS(nullptr); 114 EXPECT_EQ(ret, -1); 115 116 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND); 117 EXPECT_EQ(ret, 0); 118 enum QoS_Level level; 119 ret = OH_QoS_GetThreadQoS(&level); 120 EXPECT_EQ(ret, 0); 121 EXPECT_EQ(level, QoS_Level::QOS_BACKGROUND); 122 123 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_UTILITY); 124 EXPECT_EQ(ret, 0); 125 ret = OH_QoS_GetThreadQoS(&level); 126 EXPECT_EQ(ret, 0); 127 EXPECT_EQ(level, QoS_Level::QOS_UTILITY); 128 129 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEFAULT); 130 EXPECT_EQ(ret, 0); 131 ret = OH_QoS_GetThreadQoS(&level); 132 EXPECT_EQ(ret, 0); 133 EXPECT_EQ(level, QoS_Level::QOS_DEFAULT); 134 135 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INITIATED); 136 EXPECT_EQ(ret, 0); 137 ret = OH_QoS_GetThreadQoS(&level); 138 EXPECT_EQ(ret, 0); 139 EXPECT_EQ(level, QoS_Level::QOS_USER_INITIATED); 140 141 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEADLINE_REQUEST); 142 EXPECT_EQ(ret, 0); 143 ret = OH_QoS_GetThreadQoS(&level); 144 EXPECT_EQ(ret, 0); 145 EXPECT_EQ(level, QoS_Level::QOS_DEADLINE_REQUEST); 146 147 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INTERACTIVE); 148 EXPECT_EQ(ret, 0); 149 ret = OH_QoS_GetThreadQoS(&level); 150 EXPECT_EQ(ret, 0); 151 EXPECT_EQ(level, QoS_Level::QOS_USER_INTERACTIVE); 152 153 ret = OH_QoS_ResetThreadQoS(); 154 EXPECT_EQ(ret, 0); 155 ret = OH_QoS_GetThreadQoS(&level); 156 EXPECT_EQ(ret, -1); 157} 158 159/** 160 * @tc.name: ThreadQoSNdkTest 161 * @tc.desc: Double Test ThreadQoSNDKTest function. 162 * @tc.type: FUNC 163 */ 164HWTEST_F(QoSTestSuite, ThreadQoSNdkTest, Function | MediumTest | Level1) 165{ 166 int ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND); 167 EXPECT_EQ(ret, 0); 168 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND); 169 EXPECT_EQ(ret, 0); 170 171 enum QoS_Level level; 172 ret = OH_QoS_GetThreadQoS(&level); 173 EXPECT_EQ(ret, 0); 174 EXPECT_EQ(level, QoS_Level::QOS_BACKGROUND); 175 ret = OH_QoS_GetThreadQoS(&level); 176 EXPECT_EQ(ret, 0); 177 EXPECT_EQ(level, QoS_Level::QOS_BACKGROUND); 178 179 ret = OH_QoS_ResetThreadQoS(); 180 EXPECT_EQ(ret, 0); 181 ret = OH_QoS_ResetThreadQoS(); 182 EXPECT_EQ(ret, -1); 183} 184