Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "DetectionMonitorMock.hpp"
- #include "HelperClasses.hpp"
- #include "HlapiClientMock.hpp"
- #include "PwmFanMock.hpp"
- #include <GpioHelpersMock.hpp>
- using namespace ::testing;
- using namespace pss::gpio;
- namespace ho = ::hlapi::ho;
- namespace fans
- {
- class DetectionPwmTestCases : public TestWithDefaultPwmConfig
- {
- public:
- DetectionPwmTestCases()
- : hlapiClientMock(mf::CpAddr(), mf::CpAddr(), "fans", state),
- fanModReader(std::make_shared<::testing::NiceMock<FanModuleReaderMock>>()),
- fanModStatDet(std::make_shared<NiceMock<FanModuleStatusDetector>>(fanModReader)),
- detMonMock(hlapiClientMock, state, config, mf::CpAddr(), fanModStatDet),
- timerNotif{0, static_cast<tf::SessionId>(EFansTimerSession::FanDetection), 0}
- {
- ON_CALL(detMonMock, detectFans(_))
- .WillByDefault(::testing::Invoke(&detMonMock, &DetectionMonitorMock::detectFansOrigin));
- ON_CALL(*fanModReader, registerDefined(_)).WillByDefault(Return(false));
- // emulating nice mocks:
- EXPECT_CALL(detMonMock, detectFans(_)).Times(AnyNumber());
- EXPECT_CALL(detMonMock, atLeastOnePwmFanNotDetected(_)).Times(AnyNumber());
- EXPECT_CALL(hlapiClientMock, sendUpdateFanModulesStatus(_)).Times(AnyNumber());
- EXPECT_CALL(hlapiClientMock, sendUpdateFanStatus(_)).Times(AnyNumber());
- }
- protected:
- StubInstancesRemoveGuard stubGuard;
- HlapiClientMock hlapiClientMock;
- std::shared_ptr<FanModuleReaderMock> fanModReader;
- std::shared_ptr<FanModuleStatusDetector> fanModStatDet;
- DetectionMonitorMock detMonMock;
- tf::msg::TimerNotif timerNotif;
- };
- TEST_F(DetectionPwmTestCases, ModInst_not_defined_speed_detection_not_allowed_VendorGpio_not_defined)
- {
- config.fanInstance.speedResponseDetectionAllowed = false;
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_NothingInstalled));
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_NothingInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- // emulating periodic detection
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_not_defined_speed_detection_not_allowed_VendorGpio_defined_failure)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_NothingInstalled));
- config.fanInstance.speedResponseDetectionAllowed = false;
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_NothingInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading vendorIdGpio[0]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases,
- ModInst_not_defined_speed_detection_not_allowed_VendorGpio_defined_returned_vendorNotDetected)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_NothingInstalled));
- config.fanInstance.speedResponseDetectionAllowed = false;
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_NothingInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[0]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[1]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[2]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases,
- ModInst_not_defined_speed_detection_not_allowed_VendorGpio_defined_vendorId_not_found_in_the_table)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.speedResponseDetectionAllowed = false;
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading vendorIdGpio[0]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading vendorIdGpio[1]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[2]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_not_defined_speed_detection_not_allowed_VendorGpio_defined_valid_vendorId)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.speedResponseDetectionAllowed = false;
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(3, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(3, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxRpm, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxControlPwm, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading vendorIdGpio[0]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[1]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[2]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_not_defined_speed_detection_allowed_both_failed)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_NothingInstalled));
- config.fanInstance.speedResponseDetectionAllowed = true;
- // Altough vendorId GPIO defined, they won't be read, because speed response allowed.
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Throw(HwMonException()));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Throw(HwMonException()));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_NothingInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- };
- // emulating periodic detection
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_not_defined_speed_detection_allowed_first_zero_second_below_rpmMin)
- {
- // EXPECT_CALL(*fanModStatDet, detectFanModuleStatus(_))
- // .WillOnce(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled))
- // .WillOnce(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(0));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3000));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- // emulating periodic detection
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_not_defined_speed_detection_allowed_empty_conf_table)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.speedResponseDetectionAllowed = true;
- config.fanInstance.fanVendors = {};
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(0));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3800));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- // emulating periodic detection
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_not_defined_speed_detection_allowed_success)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(3, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(6, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxRpm, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxControlPwm, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(3801));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3800));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- checkDetection();
- detMonMock.detectFans(timerNotif);
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_not_defined_speed_detection_allowed_first_success_second_below_rpmMin)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(3520));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3000));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(5, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(5).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(5).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- // emulating periodic detection
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_No_speed_detection_not_allowed_VendorGpio_not_defined)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_IpCapInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = false;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_IpCapInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_No_speed_detection_not_allowed_VendorGpio_defined_failure)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_IpCapInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- config.fanInstance.speedResponseDetectionAllowed = false;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_IpCapInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading ipCapInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading vendorIdGpio[0]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_No_speed_detection_not_allowed_VendorGpio_defined_returned_vendorNotDetected)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_IpCapInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- config.fanInstance.speedResponseDetectionAllowed = false;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_IpCapInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading ipCapInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[0]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[1]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[2]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_No_speed_detection_not_allowed_VendorGpio_defined_not_found_in_the_table)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_IpCapInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- config.fanInstance.speedResponseDetectionAllowed = false;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_IpCapInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading ipCapInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading vendorIdGpio[0]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading vendorIdGpio[1]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[2]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_No_speed_detection_not_allowed_VendorGpio_defined_valid_vendorId)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_IpCapInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- config.fanInstance.speedResponseDetectionAllowed = false;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_IpCapInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(3, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt1.working());
- EXPECT_EQ(3, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxRpm, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxControlPwm, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading ipCapInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading vendorIdGpio[0]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[1]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[2]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_No_speed_detection_allowed_both_failed)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_IpCapInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- // although vendorId GPIO is defined it won't be read because speed response allowed
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Throw(HwMonException()));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Throw(HwMonException()));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_IpCapInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_No_speed_detection_allowed_first_zero_second_below_rpmMin)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_IpCapInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(0));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3000));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_No_speed_detection_allowed_empty_conf_table)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = true;
- config.fanInstance.fanVendors = {};
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(0));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3800));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_No_speed_detection_allowed_success)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(3801));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3800));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(3, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(6, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxRpm, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxControlPwm, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_No_speed_detection_allowed_first_success_second_below_rpmMin)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(3520));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3000));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(5, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(5).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(5).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_not_allowed_VendorGpio_not_defined)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = false;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_not_allowed_VendorGpio_defined_failure)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- config.fanInstance.speedResponseDetectionAllowed = false;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorDetectionNotPossible, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Throw(std::runtime_error("Big GPIO ERROR"))); // reading vendorIdGpio[0]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_not_allowed_VendorGpio_defined_returned_vendorNotDetected)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- config.fanInstance.speedResponseDetectionAllowed = false;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(0, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[0]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[1]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[2]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_not_allowed_VendorGpio_defined_not_found_in_the_table)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- config.fanInstance.speedResponseDetectionAllowed = false;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading vendorIdGpio[0]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading vendorIdGpio[1]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[2]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_not_allowed_VendorGpio_defined_valid_vendorId)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- config.fanInstance.speedResponseDetectionAllowed = false;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(3, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(3, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxRpm, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxControlPwm, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading vendorIdGpio[0]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[1]
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading vendorIdGpio[2]
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_allowed_both_failed)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- // although vendorId GPIO is defined it won't be read because speed response allowed
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{1, "1", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{2, "2", false});
- config.fanInstance.fanModules[0].vendorIdGpio.push_back(gpioInfo{3, "3", false});
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Throw(HwMonException()));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Throw(HwMonException()));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_allowed_first_zero_second_below_rpmMin)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(0));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3000));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_allowed_empty_conf_table)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = true;
- config.fanInstance.fanVendors = {};
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(0));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3800));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_allowed_success)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(3801));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3800));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(3, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(3).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(6, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxRpm, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxControlPwm, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_allowed_first_success_second_below_rpmMin)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetection = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(3520));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3000));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(5, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(5).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(5).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- }
- checkDetection();
- checkDetection();
- }
- TEST_F(DetectionPwmTestCases, ModInst_Yes_speed_detection_allowed_first_attempt_failed_second_success)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.fanModules[0].fanModInstalledGpio = gpioInfo{123, "123", false};
- config.fanInstance.fanModules[0].ipCapInstalledGpio = gpioInfo{234, "234", false};
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetectionFailure = [this]() {
- {
- InSequence s;
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(true)); // reading fanModInstalledGpio
- EXPECT_CALL(*GpioStub::instance(), getValue())
- .Times(1)
- .WillRepeatedly(Return(false)); // reading ipCapInstalledGpio
- }
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Throw(HwMonException()));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Throw(HwMonException()));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- };
- auto checkDetectionSuccess = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(3800));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3800));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(6, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(6, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxRpm, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxControlPwm, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- // emulating periodic detection
- checkDetectionFailure();
- checkDetectionSuccess();
- }
- TEST_F(DetectionPwmTestCases, if_speed_detection_failed_for_one_fan_it_will_be_repeated_for_all_fans_again)
- {
- // ON_CALL(*fanModStatDet, detectFanModuleStatus(_)).WillByDefault(Return(::hlapi::ho::EFanModStatus_FanModuleInstalled));
- config.fanInstance.speedResponseDetectionAllowed = true;
- auto checkDetectionFirstFailed = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Throw(HwMonException()));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3800));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_FALSE(pwmFanStatusExt0.detected());
- EXPECT_FALSE(pwmFanStatusExt0.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(6, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxRpm, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxControlPwm, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- auto checkDetectionSecondFailed = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(3800));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3000));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(6, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(VendorNotDetected, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getFanInstance().fanMaxRpmDefault, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getFanInstance().fanMaxControlPwmDefault, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- auto checkDetectionBothSuccess = [this]() {
- detMonMock.detectFans(timerNotif);
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[0].hwHandle), rpm())
- .WillByDefault(Return(3800));
- ON_CALL(*std::dynamic_pointer_cast<PwmFanMock>(state.fanModules[0].pwmFans[1].hwHandle), rpm())
- .WillByDefault(Return(3800));
- unsigned int sessionId =
- static_cast<unsigned int>(EFansTimerSession::SpeedResponseDetection) + state.fanModules[0].fanModId;
- tf::msg::TimerNotif timerNotifCorrect{0, static_cast<tf::SessionId>(sessionId), 0};
- detMonMock.detectFans(timerNotifCorrect);
- auto& moduleStatusExt = state.fanModules[0].modStatObj.GetExtension(ho::FanModuleStatus::object);
- EXPECT_EQ(ho::EFanModStatus_FanModuleInstalled, moduleStatusExt.status());
- auto pwmFanStatusExt0 = state.fanModules[0].pwmFans[0].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt0.detected());
- EXPECT_TRUE(pwmFanStatusExt0.working());
- EXPECT_EQ(6, pwmFanStatusExt0.vendorid());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxRpm, pwmFanStatusExt0.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxControlPwm, pwmFanStatusExt0.fanmaxcontrolpwm());
- auto pwmFanStatusExt1 = state.fanModules[0].pwmFans[1].statusObj.GetExtension(ho::FanStatus::object);
- EXPECT_TRUE(pwmFanStatusExt1.detected());
- EXPECT_TRUE(pwmFanStatusExt1.working());
- EXPECT_EQ(6, pwmFanStatusExt1.vendorid());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxRpm, pwmFanStatusExt1.fanmaxrpm());
- EXPECT_EQ(config.getVendorConfig(6).fanMaxControlPwm, pwmFanStatusExt1.fanmaxcontrolpwm());
- };
- // emulating periodic detection
- checkDetectionFirstFailed();
- checkDetectionSecondFailed();
- checkDetectionBothSuccess();
- }
- } // namespace fans
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement