Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
timeoutQueue_test.cc File Reference

Comprehensive tests for TimeoutQueue class. More...

#include <gtest/gtest.h>
#include <stdexcept>
#include <atomic>
#include <chrono>
#include <thread>
#include <vector>
#include <mutex>
#include <condition_variable>
#include <timeoutQueue.H>
Include dependency graph for timeoutQueue_test.cc:

Go to the source code of this file.

Classes

class  TestEvent
 
class  SignalingEvent
 
class  TimingEvent
 
class  ReschedulingEvent
 
class  TimeoutQueueEnvironment
 

Functions

static Time time_from_now_ms (int ms)
 
static bool wait_for_status (const TimeoutQueue::Event *event, const TimeoutQueue::Event::Execution_Status expected, const chrono::milliseconds timeout)
 Wait until an event reaches an expected lifecycle state.
 
template<typename Pred >
static bool wait_until (Pred pred, const chrono::milliseconds timeout)
 Spin-wait until a predicate becomes true or a timeout elapses.
 
 TEST (TimeoutQueueTest, ScheduleAndExecuteSingleEvent)
 
 TEST (TimeoutQueueTest, EventExecutionStatus)
 
 TEST (TimeoutQueueTest, ScheduleWithExplicitTime)
 
 TEST (TimeoutQueueTest, GetAbsoluteTime)
 
 TEST (TimeoutQueueTest, CancelEventBeforeExecution)
 
 TEST (TimeoutQueueTest, CancelEventNotInQueue)
 
 TEST (TimeoutQueueTest, CancelDeleteEvent)
 
 TEST (TimeoutQueueTest, CancelDeleteNullEvent)
 
 TEST (TimeoutQueueTest, RescheduleEvent)
 
 TEST (TimeoutQueueTest, RescheduleNotInQueue)
 
 TEST (TimeoutQueueTest, SelfReschedulingEvent)
 
 TEST (TimeoutQueueTest, MultipleEventsExecuteInOrder)
 
 TEST (TimeoutQueueTest, ManyEventsStressTest)
 
 TEST (TimeoutQueueTest, EventWithImmediateTime)
 
 TEST (TimeoutQueueTest, EventThrowsException)
 
 TEST (TimeoutQueueTest, SetForDeletion)
 
 TEST (TimeoutQueueTest, TimingAccuracy)
 
 TEST (TimeoutQueueTest, ConcurrentScheduling)
 
 TEST (TimeoutQueueTest, ConcurrentCancellation)
 
 TEST (TimeoutQueueTest, SizeAndIsEmpty)
 
 TEST (TimeoutQueueTest, IsRunning)
 
 TEST (TimeoutQueueTest, ScheduleAfterMs)
 
 TEST (TimeoutQueueTest, NextEventTime)
 
 TEST (TimeoutQueueTest, ExecutedStatus)
 
 TEST (TimeoutQueueTest, ClearAll)
 
 TEST (TimeoutQueueTest, Statistics)
 
 TEST (TimeoutQueueTest, ResetStats)
 
 TEST (TimeoutQueueTest, PauseAndResume)
 
 TEST (TimeoutQueueTest, WaitUntilEmpty)
 
 TEST (TimeoutQueueTest, WaitUntilEmptyTimeout)
 
 TEST (TimeoutQueueTest, WaitUntilEmptyAfterCancel)
 
 TEST (TimeoutQueueTest, WaitUntilEmptyAfterCancelDelete)
 
 TEST (TimeoutQueueTest, EventName)
 
 TEST (TimeoutQueueTest, CompletionCallback)
 
 TEST (TimeoutQueueTest, CompletionCallbackOnCancel)
 
 TEST (TimeoutQueueTest, EventId)
 
 TEST (TimeoutQueueTest, FindById)
 
 TEST (TimeoutQueueTest, CancelById)
 
 TEST (TimeoutQueueTest, CancelByIdWithCallback)
 
 TEST (TimeoutQueueTest, DestructorWithoutShutdown)
 
 TEST (TimeoutQueueTest, CancelBeforeDeleteIsSafe)
 
 TEST (TimeoutQueueTest, CancelDuringTimeout)
 
 TEST (TimeoutQueueTest, RescheduleDuringTimeout)
 
 TEST (TimeoutQueueTest, NullEventValidation)
 
 TEST (TimeoutQueueTest, InvalidNsecValidation)
 
 TEST (TimeoutQueueTest, ScheduleSameEventTwiceThrows)
 
 TEST (TimeoutQueueTest, ShutdownCancelsPendingEventsAndInvokesCallback)
 
 TEST (TimeoutQueueTest, CancelDeleteEventCallback)
 
 TEST (TimeoutQueueTest, CancelDeleteExecutingEvent)
 
 TEST (TimeoutQueueTest, CallbackReceivesNullptrOnlyForDeleted)
 
 TEST (TimeoutQueueTest, CompletionCallbackOrderCorrect)
 
 TEST (TimeoutQueueTest, CompletionCallbackCanClearAllWithoutDeadlock)
 
 TEST (TimeoutQueueTest, MultipleEventsWithSameTime)
 
int main (int argc, char **argv)
 

Variables

static TimeoutQueue * g_queue = nullptr
 

Detailed Description

Comprehensive tests for TimeoutQueue class.

Note: Updated to reflect header Doxygen group changes.

Note: TimeoutQueue is a singleton (only one instance allowed). All tests share a single global queue instance.

Definition in file timeoutQueue_test.cc.

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

◆ TEST() [1/53]

◆ TEST() [2/53]

◆ TEST() [3/53]

◆ TEST() [4/53]

◆ TEST() [5/53]

TEST ( TimeoutQueueTest  ,
CancelDeleteEvent   
)

◆ TEST() [6/53]

◆ TEST() [7/53]

◆ TEST() [8/53]

TEST ( TimeoutQueueTest  ,
CancelDeleteNullEvent   
)

◆ TEST() [9/53]

◆ TEST() [10/53]

◆ TEST() [11/53]

TEST ( TimeoutQueueTest  ,
CancelEventNotInQueue   
)

◆ TEST() [12/53]

◆ TEST() [13/53]

TEST ( TimeoutQueueTest  ,
CompletionCallback   
)

◆ TEST() [14/53]

TEST ( TimeoutQueueTest  ,
CompletionCallbackCanClearAllWithoutDeadlock   
)

◆ TEST() [15/53]

TEST ( TimeoutQueueTest  ,
CompletionCallbackOnCancel   
)

◆ TEST() [16/53]

TEST ( TimeoutQueueTest  ,
CompletionCallbackOrderCorrect   
)

◆ TEST() [17/53]

TEST ( TimeoutQueueTest  ,
ConcurrentCancellation   
)

◆ TEST() [18/53]

TEST ( TimeoutQueueTest  ,
ConcurrentScheduling   
)

◆ TEST() [19/53]

TEST ( TimeoutQueueTest  ,
DestructorWithoutShutdown   
)

◆ TEST() [20/53]

◆ TEST() [21/53]

TEST ( TimeoutQueueTest  ,
EventId   
)

◆ TEST() [22/53]

TEST ( TimeoutQueueTest  ,
EventName   
)

◆ TEST() [23/53]

TEST ( TimeoutQueueTest  ,
EventThrowsException   
)

◆ TEST() [24/53]

TEST ( TimeoutQueueTest  ,
EventWithImmediateTime   
)

◆ TEST() [25/53]

TEST ( TimeoutQueueTest  ,
ExecutedStatus   
)

◆ TEST() [26/53]

◆ TEST() [27/53]

TEST ( TimeoutQueueTest  ,
GetAbsoluteTime   
)

◆ TEST() [28/53]

TEST ( TimeoutQueueTest  ,
InvalidNsecValidation   
)

◆ TEST() [29/53]

TEST ( TimeoutQueueTest  ,
IsRunning   
)

◆ TEST() [30/53]

TEST ( TimeoutQueueTest  ,
ManyEventsStressTest   
)

◆ TEST() [31/53]

TEST ( TimeoutQueueTest  ,
MultipleEventsExecuteInOrder   
)

◆ TEST() [32/53]

TEST ( TimeoutQueueTest  ,
MultipleEventsWithSameTime   
)

◆ TEST() [33/53]

◆ TEST() [34/53]

TEST ( TimeoutQueueTest  ,
NullEventValidation   
)

◆ TEST() [35/53]

◆ TEST() [36/53]

TEST ( TimeoutQueueTest  ,
RescheduleDuringTimeout   
)

◆ TEST() [37/53]

◆ TEST() [38/53]

TEST ( TimeoutQueueTest  ,
RescheduleNotInQueue   
)

◆ TEST() [39/53]

◆ TEST() [40/53]

TEST ( TimeoutQueueTest  ,
ScheduleAfterMs   
)

◆ TEST() [41/53]

TEST ( TimeoutQueueTest  ,
ScheduleAndExecuteSingleEvent   
)

◆ TEST() [42/53]

TEST ( TimeoutQueueTest  ,
ScheduleSameEventTwiceThrows   
)

◆ TEST() [43/53]

◆ TEST() [44/53]

TEST ( TimeoutQueueTest  ,
SelfReschedulingEvent   
)

◆ TEST() [45/53]

TEST ( TimeoutQueueTest  ,
SetForDeletion   
)

◆ TEST() [46/53]

TEST ( TimeoutQueueTest  ,
ShutdownCancelsPendingEventsAndInvokesCallback   
)

◆ TEST() [47/53]

◆ TEST() [48/53]

◆ TEST() [49/53]

TEST ( TimeoutQueueTest  ,
TimingAccuracy   
)

◆ TEST() [50/53]

◆ TEST() [51/53]

◆ TEST() [52/53]

◆ TEST() [53/53]

◆ time_from_now_ms()

◆ wait_for_status()

static bool wait_for_status ( const TimeoutQueue::Event *  event,
const TimeoutQueue::Event::Execution_Status  expected,
const chrono::milliseconds  timeout 
)
static

Wait until an event reaches an expected lifecycle state.

Parameters
eventEvent whose state is observed.
expectedExpected lifecycle state.
timeoutMaximum amount of time to wait.
Returns
true if the expected state was observed before the timeout.

Definition at line 39 of file timeoutQueue_test.cc.

References Aleph::blossom_maximum_cardinality_matching(), and TimeoutQueue::Event::get_execution_status().

Referenced by TEST(), TEST(), and TEST().

◆ wait_until()

template<typename Pred >
static bool wait_until ( Pred  pred,
const chrono::milliseconds  timeout 
)
static

Spin-wait until a predicate becomes true or a timeout elapses.

Replaces fixed sleep_for() delays used as ad-hoc synchronization with the background worker thread. Those delays are unreliable when the worker is starved of CPU (e.g. on heavily loaded CI runners): the test wakes up before the event completed and then reads stale state or deletes an event the worker still references. This helper returns as soon as the predicate holds, keeping the common case fast while tolerating arbitrarily long scheduling delays.

Parameters
predCallable returning bool; evaluated repeatedly until true.
timeoutMaximum amount of time to wait.
Returns
true if the predicate held before the timeout, false otherwise.

Definition at line 69 of file timeoutQueue_test.cc.

References Aleph::blossom_maximum_cardinality_matching(), and pred.

Referenced by TEST(), and TEST().

Variable Documentation

◆ g_queue