Test Downtime#CanBeTriggered()

This commit is contained in:
Alexander A. Klimov 2023-11-22 12:15:51 +01:00
parent 7a359bb150
commit 5dc849e0ec
3 changed files with 79 additions and 2 deletions

View File

@ -47,6 +47,7 @@ public:
bool IsInEffect() const;
bool IsTriggered() const;
bool IsExpired() const;
bool CanBeTriggered();
bool HasValidConfigOwner() const;
static void StaticInitialize();
@ -93,8 +94,6 @@ private:
Timer::Ptr m_CleanupTimer;
bool CanBeTriggered();
void SetupCleanupTimer();
static void DowntimesStartTimerHandler();

View File

@ -82,6 +82,7 @@ set(base_test_SOURCES
config-ops.cpp
icinga-checkresult.cpp
icinga-dependencies.cpp
icinga-downtime.cpp
icinga-legacytimeperiod.cpp
icinga-macros.cpp
icinga-notification.cpp
@ -239,6 +240,13 @@ add_boost_test(base
icinga_dependencies/default_redundancy_group_registration_unregistration
icinga_dependencies/simple_redundancy_group_registration_unregistration
icinga_dependencies/mixed_redundancy_group_registration_unregsitration
icinga_downtime/canbetriggered_fixed
icinga_downtime/canbetriggered_flexible
icinga_downtime/canbetriggered_inactive
icinga_downtime/canbetriggered_removed
icinga_downtime/canbetriggered_triggered
icinga_downtime/canbetriggered_expired
icinga_downtime/canbetriggered_tooearly
icinga_notification/strings
icinga_notification/state_filter
icinga_notification/type_filter

70
test/icinga-downtime.cpp Normal file
View File

@ -0,0 +1,70 @@
/* Icinga 2 | (c) 2023 Icinga GmbH | GPLv2+ */
#include "base/utility.hpp"
#include "icinga/downtime.hpp"
#include <BoostTestTargetConfig.h>
using namespace icinga;
static void CanBeTriggeredHelper(
bool active, bool fixed, double relStart, double relEnd, double duration, Value relTriggered, Value relRemoved, bool canBeTriggered
)
{
Downtime::Ptr dt = new Downtime();
auto now (Utility::GetTime());
dt->SetActive(active, true);
dt->SetFixed(fixed, true);
dt->SetStartTime(now + relStart, true);
dt->SetEndTime(now + relEnd, true);
dt->SetDuration(duration, true);
if (!relTriggered.IsEmpty()) {
dt->SetTriggerTime(now + relTriggered, true);
}
if (!relRemoved.IsEmpty()) {
dt->SetRemoveTime(now + relRemoved, true);
}
BOOST_CHECK(dt->CanBeTriggered() == canBeTriggered);
}
BOOST_AUTO_TEST_SUITE(icinga_downtime)
BOOST_AUTO_TEST_CASE(canbetriggered_fixed)
{
CanBeTriggeredHelper(true, true, -2, 8, 0, Empty, Empty, true);
}
BOOST_AUTO_TEST_CASE(canbetriggered_flexible)
{
CanBeTriggeredHelper(true, false, -2, 8, 20, Empty, Empty, true);
}
BOOST_AUTO_TEST_CASE(canbetriggered_inactive)
{
CanBeTriggeredHelper(false, true, -2, 8, 0, Empty, Empty, false);
}
BOOST_AUTO_TEST_CASE(canbetriggered_removed)
{
CanBeTriggeredHelper(true, true, -2, 8, 0, Empty, -4, false);
}
BOOST_AUTO_TEST_CASE(canbetriggered_triggered)
{
CanBeTriggeredHelper(true, true, -2, 8, 0, -1, Empty, false);
}
BOOST_AUTO_TEST_CASE(canbetriggered_expired)
{
CanBeTriggeredHelper(true, true, -12, -2, 0, Empty, Empty, false);
}
BOOST_AUTO_TEST_CASE(canbetriggered_tooearly)
{
CanBeTriggeredHelper(true, true, 2, 12, 0, Empty, Empty, false);
}
BOOST_AUTO_TEST_SUITE_END()