1 /*
2 * Copyright (C) 2020-2021 Intel Corporation
3 *
4 * SPDX-License-Identifier: MIT
5 *
6 */
7
8 #include "level_zero/tools/source/sysman/fan/linux/os_fan_imp.h"
9 #include "level_zero/tools/test/unit_tests/sources/sysman/linux/mock_sysman_fixture.h"
10
11 #include "sysman/fan/fan_imp.h"
12
13 extern bool sysmanUltsEnable;
14
15 namespace L0 {
16 namespace ult {
17
18 constexpr uint32_t fanHandleComponentCount = 0u;
19 class SysmanDeviceFanFixture : public SysmanDeviceFixture {
20 protected:
SetUp()21 void SetUp() override {
22 if (!sysmanUltsEnable) {
23 GTEST_SKIP();
24 }
25 SysmanDeviceFixture::SetUp();
26 pSysmanDeviceImp->pFanHandleContext->init();
27 }
TearDown()28 void TearDown() override {
29 if (!sysmanUltsEnable) {
30 GTEST_SKIP();
31 }
32 SysmanDeviceFixture::TearDown();
33 }
34
get_fan_handles(uint32_t count)35 std::vector<zes_fan_handle_t> get_fan_handles(uint32_t count) {
36 std::vector<zes_fan_handle_t> handles(count, nullptr);
37 EXPECT_EQ(zesDeviceEnumFans(device->toHandle(), &count, handles.data()), ZE_RESULT_SUCCESS);
38 return handles;
39 }
40 };
41
TEST_F(SysmanDeviceFanFixture,GivenComponentCountZeroWhenEnumeratingFanDomainsThenValidCountIsReturnedAndVerifySysmanFanGetCallSucceeds)42 TEST_F(SysmanDeviceFanFixture, GivenComponentCountZeroWhenEnumeratingFanDomainsThenValidCountIsReturnedAndVerifySysmanFanGetCallSucceeds) {
43 uint32_t count = 0;
44 EXPECT_EQ(zesDeviceEnumFans(device->toHandle(), &count, nullptr), ZE_RESULT_SUCCESS);
45 EXPECT_EQ(count, fanHandleComponentCount);
46 }
47
TEST_F(SysmanDeviceFanFixture,GivenInvalidComponentCountWhenEnumeratingFanDomainsThenValidCountIsReturnedAndVerifySysmanFanGetCallSucceeds)48 TEST_F(SysmanDeviceFanFixture, GivenInvalidComponentCountWhenEnumeratingFanDomainsThenValidCountIsReturnedAndVerifySysmanFanGetCallSucceeds) {
49 uint32_t count = 0;
50 EXPECT_EQ(zesDeviceEnumFans(device->toHandle(), &count, nullptr), ZE_RESULT_SUCCESS);
51 EXPECT_EQ(count, fanHandleComponentCount);
52
53 count = count + 1;
54 EXPECT_EQ(zesDeviceEnumFans(device->toHandle(), &count, nullptr), ZE_RESULT_SUCCESS);
55 EXPECT_EQ(count, fanHandleComponentCount);
56 }
57
TEST_F(SysmanDeviceFanFixture,GivenComponentCountZeroWhenEnumeratingFanDomainsThenValidFanHandlesIsReturned)58 TEST_F(SysmanDeviceFanFixture, GivenComponentCountZeroWhenEnumeratingFanDomainsThenValidFanHandlesIsReturned) {
59 uint32_t count = 0;
60 EXPECT_EQ(zesDeviceEnumFans(device->toHandle(), &count, nullptr), ZE_RESULT_SUCCESS);
61 EXPECT_EQ(count, fanHandleComponentCount);
62
63 std::vector<zes_fan_handle_t> handles(count, nullptr);
64 EXPECT_EQ(zesDeviceEnumFans(device->toHandle(), &count, handles.data()), ZE_RESULT_SUCCESS);
65 for (auto handle : handles) {
66 EXPECT_NE(handle, nullptr);
67 }
68 }
69
TEST_F(SysmanDeviceFanFixture,GivenValidFanHandleWhenGettingFanPropertiesThenCallSucceeds)70 TEST_F(SysmanDeviceFanFixture, GivenValidFanHandleWhenGettingFanPropertiesThenCallSucceeds) {
71 auto handles = get_fan_handles(fanHandleComponentCount);
72
73 for (auto handle : handles) {
74 zes_fan_properties_t properties;
75 EXPECT_EQ(ZE_RESULT_SUCCESS, zesFanGetProperties(handle, &properties));
76 }
77 }
78
TEST_F(SysmanDeviceFanFixture,GivenValidFanHandleWhenGettingFanConfigThenUnsupportedIsReturned)79 TEST_F(SysmanDeviceFanFixture, GivenValidFanHandleWhenGettingFanConfigThenUnsupportedIsReturned) {
80 auto handles = get_fan_handles(fanHandleComponentCount);
81
82 for (auto handle : handles) {
83 zes_fan_config_t fanConfig;
84 EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesFanGetConfig(handle, &fanConfig));
85 }
86 }
87
TEST_F(SysmanDeviceFanFixture,GivenValidFanHandleWhenSettingDefaultModeThenUnsupportedIsReturned)88 TEST_F(SysmanDeviceFanFixture, GivenValidFanHandleWhenSettingDefaultModeThenUnsupportedIsReturned) {
89 auto handles = get_fan_handles(fanHandleComponentCount);
90
91 for (auto handle : handles) {
92 EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesFanSetDefaultMode(handle));
93 }
94 }
95
TEST_F(SysmanDeviceFanFixture,GivenValidFanHandleWhenSettingFixedSpeedModeThenUnsupportedIsReturned)96 TEST_F(SysmanDeviceFanFixture, GivenValidFanHandleWhenSettingFixedSpeedModeThenUnsupportedIsReturned) {
97 auto handles = get_fan_handles(fanHandleComponentCount);
98
99 for (auto handle : handles) {
100 zes_fan_speed_t fanSpeed = {0};
101 EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesFanSetFixedSpeedMode(handle, &fanSpeed));
102 }
103 }
104
TEST_F(SysmanDeviceFanFixture,GivenValidFanHandleWhenSettingTheSpeedTableModeThenUnsupportedIsReturned)105 TEST_F(SysmanDeviceFanFixture, GivenValidFanHandleWhenSettingTheSpeedTableModeThenUnsupportedIsReturned) {
106 auto handles = get_fan_handles(fanHandleComponentCount);
107
108 for (auto handle : handles) {
109 zes_fan_speed_table_t fanSpeedTable = {0};
110 EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesFanSetSpeedTableMode(handle, &fanSpeedTable));
111 }
112 }
113
TEST_F(SysmanDeviceFanFixture,GivenValidFanHandleWhenGettingFanSpeedWithRPMUnitThenValidFanSpeedReadingsRetrieved)114 TEST_F(SysmanDeviceFanFixture, GivenValidFanHandleWhenGettingFanSpeedWithRPMUnitThenValidFanSpeedReadingsRetrieved) {
115 auto handles = get_fan_handles(fanHandleComponentCount);
116
117 for (auto handle : handles) {
118 zes_fan_speed_units_t unit = zes_fan_speed_units_t::ZES_FAN_SPEED_UNITS_RPM;
119 int32_t fanSpeed = 0;
120 EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesFanGetState(handle, unit, &fanSpeed));
121 }
122 }
123
TEST_F(SysmanDeviceFanFixture,GivenValidFanHandleWhenGettingFanSpeedWithPercentUnitThenUnsupportedIsReturned)124 TEST_F(SysmanDeviceFanFixture, GivenValidFanHandleWhenGettingFanSpeedWithPercentUnitThenUnsupportedIsReturned) {
125 auto handles = get_fan_handles(fanHandleComponentCount);
126
127 for (auto handle : handles) {
128 zes_fan_speed_units_t unit = zes_fan_speed_units_t::ZES_FAN_SPEED_UNITS_PERCENT;
129 int32_t fanSpeed = 0;
130 EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesFanGetState(handle, unit, &fanSpeed));
131 }
132 }
133
134 } // namespace ult
135 } // namespace L0
136