10432b85dSNoah Goldstein //===-- Unittests for sched_get_priority_{min,max} ------------------------===//
20432b85dSNoah Goldstein //
30432b85dSNoah Goldstein // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40432b85dSNoah Goldstein // See https://llvm.org/LICENSE.txt for license information.
50432b85dSNoah Goldstein // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60432b85dSNoah Goldstein //
70432b85dSNoah Goldstein //===----------------------------------------------------------------------===//
80432b85dSNoah Goldstein
90432b85dSNoah Goldstein #include "src/errno/libc_errno.h"
100432b85dSNoah Goldstein #include "src/sched/sched_get_priority_max.h"
110432b85dSNoah Goldstein #include "src/sched/sched_get_priority_min.h"
120432b85dSNoah Goldstein #include "test/UnitTest/Test.h"
130432b85dSNoah Goldstein
140432b85dSNoah Goldstein #include <sched.h>
150432b85dSNoah Goldstein
TEST(LlvmLibcSchedGetPriorityTest,HandleBadPolicyTest)160432b85dSNoah Goldstein TEST(LlvmLibcSchedGetPriorityTest, HandleBadPolicyTest) {
170432b85dSNoah Goldstein
180432b85dSNoah Goldstein // Test arbitrary values for which there is no policy.
190432b85dSNoah Goldstein {
200432b85dSNoah Goldstein int policy = -1;
21b6bc9d72SGuillaume Chatelet int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);
220432b85dSNoah Goldstein ASSERT_EQ(max_priority, -1);
2373874f7aSGuillaume Chatelet ASSERT_ERRNO_EQ(EINVAL);
24b6bc9d72SGuillaume Chatelet int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);
250432b85dSNoah Goldstein ASSERT_EQ(min_priority, -1);
2673874f7aSGuillaume Chatelet ASSERT_ERRNO_EQ(EINVAL);
270432b85dSNoah Goldstein }
280432b85dSNoah Goldstein
290432b85dSNoah Goldstein {
300432b85dSNoah Goldstein int policy = 30;
31b6bc9d72SGuillaume Chatelet int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);
320432b85dSNoah Goldstein ASSERT_EQ(max_priority, -1);
3373874f7aSGuillaume Chatelet ASSERT_ERRNO_EQ(EINVAL);
34b6bc9d72SGuillaume Chatelet int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);
350432b85dSNoah Goldstein ASSERT_EQ(min_priority, -1);
3673874f7aSGuillaume Chatelet ASSERT_ERRNO_EQ(EINVAL);
370432b85dSNoah Goldstein }
380432b85dSNoah Goldstein
390432b85dSNoah Goldstein {
400432b85dSNoah Goldstein int policy = 80;
41b6bc9d72SGuillaume Chatelet int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);
420432b85dSNoah Goldstein ASSERT_EQ(max_priority, -1);
4373874f7aSGuillaume Chatelet ASSERT_ERRNO_EQ(EINVAL);
44b6bc9d72SGuillaume Chatelet int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);
450432b85dSNoah Goldstein ASSERT_EQ(min_priority, -1);
4673874f7aSGuillaume Chatelet ASSERT_ERRNO_EQ(EINVAL);
470432b85dSNoah Goldstein }
480432b85dSNoah Goldstein
490432b85dSNoah Goldstein {
500432b85dSNoah Goldstein int policy = 110;
51b6bc9d72SGuillaume Chatelet int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);
520432b85dSNoah Goldstein ASSERT_EQ(max_priority, -1);
5373874f7aSGuillaume Chatelet ASSERT_ERRNO_EQ(EINVAL);
54b6bc9d72SGuillaume Chatelet int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);
550432b85dSNoah Goldstein ASSERT_EQ(min_priority, -1);
5673874f7aSGuillaume Chatelet ASSERT_ERRNO_EQ(EINVAL);
570432b85dSNoah Goldstein }
580432b85dSNoah Goldstein }
590432b85dSNoah Goldstein
TEST(LlvmLibcSchedGetPriorityTest,SmokeTest)600432b85dSNoah Goldstein TEST(LlvmLibcSchedGetPriorityTest, SmokeTest) {
61*3eb1e6d8Smichaelrj-google LIBC_NAMESPACE::libc_errno = 0;
620432b85dSNoah Goldstein
630432b85dSNoah Goldstein // We Test:
640432b85dSNoah Goldstein // SCHED_OTHER, SCHED_FIFO, SCHED_RR
650432b85dSNoah Goldstein // Linux specific test could also include:
660432b85dSNoah Goldstein // SCHED_BATCH, SCHED_ISO, SCHED_IDLE, SCHED_DEADLINE
670432b85dSNoah Goldstein {
680432b85dSNoah Goldstein int policy = SCHED_OTHER;
69b6bc9d72SGuillaume Chatelet int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);
700432b85dSNoah Goldstein ASSERT_GE(max_priority, 0);
7173874f7aSGuillaume Chatelet ASSERT_ERRNO_SUCCESS();
72b6bc9d72SGuillaume Chatelet int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);
730432b85dSNoah Goldstein ASSERT_GE(min_priority, 0);
7473874f7aSGuillaume Chatelet ASSERT_ERRNO_SUCCESS();
750432b85dSNoah Goldstein
760432b85dSNoah Goldstein ASSERT_LE(max_priority, 99);
770432b85dSNoah Goldstein ASSERT_GE(min_priority, 0);
780432b85dSNoah Goldstein ASSERT_GE(max_priority, min_priority);
790432b85dSNoah Goldstein }
800432b85dSNoah Goldstein
810432b85dSNoah Goldstein {
820432b85dSNoah Goldstein int policy = SCHED_FIFO;
83b6bc9d72SGuillaume Chatelet int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);
840432b85dSNoah Goldstein ASSERT_GE(max_priority, 0);
8573874f7aSGuillaume Chatelet ASSERT_ERRNO_SUCCESS();
86b6bc9d72SGuillaume Chatelet int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);
870432b85dSNoah Goldstein ASSERT_GE(min_priority, 0);
8873874f7aSGuillaume Chatelet ASSERT_ERRNO_SUCCESS();
890432b85dSNoah Goldstein
900432b85dSNoah Goldstein ASSERT_LE(max_priority, 99);
910432b85dSNoah Goldstein ASSERT_GE(min_priority, 0);
9297a03eb2STal Zussman ASSERT_GT(max_priority, min_priority);
930432b85dSNoah Goldstein }
940432b85dSNoah Goldstein
950432b85dSNoah Goldstein {
960432b85dSNoah Goldstein int policy = SCHED_RR;
97b6bc9d72SGuillaume Chatelet int max_priority = LIBC_NAMESPACE::sched_get_priority_max(policy);
980432b85dSNoah Goldstein ASSERT_GE(max_priority, 0);
9973874f7aSGuillaume Chatelet ASSERT_ERRNO_SUCCESS();
100b6bc9d72SGuillaume Chatelet int min_priority = LIBC_NAMESPACE::sched_get_priority_min(policy);
1010432b85dSNoah Goldstein ASSERT_GE(min_priority, 0);
10273874f7aSGuillaume Chatelet ASSERT_ERRNO_SUCCESS();
1030432b85dSNoah Goldstein
1040432b85dSNoah Goldstein ASSERT_LE(max_priority, 99);
1050432b85dSNoah Goldstein ASSERT_GE(min_priority, 0);
10697a03eb2STal Zussman ASSERT_GT(max_priority, min_priority);
1070432b85dSNoah Goldstein }
1080432b85dSNoah Goldstein }
109