Merge pull request #191 from ros2/fix_rate_test

fix rate test
This commit is contained in:
gerkey 2015-12-31 16:17:22 -08:00
commit 6ec5e8e974

View file

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