This is an automated email from the ASF dual-hosted git repository. pnoltes pushed a commit to branch feature/scheduled_event_on_event_thread in repository https://gitbox.apache.org/repos/asf/celix.git
commit ba22bf2260dc7d20331d92850501daded9ed9559 Author: Pepijn Noltes <[email protected]> AuthorDate: Thu Jun 15 22:36:07 2023 +0200 Update timing of scheduled event tests --- libs/framework/gtest/src/ScheduledEventTestSuite.cc | 20 ++++++++++---------- libs/framework/src/celix_scheduled_event.c | 2 +- libs/framework/src/framework.c | 3 +-- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/libs/framework/gtest/src/ScheduledEventTestSuite.cc b/libs/framework/gtest/src/ScheduledEventTestSuite.cc index 8940c2ff..9b52fc2e 100644 --- a/libs/framework/gtest/src/ScheduledEventTestSuite.cc +++ b/libs/framework/gtest/src/ScheduledEventTestSuite.cc @@ -232,8 +232,8 @@ TEST_F(ScheduledEventTestSuite, WakeUpEventTest) { std::atomic<int> count{0}; celix_scheduled_event_options_t opts{}; opts.name = "test wakeup"; - opts.initialDelayInSeconds = 0.01; - opts.intervalInSeconds = 0.01; + opts.initialDelayInSeconds = 0.05; + opts.intervalInSeconds = 0.05; opts.callbackData = static_cast<void*>(&count); opts.callback = [](void* countPtr) { auto* count = static_cast<std::atomic<int>*>(countPtr); @@ -251,13 +251,13 @@ TEST_F(ScheduledEventTestSuite, WakeUpEventTest) { ASSERT_EQ(CELIX_SUCCESS, status); // When waiting a bit to let the scheduled event trigger - std::this_thread::sleep_for(std::chrono::milliseconds{2}); + std::this_thread::sleep_for(std::chrono::milliseconds{5}); // Then the count is increased EXPECT_EQ(1, count.load()); // When waiting longer than the interval - std::this_thread::sleep_for(std::chrono::milliseconds{11}); + std::this_thread::sleep_for(std::chrono::milliseconds{55}); // Then the count is increased EXPECT_EQ(2, count.load()); @@ -269,7 +269,7 @@ TEST_F(ScheduledEventTestSuite, WakeUpEventTest) { ASSERT_EQ(CELIX_SUCCESS, status); // When waiting a bit to let the scheduled event trigger - std::this_thread::sleep_for(std::chrono::milliseconds{2}); + std::this_thread::sleep_for(std::chrono::milliseconds{5}); // Then the count is increased EXPECT_EQ(3, count.load()); @@ -301,7 +301,7 @@ TEST_F(ScheduledEventTestSuite, WakeUpOneShotEventTest) { ASSERT_EQ(CELIX_SUCCESS, status); // When waiting a bit to ensure the scheduled event is woken up - std::this_thread::sleep_for(std::chrono::milliseconds{2}); + std::this_thread::sleep_for(std::chrono::milliseconds{5}); // And the count is increased EXPECT_EQ(1, count.load()); @@ -336,7 +336,7 @@ TEST_F(ScheduledEventTestSuite, CxxScheduledEventTest) { ASSERT_EQ(0, count.load()); // When waiting longer than the initial delay - std::this_thread::sleep_for(std::chrono::milliseconds{60}); + std::this_thread::sleep_for(std::chrono::milliseconds{55}); // Then the count is increased EXPECT_EQ(1, count.load()); @@ -345,7 +345,7 @@ TEST_F(ScheduledEventTestSuite, CxxScheduledEventTest) { event.wakeup(); // And waiting a bit to ensure the event is called - std::this_thread::sleep_for(std::chrono::milliseconds{2}); + std::this_thread::sleep_for(std::chrono::milliseconds{5}); // Then the count is increased EXPECT_EQ(2, count.load()); @@ -354,7 +354,7 @@ TEST_F(ScheduledEventTestSuite, CxxScheduledEventTest) { event.wakeup(); // And waiting a bit to ensure the event is called - std::this_thread::sleep_for(std::chrono::milliseconds{2}); + std::this_thread::sleep_for(std::chrono::milliseconds{5}); // Then the count is increased EXPECT_EQ(3, count.load()); @@ -366,7 +366,7 @@ TEST_F(ScheduledEventTestSuite, CxxScheduledEventTest) { event.cancel(); // And waiting longer than the interval - std::this_thread::sleep_for(std::chrono::milliseconds{60}); + std::this_thread::sleep_for(std::chrono::milliseconds{55}); // Then the count is not increased EXPECT_EQ(3, count.load()); diff --git a/libs/framework/src/celix_scheduled_event.c b/libs/framework/src/celix_scheduled_event.c index 118858d9..2ab4ee11 100644 --- a/libs/framework/src/celix_scheduled_event.c +++ b/libs/framework/src/celix_scheduled_event.c @@ -119,7 +119,7 @@ celix_scheduled_event_t* celix_scheduledEvent_create(celix_framework_logger_t* l event->useCount = 1; event->callCount = 0; event->isRemoved = false; - clock_gettime(CLOCK_MONOTONIC, &event->lastScheduledEventTime); + event->lastScheduledEventTime = celix_gettime(CLOCK_REALTIME); event->processForWakeup = false; celixThreadMutex_create(&event->mutex, NULL); diff --git a/libs/framework/src/framework.c b/libs/framework/src/framework.c index a6cc385d..f9b3dcdf 100644 --- a/libs/framework/src/framework.c +++ b/libs/framework/src/framework.c @@ -1426,8 +1426,7 @@ static inline void fw_handleEvents(celix_framework_t* framework) { * @brief Process all scheduled events. */ static double celix_framework_processScheduledEvents(celix_framework_t* fw) { - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); + struct timespec ts = celix_gettime(CLOCK_REALTIME); double nextClosestScheduledEvent; celix_scheduled_event_t* callEvent;
