1/* 2 * Copyright (c) 2022 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 <cstdio> 17#include <unistd.h> 18#include "gtest/gtest.h" 19#include "qos.h" 20 21namespace OHOS { 22namespace QOS { 23using namespace testing; 24using namespace testing::ext; 25using namespace OHOS::QOS; 26 27class QosTest : public testing::Test { 28public: 29 static void SetUpTestCase(); 30 static void TearDownTestCase(); 31 void SetUp(); 32 void TearDown(); 33}; 34 35void QosTest::SetUpTestCase() 36{ 37} 38 39void QosTest::TearDownTestCase() 40{ 41} 42 43void QosTest::SetUp() 44{ 45} 46 47void QosTest::TearDown() 48{ 49} 50 51/** 52 * @tc.name: QosTest 53 * @tc.desc: Verify the Set and Reset QosLevel function. 54 * @tc.type: FUNC 55 */ 56HWTEST_F(QosTest, SetThreadQosTest1, TestSize.Level1) 57{ 58 int ret = SetThreadQos(QosLevel::QOS_USER_INITIATED); 59 EXPECT_EQ(ret, 0); 60 ret = SetThreadQos(QosLevel::QOS_DEFAULT); 61 EXPECT_EQ(ret, 0); 62 ret = SetThreadQos(QosLevel::QOS_UTILITY); 63 EXPECT_EQ(ret, 0); 64 ret = SetThreadQos(QosLevel::QOS_BACKGROUND); 65 EXPECT_EQ(ret, 0); 66 ret = SetThreadQos(QosLevel::QOS_DEADLINE_REQUEST); 67 EXPECT_EQ(ret, 0); 68 ret = SetThreadQos(QosLevel::QOS_USER_INTERACTIVE); 69 EXPECT_EQ(ret, 0); 70 ret = SetThreadQos(QosLevel::QOS_KEY_BACKGROUND); 71 EXPECT_EQ(ret, 0); 72 ret = SetThreadQos(QosLevel::QOS_MAX); 73 EXPECT_EQ(ret, -1); 74 ret = SetThreadQos(QosLevel(-1)); 75 EXPECT_EQ(ret, -1); 76} 77 78HWTEST_F(QosTest, SetThreadQosTest2, TestSize.Level1) 79{ 80 int ret = SetQosForOtherThread(QosLevel::QOS_USER_INITIATED, gettid()); 81 EXPECT_EQ(ret, 0); 82 ret = SetQosForOtherThread(QosLevel::QOS_DEFAULT, gettid()); 83 EXPECT_EQ(ret, 0); 84 ret = SetQosForOtherThread(QosLevel::QOS_UTILITY, gettid()); 85 EXPECT_EQ(ret, 0); 86 ret = SetQosForOtherThread(QosLevel::QOS_BACKGROUND, gettid()); 87 EXPECT_EQ(ret, 0); 88} 89 90HWTEST_F(QosTest, ResetThreadQosTest1, TestSize.Level1) 91{ 92 int ret = SetThreadQos(QosLevel::QOS_USER_INITIATED); 93 EXPECT_EQ(ret, 0); 94 ret = ResetThreadQos(); 95 EXPECT_EQ(ret, 0); 96} 97 98HWTEST_F(QosTest, ResetThreadQosTest2, TestSize.Level1) 99{ 100 int ret = SetQosForOtherThread(QosLevel::QOS_USER_INITIATED, gettid()); 101 EXPECT_EQ(ret, 0); 102 ret = ResetQosForOtherThread(gettid()); 103 EXPECT_EQ(ret, 0); 104} 105 106HWTEST_F(QosTest, GetThreadQosTest1, TestSize.Level1) 107{ 108 int ret = SetThreadQos(QosLevel::QOS_USER_INITIATED); 109 EXPECT_EQ(ret, 0); 110 enum QosLevel level; 111 ret = GetThreadQos(level); 112 EXPECT_EQ(ret, 0); 113 EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_USER_INITIATED)); 114 ret = SetThreadQos(QosLevel::QOS_USER_INTERACTIVE); 115 EXPECT_EQ(ret, 0); 116 ret = GetThreadQos(level); 117 EXPECT_EQ(ret, 0); 118 EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_USER_INTERACTIVE)); 119} 120 121HWTEST_F(QosTest, GetThreadQosTest2, TestSize.Level1) 122{ 123 int ret = ResetThreadQos(); 124 EXPECT_EQ(ret, 0); 125 enum QosLevel level; 126 ret = GetThreadQos(level); 127 EXPECT_EQ(ret, -1); 128} 129} // QOS 130} // OHOS