Skip to content

Commit 034f674

Browse files
author
Juanjo Garcia
committed
Refs #22658: Regression test
Signed-off-by: Juanjo Garcia <[email protected]>
1 parent 9ddad46 commit 034f674

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

test/blackbox/api/dds-pim/PubSubWriter.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,14 @@ class PubSubWriter
892892
return *this;
893893
}
894894

895+
PubSubWriter& reliability(
896+
const eprosima::fastdds::dds::ReliabilityQosPolicyKind kind, int max_blocking_time)
897+
{
898+
datawriter_qos_.reliability().kind = kind;
899+
datawriter_qos_.reliability().max_blocking_time.seconds = max_blocking_time;
900+
return *this;
901+
}
902+
895903
PubSubWriter& mem_policy(
896904
const eprosima::fastdds::rtps::MemoryManagementPolicy mem_policy)
897905
{

test/blackbox/common/DDSBlackboxTestsListeners.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3436,6 +3436,44 @@ TEST(DDSStatus, keyed_reliable_positive_acks_disabled_on_unack_sample_removed)
34363436
delete dummy_data;
34373437
}
34383438

3439+
/*!
3440+
* Regression Test for 22658: when he entire history is acked in volatile, given that the entries are deleted from the
3441+
* history, check_acked_status satisfies min_low_mark >= get_seq_num_min() because seq_num_min is unknown. This makes
3442+
* try_remove to fail, because it tries to remove changes but there were none. This causes prepare_change to not
3443+
* perform the changes, since the history was full and could not delete any changes.
3444+
*/
3445+
3446+
TEST(DDSStatus, entire_history_acked_volatile_unknown_pointer)
3447+
{
3448+
PubSubWriter<HelloWorldPubSubType> writer(TEST_TOPIC_NAME);
3449+
PubSubReader<HelloWorldPubSubType> reader(TEST_TOPIC_NAME);
3450+
3451+
writer.reliability(eprosima::fastdds::dds::RELIABLE_RELIABILITY_QOS, 200)
3452+
.durability_kind(eprosima::fastdds::dds::VOLATILE_DURABILITY_QOS)
3453+
.history_kind(eprosima::fastdds::dds::KEEP_ALL_HISTORY_QOS)
3454+
.resource_limits_max_instances(1)
3455+
.resource_limits_max_samples(1)
3456+
.resource_limits_max_samples_per_instance(1)
3457+
.init();
3458+
ASSERT_TRUE(writer.isInitialized());
3459+
3460+
reader.reliability(eprosima::fastdds::dds::RELIABLE_RELIABILITY_QOS)
3461+
.durability_kind(eprosima::fastdds::dds::VOLATILE_DURABILITY_QOS)
3462+
.init();
3463+
ASSERT_TRUE(reader.isInitialized());
3464+
3465+
// Wait for discovery
3466+
writer.wait_discovery();
3467+
reader.wait_discovery();
3468+
3469+
auto data = default_helloworld_data_generator(2);
3470+
3471+
for (auto sample : data)
3472+
{
3473+
EXPECT_TRUE(writer.send_sample(sample));
3474+
}
3475+
}
3476+
34393477
/*!
34403478
* Test that checks with a writer of each type that having the same listener attached, the notified writer in the
34413479
* callback is the corresponding writer that has removed a sample unacknowledged.

0 commit comments

Comments
 (0)