Skip to content

Commit

Permalink
Refs #5765 Adding more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Raquel Alvarez committed Jun 27, 2019
1 parent d21bbb8 commit ca9e9e7
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 2 deletions.
109 changes: 107 additions & 2 deletions test/blackbox/BlackboxTestsLivelinessQos.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1393,10 +1393,10 @@ TEST(LivelinessQos, UnmatchedWriter)
EXPECT_EQ(subscribers.sub_times_liveliness_recovered(), 1u);
}

//! Tests liveliness structs
//! Tests liveliness structs when a writer changes from being alive to losing liveliness
//! Writer is reliable, and MANUAL_BY_TOPIC
//! Reader is reliable, and MANUAL_BY_TOPIC
TEST(LivelinessQos, LivelinessChangedStatus)
TEST(LivelinessQos, LivelinessChangedStatus_Alive_NotAlive)
{
PubSubReader<HelloWorldType> reader(TEST_TOPIC_NAME);
PubSubWriter<HelloWorldType> writer(TEST_TOPIC_NAME);
Expand Down Expand Up @@ -1447,3 +1447,108 @@ TEST(LivelinessQos, LivelinessChangedStatus)
EXPECT_EQ(status.not_alive_count, 1);
EXPECT_EQ(status.not_alive_count_change, 1);
}

//! Tests liveliness structs when an alive writer is unmatched
//! Writer is reliable, and MANUAL_BY_TOPIC
//! Reader is reliable, and MANUAL_BY_TOPIC
TEST(LivelinessQos, LivelinessChangedStatus_Alive_Unmatched)
{
PubSubReader<HelloWorldType> reader(TEST_TOPIC_NAME);
PubSubWriter<HelloWorldType> writer(TEST_TOPIC_NAME);

// Liveliness lease duration and announcement period, in seconds
Duration_t liveliness_s(100 * 1e-3);
Duration_t announcement_period(100 * 1e-3 * 0.5);

reader.reliability(RELIABLE_RELIABILITY_QOS)
.liveliness_kind(MANUAL_BY_TOPIC_LIVELINESS_QOS)
.liveliness_lease_duration(liveliness_s)
.deadline_period(0.15)
.init();
writer.reliability(RELIABLE_RELIABILITY_QOS)
.liveliness_kind(MANUAL_BY_TOPIC_LIVELINESS_QOS)
.liveliness_announcement_period(announcement_period)
.liveliness_lease_duration(liveliness_s)
.deadline_period(0.15)
.init();

ASSERT_TRUE(reader.isInitialized());
ASSERT_TRUE(writer.isInitialized());

// Wait for discovery.
writer.wait_discovery();
reader.wait_discovery();

// Assert liveliness
writer.assert_liveliness();
reader.wait_liveliness_recovered();

LivelinessChangedStatus status = reader.liveliness_changed_status();
EXPECT_EQ(status.alive_count, 1);
EXPECT_EQ(status.alive_count_change, 1);
EXPECT_EQ(status.not_alive_count, 0);
EXPECT_EQ(status.not_alive_count_change, 0);

// Now unmatch by changing the deadline period of the reader
reader.update_deadline_period(0.10);

status = reader.liveliness_changed_status();
EXPECT_EQ(status.alive_count, 0);
EXPECT_EQ(status.alive_count_change, -1);
EXPECT_EQ(status.not_alive_count, 0);
EXPECT_EQ(status.not_alive_count_change, 0);
}

//! Tests liveliness structs when a not alive writer is unmatched
//! Writer is reliable, and MANUAL_BY_TOPIC
//! Reader is reliable, and MANUAL_BY_TOPIC
TEST(LivelinessQos, LivelinessChangedStatus_NotAlive_Unmatched)
{
PubSubReader<HelloWorldType> reader(TEST_TOPIC_NAME);
PubSubWriter<HelloWorldType> writer(TEST_TOPIC_NAME);

// Liveliness lease duration and announcement period, in seconds
Duration_t liveliness_s(100 * 1e-3);
Duration_t announcement_period(100 * 1e-3 * 0.5);

reader.reliability(RELIABLE_RELIABILITY_QOS)
.liveliness_kind(MANUAL_BY_TOPIC_LIVELINESS_QOS)
.liveliness_lease_duration(liveliness_s)
.deadline_period(0.15)
.init();
writer.reliability(RELIABLE_RELIABILITY_QOS)
.liveliness_kind(MANUAL_BY_TOPIC_LIVELINESS_QOS)
.liveliness_announcement_period(announcement_period)
.liveliness_lease_duration(liveliness_s)
.deadline_period(0.15)
.init();

ASSERT_TRUE(reader.isInitialized());
ASSERT_TRUE(writer.isInitialized());

// Wait for discovery.
writer.wait_discovery();
reader.wait_discovery();

// Assert liveliness
writer.assert_liveliness();
reader.wait_liveliness_recovered();

LivelinessChangedStatus status = reader.liveliness_changed_status();
EXPECT_EQ(status.alive_count, 1);
EXPECT_EQ(status.alive_count_change, 1);
EXPECT_EQ(status.not_alive_count, 0);
EXPECT_EQ(status.not_alive_count_change, 0);

// Wait for liveliness lost
reader.wait_liveliness_lost();

// Now unmatch by changing the deadline period of the reader
reader.update_deadline_period(0.10);

status = reader.liveliness_changed_status();
EXPECT_EQ(status.alive_count, 0);
EXPECT_EQ(status.alive_count_change, 0);
EXPECT_EQ(status.not_alive_count, 0);
EXPECT_EQ(status.not_alive_count_change, -1);
}
9 changes: 9 additions & 0 deletions test/blackbox/PubSubReader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,15 @@ class PubSubReader
return *this;
}

bool update_deadline_period(const eprosima::fastrtps::Duration_t& deadline_period)
{
eprosima::fastrtps::SubscriberAttributes attr;
attr = subscriber_attr_;
attr.qos.m_deadline.period = deadline_period;

return subscriber_->updateAttributes(attr);
}

PubSubReader& liveliness_kind(const eprosima::fastrtps::LivelinessQosPolicyKind& kind)
{
subscriber_attr_.qos.m_liveliness.kind = kind;
Expand Down

0 comments on commit ca9e9e7

Please sign in to comment.