diff --git a/rclcpp/test/test_rate.cpp b/rclcpp/test/test_rate.cpp index 8b421e8..cfff5d5 100644 --- a/rclcpp/test/test_rate.cpp +++ b/rclcpp/test/test_rate.cpp @@ -39,9 +39,9 @@ TEST(TestRate, rate_basics) { rclcpp::utilities::sleep_for(offset); ASSERT_TRUE(r.sleep()); auto two = std::chrono::system_clock::now(); - delta = two - one; - ASSERT_TRUE(period < delta + epsilon); - ASSERT_TRUE(period * overrun_ratio > delta); + delta = two - start; + ASSERT_TRUE(2 * period < delta); + ASSERT_TRUE(2 * period * overrun_ratio > delta); rclcpp::utilities::sleep_for(offset); auto two_offset = std::chrono::system_clock::now(); @@ -66,35 +66,35 @@ TEST(TestRate, wall_rate_basics) { auto epsilon = std::chrono::milliseconds(1); double overrun_ratio = 1.5; - auto start = std::chrono::system_clock::now(); + auto start = std::chrono::steady_clock::now(); rclcpp::rate::WallRate r(period); ASSERT_TRUE(r.is_steady()); ASSERT_TRUE(r.sleep()); - auto one = std::chrono::system_clock::now(); + auto one = std::chrono::steady_clock::now(); auto delta = one - start; ASSERT_TRUE(period < delta); ASSERT_TRUE(period * overrun_ratio > delta); rclcpp::utilities::sleep_for(offset); ASSERT_TRUE(r.sleep()); - auto two = std::chrono::system_clock::now(); - delta = two - one; - ASSERT_TRUE(period < delta + epsilon); - ASSERT_TRUE(period * overrun_ratio > delta); + auto two = std::chrono::steady_clock::now(); + delta = two - start; + ASSERT_TRUE(2 * period < delta + epsilon); + ASSERT_TRUE(2 * period * overrun_ratio > delta); rclcpp::utilities::sleep_for(offset); - auto two_offset = std::chrono::system_clock::now(); + auto two_offset = std::chrono::steady_clock::now(); r.reset(); ASSERT_TRUE(r.sleep()); - auto three = std::chrono::system_clock::now(); + auto three = std::chrono::steady_clock::now(); delta = three - two_offset; ASSERT_TRUE(period < delta); ASSERT_TRUE(period * overrun_ratio > delta); rclcpp::utilities::sleep_for(offset + period); - auto four = std::chrono::system_clock::now(); + auto four = std::chrono::steady_clock::now(); ASSERT_FALSE(r.sleep()); - auto five = std::chrono::system_clock::now(); + auto five = std::chrono::steady_clock::now(); delta = five - four; ASSERT_TRUE(epsilon > delta); }