diff options
Diffstat (limited to 'net/dcsctp/tx/rr_send_queue_test.cc')
-rw-r--r-- | net/dcsctp/tx/rr_send_queue_test.cc | 57 |
1 files changed, 42 insertions, 15 deletions
diff --git a/net/dcsctp/tx/rr_send_queue_test.cc b/net/dcsctp/tx/rr_send_queue_test.cc index 95416b193a..632cd8fc19 100644 --- a/net/dcsctp/tx/rr_send_queue_test.cc +++ b/net/dcsctp/tx/rr_send_queue_test.cc @@ -13,6 +13,7 @@ #include <type_traits> #include <vector> +#include "net/dcsctp/common/internal_types.h" #include "net/dcsctp/packet/data.h" #include "net/dcsctp/public/dcsctp_message.h" #include "net/dcsctp/public/dcsctp_options.h" @@ -28,8 +29,10 @@ namespace dcsctp { namespace { using ::testing::SizeIs; using ::testing::UnorderedElementsAre; +using ::webrtc::TimeDelta; +using ::webrtc::Timestamp; -constexpr TimeMs kNow = TimeMs(0); +constexpr Timestamp kNow = Timestamp::Zero(); constexpr StreamID kStreamID(1); constexpr PPID kPPID(53); constexpr size_t kMaxQueueSize = 1000; @@ -180,9 +183,9 @@ TEST_F(RRSendQueueTest, ProduceWithLifetimeExpiry) { std::vector<uint8_t> payload(20); // Default is no expiry - TimeMs now = kNow; + Timestamp now = kNow; buf_.Add(now, DcSctpMessage(kStreamID, kPPID, payload)); - now += DurationMs(1000000); + now += TimeDelta::Seconds(1000); ASSERT_TRUE(buf_.Produce(now, kOneFragmentPacketSize)); SendOptions expires_2_seconds; @@ -190,17 +193,17 @@ TEST_F(RRSendQueueTest, ProduceWithLifetimeExpiry) { // Add and consume within lifetime buf_.Add(now, DcSctpMessage(kStreamID, kPPID, payload), expires_2_seconds); - now += DurationMs(2000); + now += TimeDelta::Millis(2000); ASSERT_TRUE(buf_.Produce(now, kOneFragmentPacketSize)); // Add and consume just outside lifetime buf_.Add(now, DcSctpMessage(kStreamID, kPPID, payload), expires_2_seconds); - now += DurationMs(2001); + now += TimeDelta::Millis(2001); ASSERT_FALSE(buf_.Produce(now, kOneFragmentPacketSize)); // A long time after expiry buf_.Add(now, DcSctpMessage(kStreamID, kPPID, payload), expires_2_seconds); - now += DurationMs(1000000); + now += TimeDelta::Seconds(1000); ASSERT_FALSE(buf_.Produce(now, kOneFragmentPacketSize)); // Expire one message, but produce the second that is not expired. @@ -210,7 +213,7 @@ TEST_F(RRSendQueueTest, ProduceWithLifetimeExpiry) { expires_4_seconds.lifetime = DurationMs(4000); buf_.Add(now, DcSctpMessage(kStreamID, kPPID, payload), expires_4_seconds); - now += DurationMs(2001); + now += TimeDelta::Millis(2001); ASSERT_TRUE(buf_.Produce(now, kOneFragmentPacketSize)); ASSERT_FALSE(buf_.Produce(now, kOneFragmentPacketSize)); @@ -227,8 +230,7 @@ TEST_F(RRSendQueueTest, DiscardPartialPackets) { ASSERT_TRUE(chunk_one.has_value()); EXPECT_FALSE(chunk_one->data.is_end); EXPECT_EQ(chunk_one->data.stream_id, kStreamID); - buf_.Discard(IsUnordered(false), chunk_one->data.stream_id, - chunk_one->data.message_id); + buf_.Discard(chunk_one->data.stream_id, chunk_one->message_id); absl::optional<SendQueue::DataToSend> chunk_two = buf_.Produce(kNow, kOneFragmentPacketSize); @@ -244,8 +246,7 @@ TEST_F(RRSendQueueTest, DiscardPartialPackets) { ASSERT_FALSE(buf_.Produce(kNow, kOneFragmentPacketSize)); // Calling it again shouldn't cause issues. - buf_.Discard(IsUnordered(false), chunk_one->data.stream_id, - chunk_one->data.message_id); + buf_.Discard(chunk_one->data.stream_id, chunk_one->message_id); ASSERT_FALSE(buf_.Produce(kNow, kOneFragmentPacketSize)); } @@ -366,6 +367,32 @@ TEST_F(RRSendQueueTest, CommittingResetsSSN) { EXPECT_EQ(chunk_three->data.ssn, SSN(0)); } +TEST_F(RRSendQueueTest, CommittingDoesNotResetMessageId) { + std::vector<uint8_t> payload(50); + + buf_.Add(kNow, DcSctpMessage(kStreamID, kPPID, payload)); + ASSERT_HAS_VALUE_AND_ASSIGN(SendQueue::DataToSend chunk1, + buf_.Produce(kNow, kOneFragmentPacketSize)); + EXPECT_EQ(chunk1.data.ssn, SSN(0)); + EXPECT_EQ(chunk1.message_id, OutgoingMessageId(0)); + + buf_.Add(kNow, DcSctpMessage(kStreamID, kPPID, payload)); + ASSERT_HAS_VALUE_AND_ASSIGN(SendQueue::DataToSend chunk2, + buf_.Produce(kNow, kOneFragmentPacketSize)); + EXPECT_EQ(chunk2.data.ssn, SSN(1)); + EXPECT_EQ(chunk2.message_id, OutgoingMessageId(1)); + + buf_.PrepareResetStream(kStreamID); + EXPECT_THAT(buf_.GetStreamsReadyToBeReset(), UnorderedElementsAre(kStreamID)); + buf_.CommitResetStreams(); + + buf_.Add(kNow, DcSctpMessage(kStreamID, kPPID, payload)); + ASSERT_HAS_VALUE_AND_ASSIGN(SendQueue::DataToSend chunk3, + buf_.Produce(kNow, kOneFragmentPacketSize)); + EXPECT_EQ(chunk3.data.ssn, SSN(0)); + EXPECT_EQ(chunk3.message_id, OutgoingMessageId(2)); +} + TEST_F(RRSendQueueTest, CommittingResetsSSNForPausedStreamsOnly) { std::vector<uint8_t> payload(50); @@ -821,8 +848,9 @@ TEST_F(RRSendQueueTest, WillSendLifecycleExpireWhenExpiredInSendQueue) { EXPECT_CALL(callbacks_, OnLifecycleMessageExpired(LifecycleId(1), /*maybe_delivered=*/false)); EXPECT_CALL(callbacks_, OnLifecycleEnd(LifecycleId(1))); - EXPECT_FALSE(buf_.Produce(kNow + DurationMs(1001), kOneFragmentPacketSize) - .has_value()); + EXPECT_FALSE( + buf_.Produce(kNow + TimeDelta::Millis(1001), kOneFragmentPacketSize) + .has_value()); } TEST_F(RRSendQueueTest, WillSendLifecycleExpireWhenDiscardingDuringPause) { @@ -859,8 +887,7 @@ TEST_F(RRSendQueueTest, WillSendLifecycleExpireWhenDiscardingExplicitly) { EXPECT_CALL(callbacks_, OnLifecycleMessageExpired(LifecycleId(1), /*maybe_delivered=*/false)); EXPECT_CALL(callbacks_, OnLifecycleEnd(LifecycleId(1))); - buf_.Discard(IsUnordered(false), chunk_one->data.stream_id, - chunk_one->data.message_id); + buf_.Discard(chunk_one->data.stream_id, chunk_one->message_id); } } // namespace } // namespace dcsctp |