@@ -3436,6 +3436,46 @@ TEST(DDSStatus, keyed_reliable_positive_acks_disabled_on_unack_sample_removed)
3436
3436
delete dummy_data;
3437
3437
}
3438
3438
3439
+ /* !
3440
+ * Regression Test for 22658: when the 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, eprosima::fastdds::dds::Duration_t (200 , 0 ))
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
+ for (auto sample : data)
3471
+ {
3472
+ // A value of true means that the sample was sent successfully.
3473
+ // This aligns with the expected behaviour of having the history
3474
+ // acknowledged and emptied before the next message.
3475
+ EXPECT_TRUE (writer.send_sample (sample));
3476
+ }
3477
+ }
3478
+
3439
3479
/* !
3440
3480
* Test that checks with a writer of each type that having the same listener attached, the notified writer in the
3441
3481
* callback is the corresponding writer that has removed a sample unacknowledged.
0 commit comments