aboutsummaryrefslogtreecommitdiff
path: root/net/dcsctp/tx/outstanding_data_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/dcsctp/tx/outstanding_data_test.cc')
-rw-r--r--net/dcsctp/tx/outstanding_data_test.cc210
1 files changed, 93 insertions, 117 deletions
diff --git a/net/dcsctp/tx/outstanding_data_test.cc b/net/dcsctp/tx/outstanding_data_test.cc
index 3bb82fd3e6..33fc51acf1 100644
--- a/net/dcsctp/tx/outstanding_data_test.cc
+++ b/net/dcsctp/tx/outstanding_data_test.cc
@@ -12,10 +12,12 @@
#include <vector>
#include "absl/types/optional.h"
+#include "net/dcsctp/common/internal_types.h"
#include "net/dcsctp/common/math.h"
#include "net/dcsctp/common/sequence_numbers.h"
#include "net/dcsctp/packet/chunk/data_chunk.h"
#include "net/dcsctp/packet/chunk/forward_tsn_chunk.h"
+#include "net/dcsctp/public/dcsctp_socket.h"
#include "net/dcsctp/public/types.h"
#include "net/dcsctp/testing/data_generator.h"
#include "net/dcsctp/testing/testing_macros.h"
@@ -35,8 +37,11 @@ using ::testing::Property;
using ::testing::Return;
using ::testing::StrictMock;
using ::testing::UnorderedElementsAre;
+using ::webrtc::TimeDelta;
+using ::webrtc::Timestamp;
-constexpr TimeMs kNow(42);
+constexpr Timestamp kNow = Timestamp::Millis(42);
+constexpr OutgoingMessageId kMessageId = OutgoingMessageId(17);
class OutstandingDataTest : public testing::Test {
protected:
@@ -49,7 +54,7 @@ class OutstandingDataTest : public testing::Test {
UnwrappedTSN::Unwrapper unwrapper_;
DataGenerator gen_;
- StrictMock<MockFunction<bool(IsUnordered, StreamID, MID)>> on_discard_;
+ StrictMock<MockFunction<bool(StreamID, OutgoingMessageId)>> on_discard_;
OutstandingData buf_;
};
@@ -67,8 +72,8 @@ TEST_F(OutstandingDataTest, HasInitialState) {
}
TEST_F(OutstandingDataTest, InsertChunk) {
- ASSERT_HAS_VALUE_AND_ASSIGN(UnwrappedTSN tsn,
- buf_.Insert(gen_.Ordered({1}, "BE"), kNow));
+ ASSERT_HAS_VALUE_AND_ASSIGN(
+ UnwrappedTSN tsn, buf_.Insert(kMessageId, gen_.Ordered({1}, "BE"), kNow));
EXPECT_EQ(tsn.Wrap(), TSN(10));
@@ -84,7 +89,7 @@ TEST_F(OutstandingDataTest, InsertChunk) {
}
TEST_F(OutstandingDataTest, AcksSingleChunk) {
- buf_.Insert(gen_.Ordered({1}, "BE"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "BE"), kNow);
OutstandingData::AckInfo ack =
buf_.HandleSack(unwrapper_.Unwrap(TSN(10)), {}, false);
@@ -103,7 +108,7 @@ TEST_F(OutstandingDataTest, AcksSingleChunk) {
}
TEST_F(OutstandingDataTest, AcksPreviousChunkDoesntUpdate) {
- buf_.Insert(gen_.Ordered({1}, "BE"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "BE"), kNow);
buf_.HandleSack(unwrapper_.Unwrap(TSN(9)), {}, false);
EXPECT_EQ(buf_.outstanding_bytes(), DataChunk::kHeaderSize + RoundUpTo4(1));
@@ -118,8 +123,8 @@ TEST_F(OutstandingDataTest, AcksPreviousChunkDoesntUpdate) {
}
TEST_F(OutstandingDataTest, AcksAndNacksWithGapAckBlocks) {
- buf_.Insert(gen_.Ordered({1}, "B"), kNow);
- buf_.Insert(gen_.Ordered({1}, "E"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "B"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "E"), kNow);
std::vector<SackChunk::GapAckBlock> gab = {SackChunk::GapAckBlock(2, 2)};
OutstandingData::AckInfo ack =
@@ -141,8 +146,8 @@ TEST_F(OutstandingDataTest, AcksAndNacksWithGapAckBlocks) {
}
TEST_F(OutstandingDataTest, NacksThreeTimesWithSameTsnDoesntRetransmit) {
- buf_.Insert(gen_.Ordered({1}, "B"), kNow);
- buf_.Insert(gen_.Ordered({1}, "E"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "B"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "E"), kNow);
std::vector<SackChunk::GapAckBlock> gab1 = {SackChunk::GapAckBlock(2, 2)};
EXPECT_FALSE(
@@ -164,10 +169,10 @@ TEST_F(OutstandingDataTest, NacksThreeTimesWithSameTsnDoesntRetransmit) {
}
TEST_F(OutstandingDataTest, NacksThreeTimesResultsInRetransmission) {
- buf_.Insert(gen_.Ordered({1}, "B"), kNow);
- buf_.Insert(gen_.Ordered({1}, ""), kNow);
- buf_.Insert(gen_.Ordered({1}, ""), kNow);
- buf_.Insert(gen_.Ordered({1}, "E"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "B"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "E"), kNow);
std::vector<SackChunk::GapAckBlock> gab1 = {SackChunk::GapAckBlock(2, 2)};
EXPECT_FALSE(
@@ -202,10 +207,10 @@ TEST_F(OutstandingDataTest, NacksThreeTimesResultsInRetransmission) {
TEST_F(OutstandingDataTest, NacksThreeTimesResultsInAbandoning) {
static constexpr MaxRetransmits kMaxRetransmissions(0);
- buf_.Insert(gen_.Ordered({1}, "B"), kNow, kMaxRetransmissions);
- buf_.Insert(gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
- buf_.Insert(gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
- buf_.Insert(gen_.Ordered({1}, "E"), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "B"), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "E"), kNow, kMaxRetransmissions);
std::vector<SackChunk::GapAckBlock> gab1 = {SackChunk::GapAckBlock(2, 2)};
EXPECT_FALSE(
@@ -217,7 +222,7 @@ TEST_F(OutstandingDataTest, NacksThreeTimesResultsInAbandoning) {
buf_.HandleSack(unwrapper_.Unwrap(TSN(9)), gab2, false).has_packet_loss);
EXPECT_FALSE(buf_.has_data_to_be_retransmitted());
- EXPECT_CALL(on_discard_, Call(IsUnordered(false), StreamID(1), MID(42)))
+ EXPECT_CALL(on_discard_, Call(StreamID(1), kMessageId))
.WillOnce(Return(false));
std::vector<SackChunk::GapAckBlock> gab3 = {SackChunk::GapAckBlock(2, 4)};
OutstandingData::AckInfo ack =
@@ -238,10 +243,10 @@ TEST_F(OutstandingDataTest, NacksThreeTimesResultsInAbandoning) {
TEST_F(OutstandingDataTest, NacksThreeTimesResultsInAbandoningWithPlaceholder) {
static constexpr MaxRetransmits kMaxRetransmissions(0);
- buf_.Insert(gen_.Ordered({1}, "B"), kNow, kMaxRetransmissions);
- buf_.Insert(gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
- buf_.Insert(gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
- buf_.Insert(gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "B"), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
std::vector<SackChunk::GapAckBlock> gab1 = {SackChunk::GapAckBlock(2, 2)};
EXPECT_FALSE(
@@ -253,7 +258,7 @@ TEST_F(OutstandingDataTest, NacksThreeTimesResultsInAbandoningWithPlaceholder) {
buf_.HandleSack(unwrapper_.Unwrap(TSN(9)), gab2, false).has_packet_loss);
EXPECT_FALSE(buf_.has_data_to_be_retransmitted());
- EXPECT_CALL(on_discard_, Call(IsUnordered(false), StreamID(1), MID(42)))
+ EXPECT_CALL(on_discard_, Call(StreamID(1), kMessageId))
.WillOnce(Return(true));
std::vector<SackChunk::GapAckBlock> gab3 = {SackChunk::GapAckBlock(2, 4)};
OutstandingData::AckInfo ack =
@@ -274,17 +279,19 @@ TEST_F(OutstandingDataTest, NacksThreeTimesResultsInAbandoningWithPlaceholder) {
}
TEST_F(OutstandingDataTest, ExpiresChunkBeforeItIsInserted) {
- static constexpr TimeMs kExpiresAt = kNow + DurationMs(1);
- EXPECT_TRUE(buf_.Insert(gen_.Ordered({1}, "B"), kNow,
+ static constexpr Timestamp kExpiresAt = kNow + TimeDelta::Millis(1);
+ EXPECT_TRUE(buf_.Insert(kMessageId, gen_.Ordered({1}, "B"), kNow,
MaxRetransmits::NoLimit(), kExpiresAt)
.has_value());
- EXPECT_TRUE(buf_.Insert(gen_.Ordered({1}, ""), kNow + DurationMs(0),
+ EXPECT_TRUE(buf_.Insert(kMessageId, gen_.Ordered({1}, ""),
+ kNow + TimeDelta::Millis(0),
MaxRetransmits::NoLimit(), kExpiresAt)
.has_value());
- EXPECT_CALL(on_discard_, Call(IsUnordered(false), StreamID(1), MID(42)))
+ EXPECT_CALL(on_discard_, Call(StreamID(1), kMessageId))
.WillOnce(Return(false));
- EXPECT_FALSE(buf_.Insert(gen_.Ordered({1}, "E"), kNow + DurationMs(1),
+ EXPECT_FALSE(buf_.Insert(kMessageId, gen_.Ordered({1}, "E"),
+ kNow + TimeDelta::Millis(1),
MaxRetransmits::NoLimit(), kExpiresAt)
.has_value());
@@ -301,11 +308,11 @@ TEST_F(OutstandingDataTest, ExpiresChunkBeforeItIsInserted) {
TEST_F(OutstandingDataTest, CanGenerateForwardTsn) {
static constexpr MaxRetransmits kMaxRetransmissions(0);
- buf_.Insert(gen_.Ordered({1}, "B"), kNow, kMaxRetransmissions);
- buf_.Insert(gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
- buf_.Insert(gen_.Ordered({1}, "E"), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "B"), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow, kMaxRetransmissions);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "E"), kNow, kMaxRetransmissions);
- EXPECT_CALL(on_discard_, Call(IsUnordered(false), StreamID(1), MID(42)))
+ EXPECT_CALL(on_discard_, Call(StreamID(1), kMessageId))
.WillOnce(Return(false));
buf_.NackAll();
@@ -322,14 +329,14 @@ TEST_F(OutstandingDataTest, CanGenerateForwardTsn) {
}
TEST_F(OutstandingDataTest, AckWithGapBlocksFromRFC4960Section334) {
- buf_.Insert(gen_.Ordered({1}, "B"), kNow);
- buf_.Insert(gen_.Ordered({1}, ""), kNow);
- buf_.Insert(gen_.Ordered({1}, ""), kNow);
- buf_.Insert(gen_.Ordered({1}, ""), kNow);
- buf_.Insert(gen_.Ordered({1}, ""), kNow);
- buf_.Insert(gen_.Ordered({1}, ""), kNow);
- buf_.Insert(gen_.Ordered({1}, ""), kNow);
- buf_.Insert(gen_.Ordered({1}, "E"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "B"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "E"), kNow);
EXPECT_THAT(buf_.GetChunkStatesForTesting(),
testing::ElementsAre(Pair(TSN(9), State::kAcked), //
@@ -356,16 +363,15 @@ TEST_F(OutstandingDataTest, AckWithGapBlocksFromRFC4960Section334) {
}
TEST_F(OutstandingDataTest, MeasureRTT) {
- buf_.Insert(gen_.Ordered({1}, "BE"), kNow);
- buf_.Insert(gen_.Ordered({1}, "BE"), kNow + DurationMs(1));
- buf_.Insert(gen_.Ordered({1}, "BE"), kNow + DurationMs(2));
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "BE"), kNow);
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "BE"), kNow + TimeDelta::Millis(1));
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "BE"), kNow + TimeDelta::Millis(2));
- static constexpr DurationMs kDuration(123);
- ASSERT_HAS_VALUE_AND_ASSIGN(
- DurationMs duration,
- buf_.MeasureRTT(kNow + kDuration, unwrapper_.Unwrap(TSN(11))));
+ static constexpr TimeDelta kDuration = TimeDelta::Millis(123);
+ TimeDelta duration =
+ buf_.MeasureRTT(kNow + kDuration, unwrapper_.Unwrap(TSN(11)));
- EXPECT_EQ(duration, kDuration - DurationMs(1));
+ EXPECT_EQ(duration, kDuration - TimeDelta::Millis(1));
}
TEST_F(OutstandingDataTest, MustRetransmitBeforeGettingNackedAgain) {
@@ -375,7 +381,8 @@ TEST_F(OutstandingDataTest, MustRetransmitBeforeGettingNackedAgain) {
static constexpr MaxRetransmits kOneRetransmission(1);
for (int tsn = 10; tsn <= 20; ++tsn) {
- buf_.Insert(gen_.Ordered({1}, tsn == 10 ? "B"
+ buf_.Insert(kMessageId,
+ gen_.Ordered({1}, tsn == 10 ? "B"
: tsn == 20 ? "E"
: ""),
kNow, kOneRetransmission);
@@ -434,7 +441,7 @@ TEST_F(OutstandingDataTest, MustRetransmitBeforeGettingNackedAgain) {
buf_.HandleSack(unwrapper_.Unwrap(TSN(9)), gab8, false).has_packet_loss);
EXPECT_FALSE(buf_.has_data_to_be_retransmitted());
- EXPECT_CALL(on_discard_, Call(IsUnordered(false), StreamID(1), MID(42)))
+ EXPECT_CALL(on_discard_, Call(StreamID(1), kMessageId))
.WillOnce(Return(false));
std::vector<SackChunk::GapAckBlock> gab9 = {SackChunk::GapAckBlock(2, 10)};
@@ -445,54 +452,16 @@ TEST_F(OutstandingDataTest, MustRetransmitBeforeGettingNackedAgain) {
EXPECT_FALSE(buf_.has_data_to_be_retransmitted());
}
-TEST_F(OutstandingDataTest, CanAbandonChunksMarkedForFastRetransmit) {
- // This test is a bit convoluted, and can't really happen with a well behaving
- // client, but this was found by fuzzers. This test will verify that a message
- // that was both marked as "to be fast retransmitted" and "abandoned" at the
- // same time doesn't cause any consistency issues.
-
- // Add chunks 10-14, but chunk 11 has zero retransmissions. When chunk 10 and
- // 11 are NACKed three times, chunk 10 will be marked for retransmission, but
- // chunk 11 will be abandoned, which also abandons chunk 10, as it's part of
- // the same message.
- buf_.Insert(gen_.Ordered({1}, "B"), kNow); // 10
- buf_.Insert(gen_.Ordered({1}, ""), kNow, MaxRetransmits(0)); // 11
- buf_.Insert(gen_.Ordered({1}, ""), kNow); // 12
- buf_.Insert(gen_.Ordered({1}, ""), kNow); // 13
- buf_.Insert(gen_.Ordered({1}, "E"), kNow); // 14
-
- // ACK 9, 12
- std::vector<SackChunk::GapAckBlock> gab1 = {SackChunk::GapAckBlock(3, 3)};
- EXPECT_FALSE(
- buf_.HandleSack(unwrapper_.Unwrap(TSN(9)), gab1, false).has_packet_loss);
- EXPECT_FALSE(buf_.has_data_to_be_retransmitted());
-
- // ACK 9, 12, 13
- std::vector<SackChunk::GapAckBlock> gab2 = {SackChunk::GapAckBlock(3, 4)};
- EXPECT_FALSE(
- buf_.HandleSack(unwrapper_.Unwrap(TSN(9)), gab2, false).has_packet_loss);
- EXPECT_FALSE(buf_.has_data_to_be_retransmitted());
-
- EXPECT_CALL(on_discard_, Call(IsUnordered(false), StreamID(1), MID(42)))
- .WillOnce(Return(false));
-
- // ACK 9, 12, 13, 14
- std::vector<SackChunk::GapAckBlock> gab3 = {SackChunk::GapAckBlock(3, 5)};
- OutstandingData::AckInfo ack =
- buf_.HandleSack(unwrapper_.Unwrap(TSN(9)), gab3, false);
- EXPECT_TRUE(ack.has_packet_loss);
- EXPECT_FALSE(buf_.has_data_to_be_retransmitted());
- EXPECT_THAT(buf_.GetChunksToBeFastRetransmitted(1000), IsEmpty());
- EXPECT_THAT(buf_.GetChunksToBeRetransmitted(1000), IsEmpty());
-}
-
TEST_F(OutstandingDataTest, LifecyleReturnsAckedItemsInAckInfo) {
- buf_.Insert(gen_.Ordered({1}, "BE"), kNow, MaxRetransmits::NoLimit(),
- TimeMs::InfiniteFuture(), LifecycleId(42));
- buf_.Insert(gen_.Ordered({1}, "BE"), kNow, MaxRetransmits::NoLimit(),
- TimeMs::InfiniteFuture(), LifecycleId(43));
- buf_.Insert(gen_.Ordered({1}, "BE"), kNow, MaxRetransmits::NoLimit(),
- TimeMs::InfiniteFuture(), LifecycleId(44));
+ buf_.Insert(OutgoingMessageId(1), gen_.Ordered({1}, "BE"), kNow,
+ MaxRetransmits::NoLimit(), Timestamp::PlusInfinity(),
+ LifecycleId(42));
+ buf_.Insert(OutgoingMessageId(2), gen_.Ordered({1}, "BE"), kNow,
+ MaxRetransmits::NoLimit(), Timestamp::PlusInfinity(),
+ LifecycleId(43));
+ buf_.Insert(OutgoingMessageId(3), gen_.Ordered({1}, "BE"), kNow,
+ MaxRetransmits::NoLimit(), Timestamp::PlusInfinity(),
+ LifecycleId(44));
OutstandingData::AckInfo ack1 =
buf_.HandleSack(unwrapper_.Unwrap(TSN(11)), {}, false);
@@ -507,11 +476,11 @@ TEST_F(OutstandingDataTest, LifecyleReturnsAckedItemsInAckInfo) {
}
TEST_F(OutstandingDataTest, LifecycleReturnsAbandonedNackedThreeTimes) {
- buf_.Insert(gen_.Ordered({1}, "B"), kNow, MaxRetransmits(0));
- buf_.Insert(gen_.Ordered({1}, ""), kNow, MaxRetransmits(0));
- buf_.Insert(gen_.Ordered({1}, ""), kNow, MaxRetransmits(0));
- buf_.Insert(gen_.Ordered({1}, "E"), kNow, MaxRetransmits(0),
- TimeMs::InfiniteFuture(), LifecycleId(42));
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "B"), kNow, MaxRetransmits(0));
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow, MaxRetransmits(0));
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow, MaxRetransmits(0));
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "E"), kNow, MaxRetransmits(0),
+ Timestamp::PlusInfinity(), LifecycleId(42));
std::vector<SackChunk::GapAckBlock> gab1 = {SackChunk::GapAckBlock(2, 2)};
EXPECT_FALSE(
@@ -524,7 +493,7 @@ TEST_F(OutstandingDataTest, LifecycleReturnsAbandonedNackedThreeTimes) {
EXPECT_FALSE(buf_.has_data_to_be_retransmitted());
std::vector<SackChunk::GapAckBlock> gab3 = {SackChunk::GapAckBlock(2, 4)};
- EXPECT_CALL(on_discard_, Call(IsUnordered(false), StreamID(1), MID(42)))
+ EXPECT_CALL(on_discard_, Call(StreamID(1), kMessageId))
.WillOnce(Return(false));
OutstandingData::AckInfo ack1 =
buf_.HandleSack(unwrapper_.Unwrap(TSN(9)), gab3, false);
@@ -543,11 +512,11 @@ TEST_F(OutstandingDataTest, LifecycleReturnsAbandonedNackedThreeTimes) {
}
TEST_F(OutstandingDataTest, LifecycleReturnsAbandonedAfterT3rtxExpired) {
- buf_.Insert(gen_.Ordered({1}, "B"), kNow, MaxRetransmits(0));
- buf_.Insert(gen_.Ordered({1}, ""), kNow, MaxRetransmits(0));
- buf_.Insert(gen_.Ordered({1}, ""), kNow, MaxRetransmits(0));
- buf_.Insert(gen_.Ordered({1}, "E"), kNow, MaxRetransmits(0),
- TimeMs::InfiniteFuture(), LifecycleId(42));
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "B"), kNow, MaxRetransmits(0));
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow, MaxRetransmits(0));
+ buf_.Insert(kMessageId, gen_.Ordered({1}, ""), kNow, MaxRetransmits(0));
+ buf_.Insert(kMessageId, gen_.Ordered({1}, "E"), kNow, MaxRetransmits(0),
+ Timestamp::PlusInfinity(), LifecycleId(42));
EXPECT_THAT(buf_.GetChunkStatesForTesting(),
testing::ElementsAre(Pair(TSN(9), State::kAcked), //
@@ -569,7 +538,7 @@ TEST_F(OutstandingDataTest, LifecycleReturnsAbandonedAfterT3rtxExpired) {
Pair(TSN(13), State::kAcked)));
// T3-rtx triggered.
- EXPECT_CALL(on_discard_, Call(IsUnordered(false), StreamID(1), MID(42)))
+ EXPECT_CALL(on_discard_, Call(StreamID(1), kMessageId))
.WillOnce(Return(false));
buf_.NackAll();
@@ -609,24 +578,31 @@ TEST_F(OutstandingDataTest, GeneratesForwardTsnUntilNextStreamResetTsn) {
constexpr DataGeneratorOptions kStream1 = {.stream_id = StreamID(1)};
constexpr DataGeneratorOptions kStream2 = {.stream_id = StreamID(2)};
constexpr DataGeneratorOptions kStream3 = {.stream_id = StreamID(3)};
+ constexpr MaxRetransmits kNoRtx = MaxRetransmits(0);
EXPECT_CALL(on_discard_, Call).WillRepeatedly(Return(false));
// TSN 10-12
- buf_.Insert(gen_.Ordered({1}, "BE", kStream1), kNow);
- buf_.Insert(gen_.Ordered({1}, "BE", kStream1), kNow);
- buf_.Insert(gen_.Ordered({1}, "BE", kStream1), kNow, MaxRetransmits(0));
+ buf_.Insert(OutgoingMessageId(0), gen_.Ordered({1}, "BE", kStream1), kNow,
+ kNoRtx);
+ buf_.Insert(OutgoingMessageId(1), gen_.Ordered({1}, "BE", kStream1), kNow,
+ kNoRtx);
+ buf_.Insert(OutgoingMessageId(2), gen_.Ordered({1}, "BE", kStream1), kNow,
+ kNoRtx);
buf_.BeginResetStreams();
// TSN 13, 14
- buf_.Insert(gen_.Ordered({1}, "BE", kStream2), kNow, MaxRetransmits(0));
- buf_.Insert(gen_.Ordered({1}, "BE", kStream2), kNow, MaxRetransmits(0));
+ buf_.Insert(OutgoingMessageId(3), gen_.Ordered({1}, "BE", kStream2), kNow,
+ kNoRtx);
+ buf_.Insert(OutgoingMessageId(4), gen_.Ordered({1}, "BE", kStream2), kNow,
+ kNoRtx);
buf_.BeginResetStreams();
// TSN 15, 16
- buf_.Insert(gen_.Ordered({1}, "BE", kStream3), kNow, MaxRetransmits(0));
- buf_.Insert(gen_.Ordered({1}, "BE", kStream3), kNow);
+ buf_.Insert(OutgoingMessageId(5), gen_.Ordered({1}, "BE", kStream3), kNow,
+ kNoRtx);
+ buf_.Insert(OutgoingMessageId(6), gen_.Ordered({1}, "BE", kStream3), kNow);
EXPECT_FALSE(buf_.ShouldSendForwardTsn());