mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-04-19 14:40:57 -04:00
66 lines
2.9 KiB
C++
66 lines
2.9 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#define CATCH_CONFIG_MAIN
|
|
|
|
#include <catch2/catch.hpp>
|
|
#include <SystemManager/CpuGovernor.hpp>
|
|
#include <SystemManager/CpuSentinel.hpp>
|
|
|
|
TEST_CASE("Power Manager CPU sentinels governor test")
|
|
{
|
|
using namespace sys;
|
|
std::shared_ptr<CpuSentinel> testSentinel_0 = nullptr;
|
|
auto testSentinel_1 = std::make_shared<CpuSentinel>("testSentinel_1", nullptr);
|
|
auto testSentinel_2 = std::make_shared<CpuSentinel>("testSentinel_2", nullptr);
|
|
auto testSentinel_3 = std::make_shared<CpuSentinel>("testSentinel_1", nullptr);
|
|
|
|
SECTION("Sentinel registration")
|
|
{
|
|
auto governor = std::make_unique<CpuGovernor>();
|
|
REQUIRE(governor->GetNumberOfRegisteredSentinels() == 0);
|
|
|
|
governor->RegisterNewSentinel(testSentinel_0);
|
|
REQUIRE(governor->GetNumberOfRegisteredSentinels() == 0);
|
|
|
|
governor->RegisterNewSentinel(testSentinel_1);
|
|
REQUIRE(governor->GetNumberOfRegisteredSentinels() == 1);
|
|
|
|
governor->RegisterNewSentinel(testSentinel_2);
|
|
REQUIRE(governor->GetNumberOfRegisteredSentinels() == 2);
|
|
|
|
governor->RegisterNewSentinel(testSentinel_3);
|
|
REQUIRE(governor->GetNumberOfRegisteredSentinels() == 2);
|
|
}
|
|
|
|
SECTION("Sentinel demands")
|
|
{
|
|
auto governor = std::make_unique<CpuGovernor>();
|
|
governor->RegisterNewSentinel(testSentinel_1);
|
|
governor->RegisterNewSentinel(testSentinel_2);
|
|
|
|
REQUIRE(governor->GetMinimumFrequencyRequested() == bsp::CpuFrequencyHz::Level_0);
|
|
|
|
governor->SetCpuFrequencyRequest("testSentinel_1", bsp::CpuFrequencyHz::Level_4);
|
|
REQUIRE(governor->GetMinimumFrequencyRequested() == bsp::CpuFrequencyHz::Level_4);
|
|
|
|
governor->SetCpuFrequencyRequest("testSentinel_2", bsp::CpuFrequencyHz::Level_6);
|
|
REQUIRE(governor->GetMinimumFrequencyRequested() == bsp::CpuFrequencyHz::Level_6);
|
|
|
|
governor->SetCpuFrequencyRequest("testSentinel_1", bsp::CpuFrequencyHz::Level_2);
|
|
REQUIRE(governor->GetMinimumFrequencyRequested() == bsp::CpuFrequencyHz::Level_6);
|
|
|
|
governor->ResetCpuFrequencyRequest("testSentinel_2");
|
|
REQUIRE(governor->GetMinimumFrequencyRequested() == bsp::CpuFrequencyHz::Level_2);
|
|
|
|
governor->SetCpuFrequencyRequest("bedNameSentinel", bsp::CpuFrequencyHz::Level_6);
|
|
REQUIRE(governor->GetMinimumFrequencyRequested() == bsp::CpuFrequencyHz::Level_2);
|
|
|
|
governor->SetCpuFrequencyRequest("testSentinel_1", bsp::CpuFrequencyHz::Level_1);
|
|
REQUIRE(governor->GetMinimumFrequencyRequested() == bsp::CpuFrequencyHz::Level_1);
|
|
|
|
governor->ResetCpuFrequencyRequest("testSentinel_1");
|
|
REQUIRE(governor->GetMinimumFrequencyRequested() == bsp::CpuFrequencyHz::Level_0);
|
|
}
|
|
}
|