adding coverage and an epsilon
This commit is contained in:
parent
ebdf394dfa
commit
fac550cc82
1 changed files with 25 additions and 9 deletions
|
@ -24,61 +24,77 @@
|
||||||
TEST(TestRate, rate_basics) {
|
TEST(TestRate, rate_basics) {
|
||||||
auto period = std::chrono::milliseconds(100);
|
auto period = std::chrono::milliseconds(100);
|
||||||
auto offset = std::chrono::milliseconds(50);
|
auto offset = std::chrono::milliseconds(50);
|
||||||
|
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::system_clock::now();
|
||||||
rclcpp::rate::Rate r(period);
|
rclcpp::rate::Rate r(period);
|
||||||
ASSERT_FALSE(r.is_steady());
|
ASSERT_FALSE(r.is_steady());
|
||||||
r.sleep();
|
ASSERT_TRUE(r.sleep());
|
||||||
auto one = std::chrono::system_clock::now();
|
auto one = std::chrono::system_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);
|
||||||
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 - one;
|
||||||
ASSERT_TRUE(period < delta);
|
ASSERT_TRUE(period < delta + epsilon);
|
||||||
ASSERT_TRUE(period * overrun_ratio > delta);
|
ASSERT_TRUE(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();
|
||||||
r.reset();
|
r.reset();
|
||||||
r.sleep();
|
ASSERT_TRUE(r.sleep());
|
||||||
auto three = std::chrono::system_clock::now();
|
auto three = std::chrono::system_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);
|
||||||
|
auto four = std::chrono::system_clock::now();
|
||||||
|
ASSERT_FALSE(r.sleep());
|
||||||
|
auto five = std::chrono::system_clock::now();
|
||||||
|
delta = five - four;
|
||||||
|
ASSERT_TRUE(epsilon > delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(TestRate, wallrate_basics) {
|
TEST(TestRate, wall_rate_basics) {
|
||||||
auto period = std::chrono::milliseconds(100);
|
auto period = std::chrono::milliseconds(100);
|
||||||
auto offset = std::chrono::milliseconds(50);
|
auto offset = std::chrono::milliseconds(50);
|
||||||
|
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::system_clock::now();
|
||||||
rclcpp::rate::WallRate r(period);
|
rclcpp::rate::WallRate r(period);
|
||||||
ASSERT_TRUE(r.is_steady());
|
ASSERT_TRUE(r.is_steady());
|
||||||
r.sleep();
|
ASSERT_TRUE(r.sleep());
|
||||||
auto one = std::chrono::system_clock::now();
|
auto one = std::chrono::system_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);
|
||||||
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 - one;
|
||||||
ASSERT_TRUE(period < delta);
|
ASSERT_TRUE(period < delta + epsilon);
|
||||||
ASSERT_TRUE(period * overrun_ratio > delta);
|
ASSERT_TRUE(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();
|
||||||
r.reset();
|
r.reset();
|
||||||
r.sleep();
|
ASSERT_TRUE(r.sleep());
|
||||||
auto three = std::chrono::system_clock::now();
|
auto three = std::chrono::system_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);
|
||||||
|
auto four = std::chrono::system_clock::now();
|
||||||
|
ASSERT_FALSE(r.sleep());
|
||||||
|
auto five = std::chrono::system_clock::now();
|
||||||
|
delta = five - four;
|
||||||
|
ASSERT_TRUE(epsilon > delta);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue