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 34a65c06b6914d81948c76d80b7b4f948a9a691c Author: Pepijn Noltes <[email protected]> AuthorDate: Thu Jun 15 20:00:15 2023 +0200 Fix issue in celix_addDelayInSecondsToTime --- bundles/remote_services/topology_manager/tms_tst/CMakeLists.txt | 1 + libs/utils/gtest/src/TimeUtilsTestSuite.cc | 7 +++++++ libs/utils/src/utils.c | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/bundles/remote_services/topology_manager/tms_tst/CMakeLists.txt b/bundles/remote_services/topology_manager/tms_tst/CMakeLists.txt index 64b420ec..b909f71b 100644 --- a/bundles/remote_services/topology_manager/tms_tst/CMakeLists.txt +++ b/bundles/remote_services/topology_manager/tms_tst/CMakeLists.txt @@ -41,6 +41,7 @@ target_link_libraries(test_tm_scoped PRIVATE jansson::jansson calculator_api Celix::rsa_common + civetweb::civetweb ) add_celix_bundle_dependencies(test_tm_scoped Celix::rsa_dfi Celix::rsa_topology_manager calculator topology_manager_disc_mock_bundle topology_manager_test_bundle) diff --git a/libs/utils/gtest/src/TimeUtilsTestSuite.cc b/libs/utils/gtest/src/TimeUtilsTestSuite.cc index 303191eb..f0f26198 100644 --- a/libs/utils/gtest/src/TimeUtilsTestSuite.cc +++ b/libs/utils/gtest/src/TimeUtilsTestSuite.cc @@ -102,4 +102,11 @@ TEST_F(TimeUtilsTestSuite, AddDelayInSecondsToTimeTest) { expectedTime = {-1, 0}; ASSERT_EQ(delayedTime.tv_sec, expectedTime.tv_sec); ASSERT_EQ(delayedTime.tv_nsec, expectedTime.tv_nsec); + + //Test delay <= -2 seconds + time = {3, 0}; + delayedTime = celix_addDelayInSecondsToTime(&time, -2.6); + expectedTime = {0, 400000000}; + ASSERT_EQ(delayedTime.tv_sec, expectedTime.tv_sec); + ASSERT_EQ(delayedTime.tv_nsec, expectedTime.tv_nsec); } diff --git a/libs/utils/src/utils.c b/libs/utils/src/utils.c index 499d8ada..905ca301 100644 --- a/libs/utils/src/utils.c +++ b/libs/utils/src/utils.c @@ -276,9 +276,9 @@ struct timespec celix_addDelayInSecondsToTime(const struct timespec* time, doubl } long seconds = (long)delayInSeconds; - long nanoseconds = (long)((delayInSeconds - floor(delayInSeconds)) * CELIX_NS_IN_SEC); + double nanoseconds = (delayInSeconds - (double)seconds) * CELIX_NS_IN_SEC; delayedTime.tv_sec += seconds; - delayedTime.tv_nsec += nanoseconds; + delayedTime.tv_nsec += (long)nanoseconds; if (delayedTime.tv_nsec >= CELIX_NS_IN_SEC) { delayedTime.tv_sec += 1;
