Skip to content

Commit

Permalink
refactor code
Browse files Browse the repository at this point in the history
Signed-off-by: Miaofei <miaofei@amazon.com>
  • Loading branch information
mm318 committed May 8, 2019
1 parent 7c1dcc5 commit 45f6b69
Showing 1 changed file with 22 additions and 32 deletions.
54 changes: 22 additions & 32 deletions rcl/test/rcl/test_events.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,6 @@ using WaitConditionPredicate = std::function<
)>;

// Wait for msgs and events until all conditions are met or a timeout has occured.
template<typename S, typename P>
rcl_ret_t
conditional_wait_for_msgs_and_events(
rcl_context_t * context,
Expand All @@ -313,10 +312,7 @@ conditional_wait_for_msgs_and_events(
rcl_event_t * publisher_event,
bool * msg_persist_ready,
bool * subscription_persist_ready,
bool * publisher_persist_ready,
test_msgs__msg__Strings * msg,
S * subscription_discrete_event,
P * publisher_discrete_event)
bool * publisher_persist_ready)
{
*msg_persist_ready = false;
*subscription_persist_ready = false;
Expand All @@ -338,15 +334,6 @@ conditional_wait_for_msgs_and_events(
*subscription_persist_ready |= subscription_event_ready;
*publisher_persist_ready |= publisher_event_ready;
if (events_ready(*msg_persist_ready, *subscription_persist_ready, *publisher_persist_ready)) {
if (msg_persist_ready && nullptr != msg) {
EXPECT_EQ(rcl_take(subscription, msg, nullptr, nullptr), RCL_RET_OK);
}
if (subscription_persist_ready && nullptr != subscription_discrete_event) {
EXPECT_EQ(rcl_take_event(subscription_event, subscription_discrete_event), RCL_RET_OK);
}
if (publisher_persist_ready && nullptr != publisher_discrete_event) {
EXPECT_EQ(rcl_take_event(publisher_event, publisher_discrete_event), RCL_RET_OK);
}
return RCL_RET_OK;
}
}
Expand Down Expand Up @@ -522,24 +509,22 @@ TEST_F(CLASSNAME(TestEventFixture, RMW_IMPLEMENTATION), test_pubsub_deadline_mis
const bool & publisher_persist_ready) {
return msg_persist_ready && subscription_persist_ready && publisher_persist_ready;
};
test_msgs__msg__Strings msg;
test_msgs__msg__Strings__init(&msg);
OSRF_TESTING_TOOLS_CPP_SCOPE_EXIT({
test_msgs__msg__Strings__fini(&msg);
});
rmw_offered_deadline_missed_status_t offered_deadline_status;
rmw_requested_deadline_missed_status_t requested_deadline_status;
bool msg_persist_ready, subscription_persist_ready, publisher_persist_ready;
rcl_ret_t wait_res = conditional_wait_for_msgs_and_events(
context_ptr, MAX_WAIT_PER_TESTCASE, all_ready,
&subscription, &subscription_event, &publisher_event,
&msg_persist_ready, &subscription_persist_ready, &publisher_persist_ready,
&msg, &requested_deadline_status, &offered_deadline_status);
&msg_persist_ready, &subscription_persist_ready, &publisher_persist_ready);
EXPECT_EQ(wait_res, RCL_RET_OK);

// test that the message published to topic is as expected
EXPECT_TRUE(msg_persist_ready);
if (msg_persist_ready) {
test_msgs__msg__Strings msg;
test_msgs__msg__Strings__init(&msg);
OSRF_TESTING_TOOLS_CPP_SCOPE_EXIT({
test_msgs__msg__Strings__fini(&msg);
});
ret = rcl_take(&subscription, &msg, nullptr, nullptr);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string().str;
EXPECT_EQ(std::string(msg.string_value.data, msg.string_value.size),
std::string(test_string));
Expand All @@ -548,6 +533,8 @@ TEST_F(CLASSNAME(TestEventFixture, RMW_IMPLEMENTATION), test_pubsub_deadline_mis
// test subscriber/datareader deadline missed status
EXPECT_TRUE(subscription_persist_ready);
if (subscription_persist_ready) {
rmw_requested_deadline_missed_status_t requested_deadline_status;
ret = rcl_take_event(&subscription_event, &requested_deadline_status);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string().str;
EXPECT_EQ(requested_deadline_status.total_count, 1);
EXPECT_EQ(requested_deadline_status.total_count_change, 1);
Expand All @@ -556,6 +543,8 @@ TEST_F(CLASSNAME(TestEventFixture, RMW_IMPLEMENTATION), test_pubsub_deadline_mis
// test publisher/datawriter deadline missed status
EXPECT_TRUE(publisher_persist_ready);
if (publisher_persist_ready) {
rmw_offered_deadline_missed_status_t offered_deadline_status;
ret = rcl_take_event(&publisher_event, &offered_deadline_status);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string().str;
EXPECT_EQ(offered_deadline_status.total_count, 1);
EXPECT_EQ(offered_deadline_status.total_count_change, 1);
Expand Down Expand Up @@ -600,23 +589,22 @@ TEST_F(CLASSNAME(TestEventFixture, RMW_IMPLEMENTATION), test_pubsub_liveliness_k
const bool &) {
return msg_persist_ready && subscription_persist_ready;
};
test_msgs__msg__Strings msg;
test_msgs__msg__Strings__init(&msg);
OSRF_TESTING_TOOLS_CPP_SCOPE_EXIT({
test_msgs__msg__Strings__fini(&msg);
});
rmw_liveliness_changed_status_t liveliness_status;
bool msg_persist_ready, subscription_persist_ready, publisher_persist_ready;
rcl_ret_t wait_res = conditional_wait_for_msgs_and_events<rmw_liveliness_changed_status_t, void>(
rcl_ret_t wait_res = conditional_wait_for_msgs_and_events(
context_ptr, MAX_WAIT_PER_TESTCASE, msg_and_subevent_ready,
&subscription, &subscription_event, nullptr,
&msg_persist_ready, &subscription_persist_ready, &publisher_persist_ready,
&msg, &liveliness_status, nullptr);
&msg_persist_ready, &subscription_persist_ready, &publisher_persist_ready);
EXPECT_EQ(wait_res, RCL_RET_OK);

// test that the message published to topic is as expected
EXPECT_TRUE(msg_persist_ready);
if (msg_persist_ready) {
test_msgs__msg__Strings msg;
test_msgs__msg__Strings__init(&msg);
OSRF_TESTING_TOOLS_CPP_SCOPE_EXIT({
test_msgs__msg__Strings__fini(&msg);
});
ret = rcl_take(&subscription, &msg, nullptr, nullptr);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string().str;
EXPECT_EQ(std::string(msg.string_value.data, msg.string_value.size),
std::string(test_string));
Expand All @@ -625,6 +613,8 @@ TEST_F(CLASSNAME(TestEventFixture, RMW_IMPLEMENTATION), test_pubsub_liveliness_k
// test subscriber/datareader liveliness changed status
EXPECT_TRUE(subscription_persist_ready);
if (subscription_persist_ready) {
rmw_liveliness_changed_status_t liveliness_status;
ret = rcl_take_event(&subscription_event, &liveliness_status);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string().str;
EXPECT_EQ(liveliness_status.alive_count, 0);
// TODO(mm3188): Connext and OpenSplice seem to be tracking alive_count_change differently.
Expand Down

0 comments on commit 45f6b69

Please sign in to comment.