brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · fb168c2 Raw
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