1f6603c60Sopenharmony_ci/* 2f6603c60Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3f6603c60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4f6603c60Sopenharmony_ci * you may not use this file except in compliance with the License. 5f6603c60Sopenharmony_ci * You may obtain a copy of the License at 6f6603c60Sopenharmony_ci * 7f6603c60Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8f6603c60Sopenharmony_ci * 9f6603c60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10f6603c60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11f6603c60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f6603c60Sopenharmony_ci * See the License for the specific language governing permissions and 13f6603c60Sopenharmony_ci * limitations under the License. 14f6603c60Sopenharmony_ci */ 15f6603c60Sopenharmony_ci 16f6603c60Sopenharmony_ci#include "gtest/gtest.h" 17f6603c60Sopenharmony_ci 18f6603c60Sopenharmony_ci#include "qos.h" 19f6603c60Sopenharmony_ci 20f6603c60Sopenharmony_ci 21f6603c60Sopenharmony_ciusing namespace std; 22f6603c60Sopenharmony_ciusing namespace testing::ext; 23f6603c60Sopenharmony_ciclass QoSTestSuite : public testing::Test { 24f6603c60Sopenharmony_ciprotected: 25f6603c60Sopenharmony_ci // Preset action of the test suite, which is executed before the first test case 26f6603c60Sopenharmony_ci static void SetUpTestCase(void) { 27f6603c60Sopenharmony_ci } 28f6603c60Sopenharmony_ci // Test suite cleanup action, which is executed after the last test case 29f6603c60Sopenharmony_ci static void TearDownTestCase(void) { 30f6603c60Sopenharmony_ci } 31f6603c60Sopenharmony_ci // Preset action of the test case 32f6603c60Sopenharmony_ci virtual void SetUp() 33f6603c60Sopenharmony_ci { 34f6603c60Sopenharmony_ci } 35f6603c60Sopenharmony_ci // Cleanup action of the test case 36f6603c60Sopenharmony_ci virtual void TearDown() 37f6603c60Sopenharmony_ci { 38f6603c60Sopenharmony_ci } 39f6603c60Sopenharmony_ci}; 40f6603c60Sopenharmony_ci 41f6603c60Sopenharmony_ci/** 42f6603c60Sopenharmony_ci * @tc.name: SetThreadQoSNdkTest 43f6603c60Sopenharmony_ci * @tc.desc: Verify the Set QoSLevel function. 44f6603c60Sopenharmony_ci * @tc.type: FUNC 45f6603c60Sopenharmony_ci */ 46f6603c60Sopenharmony_ciHWTEST_F(QoSTestSuite, SetThreadQoSNdkTest, Function | MediumTest | Level1) 47f6603c60Sopenharmony_ci{ 48f6603c60Sopenharmony_ci int ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND); 49f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 50f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_UTILITY); 51f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 52f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEFAULT); 53f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 54f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INITIATED); 55f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 56f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEADLINE_REQUEST); 57f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 58f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INTERACTIVE); 59f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 60f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level(-1)); 61f6603c60Sopenharmony_ci EXPECT_EQ(ret, -1); 62f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level(6)); 63f6603c60Sopenharmony_ci EXPECT_EQ(ret, -1); 64f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level(1024)); 65f6603c60Sopenharmony_ci EXPECT_EQ(ret, -1); 66f6603c60Sopenharmony_ci} 67f6603c60Sopenharmony_ci 68f6603c60Sopenharmony_ci/** 69f6603c60Sopenharmony_ci * @tc.name: ResetThreadQoSNdkTest 70f6603c60Sopenharmony_ci * @tc.desc: Verify the Reset QoSLevel function. 71f6603c60Sopenharmony_ci * @tc.type: FUNC 72f6603c60Sopenharmony_ci */ 73f6603c60Sopenharmony_ciHWTEST_F(QoSTestSuite, ResetThreadQoSNdkTest, Function | MediumTest | Level1) 74f6603c60Sopenharmony_ci{ 75f6603c60Sopenharmony_ci int ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND); 76f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 77f6603c60Sopenharmony_ci ret = OH_QoS_ResetThreadQoS(); 78f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 79f6603c60Sopenharmony_ci 80f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_UTILITY); 81f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 82f6603c60Sopenharmony_ci ret = OH_QoS_ResetThreadQoS(); 83f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 84f6603c60Sopenharmony_ci 85f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEFAULT); 86f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 87f6603c60Sopenharmony_ci ret = OH_QoS_ResetThreadQoS(); 88f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 89f6603c60Sopenharmony_ci 90f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INITIATED); 91f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 92f6603c60Sopenharmony_ci ret = OH_QoS_ResetThreadQoS(); 93f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 94f6603c60Sopenharmony_ci 95f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEADLINE_REQUEST); 96f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 97f6603c60Sopenharmony_ci ret = OH_QoS_ResetThreadQoS(); 98f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 99f6603c60Sopenharmony_ci 100f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INTERACTIVE); 101f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 102f6603c60Sopenharmony_ci ret = OH_QoS_ResetThreadQoS(); 103f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 104f6603c60Sopenharmony_ci} 105f6603c60Sopenharmony_ci 106f6603c60Sopenharmony_ci/** 107f6603c60Sopenharmony_ci * @tc.name: GetThreadQoSNdkTest 108f6603c60Sopenharmony_ci * @tc.desc: Verify the Get QoSLevel function. 109f6603c60Sopenharmony_ci * @tc.type: FUNC 110f6603c60Sopenharmony_ci */ 111f6603c60Sopenharmony_ciHWTEST_F(QoSTestSuite, GetThreadQoSNdkTest, Function | MediumTest | Level1) 112f6603c60Sopenharmony_ci{ 113f6603c60Sopenharmony_ci int ret = OH_QoS_GetThreadQoS(nullptr); 114f6603c60Sopenharmony_ci EXPECT_EQ(ret, -1); 115f6603c60Sopenharmony_ci 116f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND); 117f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 118f6603c60Sopenharmony_ci enum QoS_Level level; 119f6603c60Sopenharmony_ci ret = OH_QoS_GetThreadQoS(&level); 120f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 121f6603c60Sopenharmony_ci EXPECT_EQ(level, QoS_Level::QOS_BACKGROUND); 122f6603c60Sopenharmony_ci 123f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_UTILITY); 124f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 125f6603c60Sopenharmony_ci ret = OH_QoS_GetThreadQoS(&level); 126f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 127f6603c60Sopenharmony_ci EXPECT_EQ(level, QoS_Level::QOS_UTILITY); 128f6603c60Sopenharmony_ci 129f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEFAULT); 130f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 131f6603c60Sopenharmony_ci ret = OH_QoS_GetThreadQoS(&level); 132f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 133f6603c60Sopenharmony_ci EXPECT_EQ(level, QoS_Level::QOS_DEFAULT); 134f6603c60Sopenharmony_ci 135f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INITIATED); 136f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 137f6603c60Sopenharmony_ci ret = OH_QoS_GetThreadQoS(&level); 138f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 139f6603c60Sopenharmony_ci EXPECT_EQ(level, QoS_Level::QOS_USER_INITIATED); 140f6603c60Sopenharmony_ci 141f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEADLINE_REQUEST); 142f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 143f6603c60Sopenharmony_ci ret = OH_QoS_GetThreadQoS(&level); 144f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 145f6603c60Sopenharmony_ci EXPECT_EQ(level, QoS_Level::QOS_DEADLINE_REQUEST); 146f6603c60Sopenharmony_ci 147f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INTERACTIVE); 148f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 149f6603c60Sopenharmony_ci ret = OH_QoS_GetThreadQoS(&level); 150f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 151f6603c60Sopenharmony_ci EXPECT_EQ(level, QoS_Level::QOS_USER_INTERACTIVE); 152f6603c60Sopenharmony_ci 153f6603c60Sopenharmony_ci ret = OH_QoS_ResetThreadQoS(); 154f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 155f6603c60Sopenharmony_ci ret = OH_QoS_GetThreadQoS(&level); 156f6603c60Sopenharmony_ci EXPECT_EQ(ret, -1); 157f6603c60Sopenharmony_ci} 158f6603c60Sopenharmony_ci 159f6603c60Sopenharmony_ci/** 160f6603c60Sopenharmony_ci * @tc.name: ThreadQoSNdkTest 161f6603c60Sopenharmony_ci * @tc.desc: Double Test ThreadQoSNDKTest function. 162f6603c60Sopenharmony_ci * @tc.type: FUNC 163f6603c60Sopenharmony_ci */ 164f6603c60Sopenharmony_ciHWTEST_F(QoSTestSuite, ThreadQoSNdkTest, Function | MediumTest | Level1) 165f6603c60Sopenharmony_ci{ 166f6603c60Sopenharmony_ci int ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND); 167f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 168f6603c60Sopenharmony_ci ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND); 169f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 170f6603c60Sopenharmony_ci 171f6603c60Sopenharmony_ci enum QoS_Level level; 172f6603c60Sopenharmony_ci ret = OH_QoS_GetThreadQoS(&level); 173f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 174f6603c60Sopenharmony_ci EXPECT_EQ(level, QoS_Level::QOS_BACKGROUND); 175f6603c60Sopenharmony_ci ret = OH_QoS_GetThreadQoS(&level); 176f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 177f6603c60Sopenharmony_ci EXPECT_EQ(level, QoS_Level::QOS_BACKGROUND); 178f6603c60Sopenharmony_ci 179f6603c60Sopenharmony_ci ret = OH_QoS_ResetThreadQoS(); 180f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 181f6603c60Sopenharmony_ci ret = OH_QoS_ResetThreadQoS(); 182f6603c60Sopenharmony_ci EXPECT_EQ(ret, -1); 183f6603c60Sopenharmony_ci} 184