Skip to content

Commit

Permalink
Refs #20866. Fix unit tests.
Browse files Browse the repository at this point in the history
Signed-off-by: Miguel Company <miguelcompany@eprosima.com>
  • Loading branch information
MiguelCompany committed Sep 3, 2024
1 parent ac54175 commit 21fa2d8
Showing 1 changed file with 46 additions and 81 deletions.
127 changes: 46 additions & 81 deletions test/unittest/dds/subscriber/DataReaderHistoryTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,23 @@ class TestType : public TopicDataType
(override));
};

bool add_test_change(
eprosima::fastdds::dds::detail::DataReaderHistory& history,
eprosima::fastdds::rtps::CacheChange_t& change,
std::vector<std::unique_ptr<eprosima::fastdds::rtps::CacheChange_t>>& test_changes)
{
++change.sequenceNumber;
eprosima::fastdds::rtps::Time_t::now(change.sourceTimestamp);
eprosima::fastdds::rtps::CacheChange_t* new_change = new eprosima::fastdds::rtps::CacheChange_t();
new_change->copy(&change);
new_change->reader_info.writer_ownership_strength = change.reader_info.writer_ownership_strength;

EXPECT_TRUE(history.received_change(new_change, 0));
bool ret = history.update_instance_nts(new_change);
test_changes.push_back(std::unique_ptr<eprosima::fastdds::rtps::CacheChange_t>(new_change));
return ret;
}

/*!
* \test DDS-OWN-HIST-01 Tests `DataReaderInstance` handles successfully the reception of Non-Keyed samples with
* different Ownership's strength.
Expand All @@ -65,6 +82,7 @@ TEST(DataReaderHistory, exclusive_ownership_non_keyed_sample_reception)
DataReaderHistory history(type, topic, qos);
eprosima::fastdds::RecursiveTimedMutex mutex;
eprosima::fastdds::rtps::StatelessReader reader(&history, &mutex);
std::vector<std::unique_ptr<eprosima::fastdds::rtps::CacheChange_t>> changes;

eprosima::fastdds::rtps::CacheChange_t dw1_change;
dw1_change.writerGUID = {{}, 1};
Expand All @@ -77,50 +95,32 @@ TEST(DataReaderHistory, exclusive_ownership_non_keyed_sample_reception)
dw3_change.reader_info.writer_ownership_strength = 3;

// Receives a sample with seq 1 from DW1 and update instance with strength 1.
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw1_change));
ASSERT_TRUE(add_test_change(history, dw1_change, changes));

// Receives a sample with seq 1 from DW2 and update instance with strength 2.
++dw2_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw2_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw2_change));
ASSERT_TRUE(add_test_change(history, dw2_change, changes));

// Receives a sample with seq 2 from DW1 and update instance with strength 1.
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw1_change));
ASSERT_FALSE(add_test_change(history, dw1_change, changes));

// Receives a sample with seq 2 from DW2 and update instance with strength 2.
++dw2_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw2_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw2_change));
ASSERT_TRUE(add_test_change(history, dw2_change, changes));

// Receives a sample with seq 1 from DW3 and update instance with strength 3.
++dw3_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw3_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw3_change));
ASSERT_TRUE(add_test_change(history, dw3_change, changes));

// Receives a sample with seq 3 from DW1 and update instance with strength 1.
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw1_change));
ASSERT_FALSE(add_test_change(history, dw1_change, changes));

// Receives a sample with seq 3 from DW2 and update instance with strength 2.
++dw2_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw2_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw2_change));
ASSERT_FALSE(add_test_change(history, dw2_change, changes));

// Receives a sample with seq 2 from DW3 and update instance with strength 1.
++dw3_change.sequenceNumber;
dw3_change.reader_info.writer_ownership_strength = 1;
ASSERT_TRUE(history.received_change(&dw3_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw3_change));
ASSERT_TRUE(add_test_change(history, dw3_change, changes));

// Receives a sample with seq 4 from DW2 and update instance with strength 2.
++dw2_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw2_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw2_change));
ASSERT_TRUE(add_test_change(history, dw2_change, changes));

ASSERT_EQ(9u, history.getHistorySize());
}
Expand All @@ -142,6 +142,7 @@ TEST(DataReaderHistory, exclusive_ownership_keyed_sample_reception)
DataReaderHistory history(type, topic, qos);
eprosima::fastdds::RecursiveTimedMutex mutex;
eprosima::fastdds::rtps::StatelessReader reader(&history, &mutex);
std::vector<std::unique_ptr<eprosima::fastdds::rtps::CacheChange_t>> changes;

const InstanceHandle_t instance_1 = eprosima::fastdds::rtps::GUID_t{{}, 1};
const InstanceHandle_t instance_2 = eprosima::fastdds::rtps::GUID_t{{}, 2};
Expand All @@ -158,112 +159,76 @@ TEST(DataReaderHistory, exclusive_ownership_keyed_sample_reception)

// Receives instance 1 with seq 1 from DW1 and update instance with strength 1.
dw1_change.instanceHandle = instance_1;
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw1_change));
ASSERT_TRUE(add_test_change(history, dw1_change, changes));

// Receives instance 2 with seq 2 from DW1 and update instance with strength 1.
dw1_change.instanceHandle = instance_2;
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw1_change));
ASSERT_TRUE(add_test_change(history, dw1_change, changes));

// Receives instance 1 with seq 1 from DW2 and update instance with strength 2.
dw2_change.instanceHandle = instance_1;
++dw2_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw2_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw2_change));
ASSERT_TRUE(add_test_change(history, dw2_change, changes));

// Receives instance 1 with seq 3 from DW1 and update instance with strength 1.
dw1_change.instanceHandle = instance_1;
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw1_change));
ASSERT_FALSE(add_test_change(history, dw1_change, changes));

// Receives instance 2 with seq 4 from DW1 and update instance with strength 1.
dw1_change.instanceHandle = instance_2;
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw1_change));
ASSERT_TRUE(add_test_change(history, dw1_change, changes));

// Receives instance 2 with seq 1 from DW3 and update instance with strength 3.
dw3_change.instanceHandle = instance_2;
++dw3_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw3_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw3_change));
ASSERT_TRUE(add_test_change(history, dw3_change, changes));

// Receives instance 1 with seq 5 from DW1 and update instance with strength 1.
dw1_change.instanceHandle = instance_1;
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw1_change));
ASSERT_FALSE(add_test_change(history, dw1_change, changes));

// Receives instance 2 with seq 6 from DW1 and update instance with strength 1.
dw1_change.instanceHandle = instance_2;
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw1_change));
ASSERT_FALSE(add_test_change(history, dw1_change, changes));

// Receives instance 3 with seq 2 from DW3 and update instance with strength 3.
dw3_change.instanceHandle = instance_3;
++dw3_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw3_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw3_change));
ASSERT_TRUE(add_test_change(history, dw3_change, changes));

// Receives instance 3 with seq 2 from DW2 and update instance with strength 2.
dw2_change.instanceHandle = instance_3;
++dw2_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw2_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw2_change));
ASSERT_FALSE(add_test_change(history, dw2_change, changes));

// Receives instance 3 with seq 3 from DW3 and update instance with strength 1.
dw3_change.instanceHandle = instance_3;
dw3_change.reader_info.writer_ownership_strength = 1;
++dw3_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw3_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw3_change));
ASSERT_TRUE(add_test_change(history, dw3_change, changes));

// Receives instance 3 with seq 3 from DW2 and update instance with strength 2.
dw2_change.instanceHandle = instance_3;
++dw2_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw2_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw2_change));
ASSERT_TRUE(add_test_change(history, dw2_change, changes));

// Receives instance 1 with seq 7 from DW1 and update instance with strength 1.
dw1_change.instanceHandle = instance_1;
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw1_change));
ASSERT_FALSE(add_test_change(history, dw1_change, changes));

// Receives instance 2 with seq 8 from DW1 and update instance with strength 1.
dw1_change.instanceHandle = instance_2;
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw1_change));
ASSERT_FALSE(add_test_change(history, dw1_change, changes));

// Receives instance 3 with seq 9 from DW1 and update instance with strength 1.
dw1_change.instanceHandle = instance_3;
++dw1_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw1_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw1_change));
ASSERT_FALSE(add_test_change(history, dw1_change, changes));

// Receives instance 1 with seq 4 from DW2 and update instance with strength 2.
dw2_change.instanceHandle = instance_1;
++dw2_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw2_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw2_change));
ASSERT_TRUE(add_test_change(history, dw2_change, changes));

// Receives instance 2 with seq 5 from DW2 and update instance with strength 2.
dw2_change.instanceHandle = instance_2;
++dw2_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw2_change, 0));
ASSERT_FALSE(history.update_instance_nts(&dw2_change));
ASSERT_FALSE(add_test_change(history, dw2_change, changes));

// Receives instance 3 with seq 6 from DW2 and update instance with strength 2.
dw2_change.instanceHandle = instance_3;
++dw2_change.sequenceNumber;
ASSERT_TRUE(history.received_change(&dw2_change, 0));
ASSERT_TRUE(history.update_instance_nts(&dw2_change));
ASSERT_TRUE(add_test_change(history, dw2_change, changes));

ASSERT_EQ(18u, history.getHistorySize());
}
Expand Down

0 comments on commit 21fa2d8

Please sign in to comment.