mirror of
https://github.com/Icinga/icinga2.git
synced 2026-02-03 20:40:17 -05:00
Merge e281e96b92 into 274a0e39d5
This commit is contained in:
commit
e2d7b250f0
4 changed files with 80 additions and 8 deletions
|
|
@ -446,6 +446,9 @@ std::set<Downtime::Ptr> Downtime::GetChildren() const
|
|||
|
||||
bool Downtime::CanBeTriggered()
|
||||
{
|
||||
if (!GetActive() || GetWasCancelled())
|
||||
return false;
|
||||
|
||||
if (IsInEffect() && IsTriggered())
|
||||
return false;
|
||||
|
||||
|
|
@ -484,6 +487,8 @@ void Downtime::SetupCleanupTimer()
|
|||
|
||||
void Downtime::TriggerDowntime(double triggerTime)
|
||||
{
|
||||
ObjectLock oLock (this);
|
||||
|
||||
if (!CanBeTriggered())
|
||||
return;
|
||||
|
||||
|
|
@ -496,10 +501,9 @@ void Downtime::TriggerDowntime(double triggerTime)
|
|||
SetTriggerTime(triggerTime);
|
||||
}
|
||||
|
||||
{
|
||||
ObjectLock olock (this);
|
||||
SetupCleanupTimer();
|
||||
}
|
||||
SetupCleanupTimer();
|
||||
OnDowntimeTriggered(this);
|
||||
oLock.Unlock();
|
||||
|
||||
Array::Ptr triggers = GetTriggers();
|
||||
|
||||
|
|
@ -514,8 +518,6 @@ void Downtime::TriggerDowntime(double triggerTime)
|
|||
downtime->TriggerDowntime(triggerTime);
|
||||
}
|
||||
}
|
||||
|
||||
OnDowntimeTriggered(this);
|
||||
}
|
||||
|
||||
void Downtime::SetRemovalInfo(const String& removedBy, double removeTime, const MessageOrigin::Ptr& origin) {
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ public:
|
|||
bool IsInEffect() const;
|
||||
bool IsTriggered() const;
|
||||
bool IsExpired() const;
|
||||
bool CanBeTriggered();
|
||||
bool HasValidConfigOwner() const;
|
||||
|
||||
static void StaticInitialize();
|
||||
|
|
@ -92,8 +93,6 @@ private:
|
|||
|
||||
Timer::Ptr m_CleanupTimer;
|
||||
|
||||
bool CanBeTriggered();
|
||||
|
||||
void SetupCleanupTimer();
|
||||
|
||||
static void DowntimesStartTimerHandler();
|
||||
|
|
|
|||
|
|
@ -113,6 +113,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
|
||||
|
|
|
|||
70
test/icinga-downtime.cpp
Normal file
70
test/icinga-downtime.cpp
Normal 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()
|
||||
Loading…
Reference in a new issue