@@ -3388,6 +3388,46 @@ TEST(DDSStatus, keyed_reliable_positive_acks_disabled_on_unack_sample_removed)
3388
3388
delete dummy_data;
3389
3389
}
3390
3390
3391
+ /* !
3392
+ * Regression Test for 22658: when the entire history is acked in volatile, given that the entries are deleted from the
3393
+ * history, check_acked_status satisfies min_low_mark >= get_seq_num_min() because seq_num_min is unknown. This makes
3394
+ * try_remove to fail, because it tries to remove changes but there were none. This causes prepare_change to not
3395
+ * perform the changes, since the history was full and could not delete any changes.
3396
+ */
3397
+
3398
+ TEST (DDSStatus, entire_history_acked_volatile_unknown_pointer)
3399
+ {
3400
+ PubSubWriter<HelloWorldPubSubType> writer (TEST_TOPIC_NAME);
3401
+ PubSubReader<HelloWorldPubSubType> reader (TEST_TOPIC_NAME);
3402
+
3403
+ writer.reliability (eprosima::fastdds::dds::RELIABLE_RELIABILITY_QOS, eprosima::fastrtps::Duration_t (200 , 0 ))
3404
+ .durability_kind (eprosima::fastdds::dds::VOLATILE_DURABILITY_QOS)
3405
+ .history_kind (eprosima::fastdds::dds::KEEP_ALL_HISTORY_QOS)
3406
+ .resource_limits_max_instances (1 )
3407
+ .resource_limits_max_samples (1 )
3408
+ .resource_limits_max_samples_per_instance (1 )
3409
+ .init ();
3410
+ ASSERT_TRUE (writer.isInitialized ());
3411
+
3412
+ reader.reliability (eprosima::fastdds::dds::RELIABLE_RELIABILITY_QOS)
3413
+ .durability_kind (eprosima::fastdds::dds::VOLATILE_DURABILITY_QOS)
3414
+ .init ();
3415
+ ASSERT_TRUE (reader.isInitialized ());
3416
+
3417
+ // Wait for discovery
3418
+ writer.wait_discovery ();
3419
+ reader.wait_discovery ();
3420
+
3421
+ auto data = default_helloworld_data_generator (2 );
3422
+ for (auto sample : data)
3423
+ {
3424
+ // A value of true means that the sample was sent successfully.
3425
+ // This aligns with the expected behaviour of having the history
3426
+ // acknowledged and emptied before the next message.
3427
+ EXPECT_TRUE (writer.send_sample (sample));
3428
+ }
3429
+ }
3430
+
3391
3431
/* !
3392
3432
* Test that checks with a writer of each type that having the same listener attached, the notified writer in the
3393
3433
* callback is the corresponding writer that has removed a sample unacknowledged.
0 commit comments