109 lines · cpp
1//===-- Unittests for sched_get_priority_{min,max} ------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "src/sched/sched_get_priority_max.h"10#include "src/sched/sched_get_priority_min.h"11#include "test/UnitTest/ErrnoCheckingTest.h"12#include "test/UnitTest/Test.h"13 14#include "hdr/sched_macros.h"15 16using LlvmLibcSchedGetPriorityTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;17 18TEST_F(LlvmLibcSchedGetPriorityTest, HandleBadPolicyTest) {19 20 // Test arbitrary values for which there is no policy.21 {22 int policy = -1;23 int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);24 ASSERT_EQ(max_priority, -1);25 ASSERT_ERRNO_EQ(EINVAL);26 int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);27 ASSERT_EQ(min_priority, -1);28 ASSERT_ERRNO_EQ(EINVAL);29 }30 31 {32 int policy = 30;33 int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);34 ASSERT_EQ(max_priority, -1);35 ASSERT_ERRNO_EQ(EINVAL);36 int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);37 ASSERT_EQ(min_priority, -1);38 ASSERT_ERRNO_EQ(EINVAL);39 }40 41 {42 int policy = 80;43 int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);44 ASSERT_EQ(max_priority, -1);45 ASSERT_ERRNO_EQ(EINVAL);46 int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);47 ASSERT_EQ(min_priority, -1);48 ASSERT_ERRNO_EQ(EINVAL);49 }50 51 {52 int policy = 110;53 int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);54 ASSERT_EQ(max_priority, -1);55 ASSERT_ERRNO_EQ(EINVAL);56 int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);57 ASSERT_EQ(min_priority, -1);58 ASSERT_ERRNO_EQ(EINVAL);59 }60}61 62TEST_F(LlvmLibcSchedGetPriorityTest, SmokeTest) {63 // We Test:64 // SCHED_OTHER, SCHED_FIFO, SCHED_RR65 // Linux specific test could also include:66 // SCHED_BATCH, SCHED_ISO, SCHED_IDLE, SCHED_DEADLINE67 {68 int policy = SCHED_OTHER;69 int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);70 ASSERT_GE(max_priority, 0);71 ASSERT_ERRNO_SUCCESS();72 int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);73 ASSERT_GE(min_priority, 0);74 ASSERT_ERRNO_SUCCESS();75 76 ASSERT_LE(max_priority, 99);77 ASSERT_GE(min_priority, 0);78 ASSERT_GE(max_priority, min_priority);79 }80 81 {82 int policy = SCHED_FIFO;83 int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);84 ASSERT_GE(max_priority, 0);85 ASSERT_ERRNO_SUCCESS();86 int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);87 ASSERT_GE(min_priority, 0);88 ASSERT_ERRNO_SUCCESS();89 90 ASSERT_LE(max_priority, 99);91 ASSERT_GE(min_priority, 0);92 ASSERT_GT(max_priority, min_priority);93 }94 95 {96 int policy = SCHED_RR;97 int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);98 ASSERT_GE(max_priority, 0);99 ASSERT_ERRNO_SUCCESS();100 int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);101 ASSERT_GE(min_priority, 0);102 ASSERT_ERRNO_SUCCESS();103 104 ASSERT_LE(max_priority, 99);105 ASSERT_GE(min_priority, 0);106 ASSERT_GT(max_priority, min_priority);107 }108}109