Deprecate -gfe2_reloadable_flag_quic_use_inlining_send_buffer_everywhere. This removes the old SendBuffer. Renaming the new buffer will happen in the follow-up CL. PiperOrigin-RevId: 892028122
diff --git a/build/source_list.bzl b/build/source_list.bzl index f6286ad..63110c2 100644 --- a/build/source_list.bzl +++ b/build/source_list.bzl
@@ -369,7 +369,6 @@ "quic/core/quic_stream_frame_data_producer.h", "quic/core/quic_stream_id_manager.h", "quic/core/quic_stream_priority.h", - "quic/core/quic_stream_send_buffer.h", "quic/core/quic_stream_send_buffer_base.h", "quic/core/quic_stream_send_buffer_inlining.h", "quic/core/quic_stream_sequencer.h", @@ -700,7 +699,6 @@ "quic/core/quic_stream.cc", "quic/core/quic_stream_id_manager.cc", "quic/core/quic_stream_priority.cc", - "quic/core/quic_stream_send_buffer.cc", "quic/core/quic_stream_send_buffer_base.cc", "quic/core/quic_stream_send_buffer_inlining.cc", "quic/core/quic_stream_sequencer.cc",
diff --git a/build/source_list.gni b/build/source_list.gni index f112266..3facd3d 100644 --- a/build/source_list.gni +++ b/build/source_list.gni
@@ -369,7 +369,6 @@ "src/quiche/quic/core/quic_stream_frame_data_producer.h", "src/quiche/quic/core/quic_stream_id_manager.h", "src/quiche/quic/core/quic_stream_priority.h", - "src/quiche/quic/core/quic_stream_send_buffer.h", "src/quiche/quic/core/quic_stream_send_buffer_base.h", "src/quiche/quic/core/quic_stream_send_buffer_inlining.h", "src/quiche/quic/core/quic_stream_sequencer.h", @@ -700,7 +699,6 @@ "src/quiche/quic/core/quic_stream.cc", "src/quiche/quic/core/quic_stream_id_manager.cc", "src/quiche/quic/core/quic_stream_priority.cc", - "src/quiche/quic/core/quic_stream_send_buffer.cc", "src/quiche/quic/core/quic_stream_send_buffer_base.cc", "src/quiche/quic/core/quic_stream_send_buffer_inlining.cc", "src/quiche/quic/core/quic_stream_sequencer.cc",
diff --git a/build/source_list.json b/build/source_list.json index 06bb7e5..c663b43 100644 --- a/build/source_list.json +++ b/build/source_list.json
@@ -368,7 +368,6 @@ "quiche/quic/core/quic_stream_frame_data_producer.h", "quiche/quic/core/quic_stream_id_manager.h", "quiche/quic/core/quic_stream_priority.h", - "quiche/quic/core/quic_stream_send_buffer.h", "quiche/quic/core/quic_stream_send_buffer_base.h", "quiche/quic/core/quic_stream_send_buffer_inlining.h", "quiche/quic/core/quic_stream_sequencer.h", @@ -699,7 +698,6 @@ "quiche/quic/core/quic_stream.cc", "quiche/quic/core/quic_stream_id_manager.cc", "quiche/quic/core/quic_stream_priority.cc", - "quiche/quic/core/quic_stream_send_buffer.cc", "quiche/quic/core/quic_stream_send_buffer_base.cc", "quiche/quic/core/quic_stream_send_buffer_inlining.cc", "quiche/quic/core/quic_stream_sequencer.cc",
diff --git a/quiche/common/quiche_feature_flags_list.h b/quiche/common/quiche_feature_flags_list.h index ea1687b..2297515 100755 --- a/quiche/common/quiche_feature_flags_list.h +++ b/quiche/common/quiche_feature_flags_list.h
@@ -66,7 +66,6 @@ QUICHE_FLAG(bool, quiche_reloadable_flag_quic_testonly_default_false, false, false, "A testonly reloadable flag that will always default to false.") QUICHE_FLAG(bool, quiche_reloadable_flag_quic_testonly_default_true, true, true, "A testonly reloadable flag that will always default to true.") QUICHE_FLAG(bool, quiche_reloadable_flag_quic_update_max_datagram, false, true, "If true, updates the maximum datagram size after flushing pending packets.") -QUICHE_FLAG(bool, quiche_reloadable_flag_quic_use_inlining_send_buffer_everywhere, true, true, "Use QuicStreamSendBufferInlining consistently everywhere in the codebase.") QUICHE_FLAG(bool, quiche_reloadable_flag_quic_use_proof_source_get_cert_chains, true, true, "When true, quic::TlsServerHandshaker will use ProofSource::GetCertChains() instead of ProofSource::GetCertChain()") QUICHE_FLAG(bool, quiche_reloadable_flag_quic_use_received_client_addresses_cache, true, true, "If true, use a LRU cache to record client addresses of packets received on server's original address.") QUICHE_FLAG(bool, quiche_restart_flag_quic_dispatcher_close_connection_on_invalid_ack, false, false, "An invalid ack is an ack that the peer sent for a packet that was not sent by the dispatcher. If true, the dispatcher will close the connection if it receives an invalid ack.")
diff --git a/quiche/quic/core/quic_buffered_packet_store.cc b/quiche/quic/core/quic_buffered_packet_store.cc index 45173d8..9dd6bf6 100644 --- a/quiche/quic/core/quic_buffered_packet_store.cc +++ b/quiche/quic/core/quic_buffered_packet_store.cc
@@ -27,7 +27,6 @@ #include "quiche/quic/core/quic_packet_creator.h" #include "quiche/quic/core/quic_packet_number.h" #include "quiche/quic/core/quic_packets.h" -#include "quiche/quic/core/quic_stream_send_buffer.h" #include "quiche/quic/core/quic_stream_send_buffer_inlining.h" #include "quiche/quic/core/quic_time.h" #include "quiche/quic/core/quic_types.h" @@ -626,12 +625,7 @@ static std::unique_ptr<QuicStreamSendBufferBase> CreateSendBuffer( quiche::QuicheBufferAllocator* allocator) { - if (GetQuicReloadableFlag(quic_use_inlining_send_buffer_everywhere)) { - QUIC_RELOADABLE_FLAG_COUNT_N(quic_use_inlining_send_buffer_everywhere, 2, - 2); - return std::make_unique<QuicStreamSendBufferInlining>(allocator); - } - return std::make_unique<QuicStreamSendBufferOld>(allocator); + return std::make_unique<QuicStreamSendBufferInlining>(allocator); } PacketCollector::PacketCollector(quiche::QuicheBufferAllocator* allocator)
diff --git a/quiche/quic/core/quic_buffered_packet_store.h b/quiche/quic/core/quic_buffered_packet_store.h index 6d0b403..aed8a42 100644 --- a/quiche/quic/core/quic_buffered_packet_store.h +++ b/quiche/quic/core/quic_buffered_packet_store.h
@@ -28,7 +28,6 @@ #include "quiche/quic/core/quic_packet_writer.h" #include "quiche/quic/core/quic_packets.h" #include "quiche/quic/core/quic_stream_frame_data_producer.h" -#include "quiche/quic/core/quic_stream_send_buffer.h" #include "quiche/quic/core/quic_stream_send_buffer_base.h" #include "quiche/quic/core/quic_time.h" #include "quiche/quic/core/quic_types.h"
diff --git a/quiche/quic/core/quic_crypto_stream.cc b/quiche/quic/core/quic_crypto_stream.cc index 895dab7..a9d433b 100644 --- a/quiche/quic/core/quic_crypto_stream.cc +++ b/quiche/quic/core/quic_crypto_stream.cc
@@ -18,7 +18,6 @@ #include "quiche/quic/core/quic_error_codes.h" #include "quiche/quic/core/quic_interval_set.h" #include "quiche/quic/core/quic_session.h" -#include "quiche/quic/core/quic_stream_send_buffer.h" #include "quiche/quic/core/quic_stream_send_buffer_base.h" #include "quiche/quic/core/quic_stream_send_buffer_inlining.h" #include "quiche/quic/core/quic_types.h" @@ -599,12 +598,7 @@ QuicSession* session) { quiche::QuicheBufferAllocator* allocator = session->connection()->helper()->GetStreamSendBufferAllocator(); - if (GetQuicReloadableFlag(quic_use_inlining_send_buffer_everywhere)) { - QUIC_RELOADABLE_FLAG_COUNT_N(quic_use_inlining_send_buffer_everywhere, 1, - 2); - return std::make_unique<QuicStreamSendBufferInlining>(allocator); - } - return std::make_unique<QuicStreamSendBufferOld>(allocator); + return std::make_unique<QuicStreamSendBufferInlining>(allocator); } QuicCryptoStream::CryptoSubstream::CryptoSubstream(
diff --git a/quiche/quic/core/quic_dispatcher.cc b/quiche/quic/core/quic_dispatcher.cc index acbda23..5105534 100644 --- a/quiche/quic/core/quic_dispatcher.cc +++ b/quiche/quic/core/quic_dispatcher.cc
@@ -50,7 +50,6 @@ #include "quiche/quic/core/quic_packets.h" #include "quiche/quic/core/quic_session.h" #include "quiche/quic/core/quic_stream_frame_data_producer.h" -#include "quiche/quic/core/quic_stream_send_buffer.h" #include "quiche/quic/core/quic_time.h" #include "quiche/quic/core/quic_time_wait_list_manager.h" #include "quiche/quic/core/quic_types.h"
diff --git a/quiche/quic/core/quic_stream.cc b/quiche/quic/core/quic_stream.cc index ecb7421..10308a2 100644 --- a/quiche/quic/core/quic_stream.cc +++ b/quiche/quic/core/quic_stream.cc
@@ -28,7 +28,6 @@ #include "quiche/quic/core/quic_interval_set.h" #include "quiche/quic/core/quic_session.h" #include "quiche/quic/core/quic_stream_priority.h" -#include "quiche/quic/core/quic_stream_send_buffer.h" #include "quiche/quic/core/quic_stream_send_buffer_base.h" #include "quiche/quic/core/quic_stream_send_buffer_inlining.h" #include "quiche/quic/core/quic_stream_sequencer.h"
diff --git a/quiche/quic/core/quic_stream.h b/quiche/quic/core/quic_stream.h index 25ad82e..0839956 100644 --- a/quiche/quic/core/quic_stream.h +++ b/quiche/quic/core/quic_stream.h
@@ -34,7 +34,6 @@ #include "quiche/quic/core/quic_flow_controller.h" #include "quiche/quic/core/quic_interval_set.h" #include "quiche/quic/core/quic_stream_priority.h" -#include "quiche/quic/core/quic_stream_send_buffer.h" #include "quiche/quic/core/quic_stream_send_buffer_base.h" #include "quiche/quic/core/quic_stream_send_buffer_inlining.h" #include "quiche/quic/core/quic_stream_sequencer.h"
diff --git a/quiche/quic/core/quic_stream_send_buffer.cc b/quiche/quic/core/quic_stream_send_buffer.cc deleted file mode 100644 index 32c5e35..0000000 --- a/quiche/quic/core/quic_stream_send_buffer.cc +++ /dev/null
@@ -1,197 +0,0 @@ -// Copyright (c) 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "quiche/quic/core/quic_stream_send_buffer.h" - -#include <algorithm> -#include <cstddef> -#include <utility> - -#include "absl/strings/string_view.h" -#include "absl/types/span.h" -#include "quiche/quic/core/quic_data_writer.h" -#include "quiche/quic/core/quic_interval.h" -#include "quiche/quic/core/quic_interval_set.h" -#include "quiche/quic/core/quic_stream_send_buffer_base.h" -#include "quiche/quic/core/quic_types.h" -#include "quiche/quic/platform/api/quic_bug_tracker.h" -#include "quiche/quic/platform/api/quic_flags.h" -#include "quiche/quic/platform/api/quic_logging.h" -#include "quiche/common/platform/api/quiche_logging.h" -#include "quiche/common/quiche_buffer_allocator.h" -#include "quiche/common/quiche_mem_slice.h" - -namespace quic { - -namespace { - -struct CompareOffset { - bool operator()(const BufferedSlice& slice, QuicStreamOffset offset) const { - return slice.offset + slice.slice.length() < offset; - } -}; - -} // namespace - -BufferedSlice::BufferedSlice(quiche::QuicheMemSlice mem_slice, - QuicStreamOffset offset) - : slice(std::move(mem_slice)), offset(offset) {} - -BufferedSlice::BufferedSlice(BufferedSlice&& other) = default; - -BufferedSlice& BufferedSlice::operator=(BufferedSlice&& other) = default; - -BufferedSlice::~BufferedSlice() {} - -QuicInterval<uint64_t> BufferedSlice::interval() const { - const uint64_t length = slice.length(); - return QuicInterval<uint64_t>(offset, offset + length); -} - -QuicStreamSendBufferOld::QuicStreamSendBufferOld( - quiche::QuicheBufferAllocator* allocator) - : allocator_(allocator) {} - -void QuicStreamSendBufferOld::SaveStreamData(absl::string_view data) { - QUIC_DVLOG(2) << "Save stream data offset " << stream_offset_ << " length " - << data.length(); - QUICHE_DCHECK(!data.empty()); - - // Latch the maximum data slice size. - const QuicByteCount max_data_slice_size = - GetQuicFlag(quic_send_buffer_max_data_slice_size); - while (!data.empty()) { - auto slice_len = std::min<absl::string_view::size_type>( - data.length(), max_data_slice_size); - auto buffer = - quiche::QuicheBuffer::Copy(allocator_, data.substr(0, slice_len)); - SaveMemSlice(quiche::QuicheMemSlice(std::move(buffer))); - - data = data.substr(slice_len); - } -} - -void QuicStreamSendBufferOld::SaveMemSlice(quiche::QuicheMemSlice slice) { - QUIC_DVLOG(2) << "Save slice offset " << stream_offset_ << " length " - << slice.length(); - if (slice.empty()) { - QUIC_BUG(quic_bug_10853_1) << "Try to save empty MemSlice to send buffer."; - return; - } - size_t length = slice.length(); - BufferedSlice bs = BufferedSlice(std::move(slice), stream_offset_); - interval_deque_.PushBack(std::move(bs)); - stream_offset_ += length; -} - -QuicByteCount QuicStreamSendBufferOld::SaveMemSliceSpan( - absl::Span<quiche::QuicheMemSlice> span) { - QuicByteCount total = 0; - for (quiche::QuicheMemSlice& slice : span) { - if (slice.empty()) { - // Skip empty slices. - continue; - } - total += slice.length(); - SaveMemSlice(std::move(slice)); - } - return total; -} - -bool QuicStreamSendBufferOld::WriteStreamData(QuicStreamOffset offset, - QuicByteCount data_length, - QuicDataWriter* writer) { - // The iterator returned from |interval_deque_| will automatically advance - // the internal write index for the QuicIntervalDeque. The incrementing is - // done in operator++. - for (auto slice_it = interval_deque_.DataAt(offset); - slice_it != interval_deque_.DataEnd(); ++slice_it) { - if (data_length == 0 || offset < slice_it->offset) { - break; - } - - QuicByteCount slice_offset = offset - slice_it->offset; - QuicByteCount available_bytes_in_slice = - slice_it->slice.length() - slice_offset; - QuicByteCount copy_length = std::min(data_length, available_bytes_in_slice); - if (!writer->WriteBytes(slice_it->slice.data() + slice_offset, - copy_length)) { - QUIC_BUG(quic_bug_10853_2) << "Writer fails to write."; - return false; - } - offset += copy_length; - data_length -= copy_length; - } - return data_length == 0; -} - -bool QuicStreamSendBufferOld::FreeMemSlices(QuicStreamOffset start, - QuicStreamOffset end) { - auto it = interval_deque_.DataBegin(); - if (it == interval_deque_.DataEnd() || it->slice.empty()) { - QUIC_BUG(quic_bug_10853_4) - << "Trying to ack stream data [" << start << ", " << end << "), " - << (it == interval_deque_.DataEnd() - ? "and there is no outstanding data." - : "and the first slice is empty."); - return false; - } - if (!it->interval().Contains(start)) { - // Slow path that not the earliest outstanding data gets acked. - it = std::lower_bound(interval_deque_.DataBegin(), - interval_deque_.DataEnd(), start, CompareOffset()); - } - if (it == interval_deque_.DataEnd() || it->slice.empty()) { - QUIC_BUG(quic_bug_10853_5) - << "Offset " << start << " with iterator offset: " << it->offset - << (it == interval_deque_.DataEnd() ? " does not exist." - : " has already been acked."); - return false; - } - for (; it != interval_deque_.DataEnd(); ++it) { - if (it->offset >= end) { - break; - } - if (!it->slice.empty() && - bytes_acked().Contains(it->offset, it->offset + it->slice.length())) { - it->slice.Reset(); - } - } - return true; -} - -void QuicStreamSendBufferOld::CleanUpBufferedSlices() { - while (!interval_deque_.Empty() && - interval_deque_.DataBegin()->slice.empty()) { - interval_deque_.PopFront(); - } -} - -size_t QuicStreamSendBufferOld::size() const { return interval_deque_.Size(); } - -void QuicStreamSendBufferOld::SetStreamOffsetForTest( - QuicStreamOffset new_offset) { - QuicStreamSendBufferBase::SetStreamOffsetForTest(new_offset); - stream_offset_ = new_offset; -} - -absl::string_view QuicStreamSendBufferOld::LatestWriteForTest() { - absl::string_view last_slice = ""; - for (auto it = interval_deque_.DataBegin(); it != interval_deque_.DataEnd(); - ++it) { - last_slice = it->slice.AsStringView(); - } - return last_slice; -} - -QuicByteCount QuicStreamSendBufferOld::TotalDataBufferedForTest() { - QuicByteCount length = 0; - for (auto slice = interval_deque_.DataBegin(); - slice != interval_deque_.DataEnd(); ++slice) { - length += slice->slice.length(); - } - return length; -} - -} // namespace quic
diff --git a/quiche/quic/core/quic_stream_send_buffer.h b/quiche/quic/core/quic_stream_send_buffer.h deleted file mode 100644 index e21277a..0000000 --- a/quiche/quic/core/quic_stream_send_buffer.h +++ /dev/null
@@ -1,109 +0,0 @@ -// Copyright (c) 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef QUICHE_QUIC_CORE_QUIC_STREAM_SEND_BUFFER_H_ -#define QUICHE_QUIC_CORE_QUIC_STREAM_SEND_BUFFER_H_ - -#include <cstddef> -#include <cstdint> - -#include "absl/strings/string_view.h" -#include "absl/types/span.h" -#include "quiche/quic/core/quic_interval.h" -#include "quiche/quic/core/quic_interval_deque.h" -#include "quiche/quic/core/quic_stream_send_buffer_base.h" -#include "quiche/quic/core/quic_types.h" -#include "quiche/common/platform/api/quiche_export.h" -#include "quiche/common/quiche_buffer_allocator.h" -#include "quiche/common/quiche_mem_slice.h" - -namespace quic { - -namespace test { -class QuicStreamSendBufferPeer; -} - -class QuicDataWriter; - -// BufferedSlice comprises information of a piece of stream data stored in -// contiguous memory space. Please note, BufferedSlice is constructed when -// stream data is saved in send buffer and is removed when stream data is fully -// acked. It is move-only. -struct QUICHE_EXPORT BufferedSlice { - BufferedSlice(quiche::QuicheMemSlice mem_slice, QuicStreamOffset offset); - BufferedSlice(BufferedSlice&& other); - BufferedSlice& operator=(BufferedSlice&& other); - - BufferedSlice(const BufferedSlice& other) = delete; - BufferedSlice& operator=(const BufferedSlice& other) = delete; - ~BufferedSlice(); - - // Return an interval representing the offset and length. - QuicInterval<uint64_t> interval() const; - - // Stream data of this data slice. - quiche::QuicheMemSlice slice; - // Location of this data slice in the stream. - QuicStreamOffset offset; -}; - -// QuicStreamSendBuffer contains a list of QuicStreamDataSlices. New data slices -// are added to the tail of the list. Data slices are removed from the head of -// the list when they get fully acked. Stream data can be retrieved and acked -// across slice boundaries. Stream data must be saved before being written, and -// it cannot be written after it is marked as acked. Stream data can be written -// out-of-order within those bounds, but note that in-order wites are O(1) -// whereas out-of-order writes are O(log(n)), see QuicIntervalDeque for details. -class QUICHE_EXPORT QuicStreamSendBufferOld : public QuicStreamSendBufferBase { - public: - explicit QuicStreamSendBufferOld(quiche::QuicheBufferAllocator* allocator); - - // Save |data| to send buffer. - void SaveStreamData(absl::string_view data) override; - - // Save |slice| to send buffer. - void SaveMemSlice(quiche::QuicheMemSlice slice) override; - - // Save all slices in |span| to send buffer. Return total bytes saved. - QuicByteCount SaveMemSliceSpan( - absl::Span<quiche::QuicheMemSlice> span) override; - - // Write |data_length| of data starts at |offset|. Returns true if all data - // was successfully written. Returns false if the writer fails to write, or if - // the data was already marked as acked, or if the data was never saved in the - // first place. - bool WriteStreamData(QuicStreamOffset offset, QuicByteCount data_length, - QuicDataWriter* writer) override; - - // Number of data slices in send buffer. - size_t size() const override; - - QuicStreamOffset stream_offset() const override { return stream_offset_; } - - void SetStreamOffsetForTest(QuicStreamOffset new_offset) override; - absl::string_view LatestWriteForTest() override; - QuicByteCount TotalDataBufferedForTest() override; - - private: - friend class test::QuicStreamSendBufferPeer; - - // Called when data within offset [start, end) gets acked. Frees fully - // acked buffered slices if any. Returns false if the corresponding data does - // not exist or has been acked. - bool FreeMemSlices(QuicStreamOffset start, QuicStreamOffset end) override; - - // Cleanup acked data from the start of the interval. - void CleanUpBufferedSlices() override; - - QuicIntervalDeque<BufferedSlice> interval_deque_; - - // Offset of next inserted byte. - QuicStreamOffset stream_offset_ = 0; - - quiche::QuicheBufferAllocator* allocator_; -}; - -} // namespace quic - -#endif // QUICHE_QUIC_CORE_QUIC_STREAM_SEND_BUFFER_H_
diff --git a/quiche/quic/core/quic_stream_send_buffer_test.cc b/quiche/quic/core/quic_stream_send_buffer_test.cc index 059bca6..5bf35f8 100644 --- a/quiche/quic/core/quic_stream_send_buffer_test.cc +++ b/quiche/quic/core/quic_stream_send_buffer_test.cc
@@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "quiche/quic/core/quic_stream_send_buffer.h" - #include <cstddef> #include <cstring> #include <memory> @@ -20,7 +18,6 @@ #include "quiche/quic/core/quic_types.h" #include "quiche/quic/platform/api/quic_expect_bug.h" #include "quiche/quic/platform/api/quic_flags.h" -#include "quiche/quic/test_tools/quic_interval_deque_peer.h" #include "quiche/quic/test_tools/quic_test_utils.h" #include "quiche/common/platform/api/quiche_test.h" #include "quiche/common/quiche_buffer_allocator.h" @@ -31,35 +28,9 @@ namespace quic { namespace test { -// TODO: b/417402601 - remove this after the old SendBuffer implementation is -// gone. -class QuicStreamSendBufferPeer { - public: - static int32_t write_index(QuicStreamSendBufferOld* send_buffer) { - return QuicIntervalDequePeer::GetCachedIndex(&send_buffer->interval_deque_); - } -}; - namespace { -enum class SendBufferType { - kDefault, - kInlining, -}; - -std::string SendBufferTypeName( - const testing::TestParamInfo<SendBufferType>& type) { - switch (type.param) { - case SendBufferType::kDefault: - return "Default"; - case SendBufferType::kInlining: - return "Inlining"; - } - return "<invalid>"; -} - -class QuicStreamSendBufferTest - : public quiche::test::QuicheTestWithParam<SendBufferType> { +class QuicStreamSendBufferTest : public quiche::test::QuicheTest { public: QuicStreamSendBufferTest() { send_buffer_ = CreateBuffer(); @@ -96,13 +67,7 @@ } std::unique_ptr<QuicStreamSendBufferBase> CreateBuffer() { - switch (GetParam()) { - case SendBufferType::kDefault: - return std::make_unique<QuicStreamSendBufferOld>(&allocator_); - case SendBufferType::kInlining: return std::make_unique<QuicStreamSendBufferInlining>(&allocator_); - } - return nullptr; } void WriteAllData() { @@ -120,12 +85,7 @@ std::unique_ptr<QuicStreamSendBufferBase> send_buffer_; }; -INSTANTIATE_TEST_SUITE_P(QuicStreamSendBufferTests, QuicStreamSendBufferTest, - testing::Values(SendBufferType::kDefault, - SendBufferType::kInlining), - SendBufferTypeName); - -TEST_P(QuicStreamSendBufferTest, CopyDataToBuffer) { +TEST_F(QuicStreamSendBufferTest, CopyDataToBuffer) { char buf[4000]; QuicDataWriter writer(4000, buf, quiche::HOST_BYTE_ORDER); std::string copy1(1024, 'a'); @@ -165,7 +125,7 @@ } // Regression test for b/143491027. -TEST_P(QuicStreamSendBufferTest, +TEST_F(QuicStreamSendBufferTest, WriteStreamDataContainsBothRetransmissionAndNewData) { std::string copy1(1024, 'a'); std::string copy2 = @@ -174,18 +134,8 @@ char buf[6000]; QuicDataWriter writer(6000, buf, quiche::HOST_BYTE_ORDER); // Write more than one slice. - if (GetParam() == SendBufferType::kDefault) { - EXPECT_EQ(0, - QuicStreamSendBufferPeer::write_index( - static_cast<QuicStreamSendBufferOld*>(send_buffer_.get()))); - } ASSERT_TRUE(send_buffer_->WriteStreamData(0, 1024, &writer)); EXPECT_EQ(copy1, absl::string_view(buf, 1024)); - if (GetParam() == SendBufferType::kDefault) { - EXPECT_EQ(1, - QuicStreamSendBufferPeer::write_index( - static_cast<QuicStreamSendBufferOld*>(send_buffer_.get()))); - } // Retransmit the first frame and also send new data. ASSERT_TRUE(send_buffer_->WriteStreamData(0, 2048, &writer)); @@ -198,7 +148,7 @@ EXPECT_EQ(copy3, absl::string_view(buf + 1024 + 2048 + 50, 1124)); } -TEST_P(QuicStreamSendBufferTest, RemoveStreamFrame) { +TEST_F(QuicStreamSendBufferTest, RemoveStreamFrame) { WriteAllData(); QuicByteCount newly_acked_length; @@ -220,7 +170,7 @@ EXPECT_EQ(0u, send_buffer_->size()); } -TEST_P(QuicStreamSendBufferTest, RemoveStreamFrameAcrossBoundaries) { +TEST_F(QuicStreamSendBufferTest, RemoveStreamFrameAcrossBoundaries) { WriteAllData(); QuicByteCount newly_acked_length; @@ -246,7 +196,7 @@ EXPECT_EQ(0u, send_buffer_->size()); } -TEST_P(QuicStreamSendBufferTest, AckStreamDataMultipleTimes) { +TEST_F(QuicStreamSendBufferTest, AckStreamDataMultipleTimes) { WriteAllData(); QuicByteCount newly_acked_length; EXPECT_TRUE(send_buffer_->OnStreamDataAcked(100, 1500, &newly_acked_length)); @@ -269,7 +219,7 @@ EXPECT_FALSE(send_buffer_->OnStreamDataAcked(4000, 100, &newly_acked_length)); } -TEST_P(QuicStreamSendBufferTest, AckStreamDataOutOfOrder) { +TEST_F(QuicStreamSendBufferTest, AckStreamDataOutOfOrder) { WriteAllData(); QuicByteCount newly_acked_length; EXPECT_TRUE(send_buffer_->OnStreamDataAcked(500, 1000, &newly_acked_length)); @@ -295,7 +245,7 @@ EXPECT_EQ(0u, send_buffer_->TotalDataBufferedForTest()); } -TEST_P(QuicStreamSendBufferTest, PendingRetransmission) { +TEST_F(QuicStreamSendBufferTest, PendingRetransmission) { WriteAllData(); EXPECT_TRUE(send_buffer_->IsStreamDataOutstanding(0, 3840)); EXPECT_FALSE(send_buffer_->HasPendingRetransmission()); @@ -336,7 +286,7 @@ EXPECT_TRUE(send_buffer_->IsStreamDataOutstanding(400, 800)); } -TEST_P(QuicStreamSendBufferTest, OutOfOrderWrites) { +TEST_F(QuicStreamSendBufferTest, OutOfOrderWrites) { char buf[3840] = {}; // Write data out of order. QuicDataWriter writer2(sizeof(buf) - 1000, buf + 1000); @@ -353,7 +303,7 @@ std::string(1280, 'c'), std::string(768, 'd'))); } -TEST_P(QuicStreamSendBufferTest, SaveMemSliceSpan) { +TEST_F(QuicStreamSendBufferTest, SaveMemSliceSpan) { std::unique_ptr<QuicStreamSendBufferBase> send_buffer = CreateBuffer(); std::string data(1024, 'a'); @@ -366,7 +316,7 @@ EXPECT_EQ(10u, send_buffer->size()); } -TEST_P(QuicStreamSendBufferTest, SaveEmptyMemSliceSpan) { +TEST_F(QuicStreamSendBufferTest, SaveEmptyMemSliceSpan) { std::unique_ptr<QuicStreamSendBufferBase> send_buffer = CreateBuffer(); std::string data(1024, 'a'); @@ -380,7 +330,7 @@ EXPECT_EQ(10u, send_buffer->size()); } -TEST_P(QuicStreamSendBufferTest, SmallWrite) { +TEST_F(QuicStreamSendBufferTest, SmallWrite) { std::unique_ptr<QuicStreamSendBufferBase> send_buffer = CreateBuffer(); constexpr absl::string_view kData = "abcd";
diff --git a/quiche/quic/test_tools/quic_stream_peer.h b/quiche/quic/test_tools/quic_stream_peer.h index 996b78d..c096efb 100644 --- a/quiche/quic/test_tools/quic_stream_peer.h +++ b/quiche/quic/test_tools/quic_stream_peer.h
@@ -5,10 +5,6 @@ #ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_STREAM_PEER_H_ #define QUICHE_QUIC_TEST_TOOLS_QUIC_STREAM_PEER_H_ -#include <cstdint> - -#include "quiche/quic/core/quic_packets.h" -#include "quiche/quic/core/quic_stream_send_buffer.h" #include "quiche/quic/core/quic_stream_send_buffer_base.h" #include "quiche/quic/core/quic_stream_sequencer.h" #include "quiche/quic/core/quic_types.h"
diff --git a/quiche/quic/test_tools/simple_data_producer.h b/quiche/quic/test_tools/simple_data_producer.h index 1d70a57..b7ad6d1 100644 --- a/quiche/quic/test_tools/simple_data_producer.h +++ b/quiche/quic/test_tools/simple_data_producer.h
@@ -8,7 +8,6 @@ #include "absl/container/flat_hash_map.h" #include "absl/strings/string_view.h" #include "quiche/quic/core/quic_stream_frame_data_producer.h" -#include "quiche/quic/core/quic_stream_send_buffer.h" #include "quiche/quic/core/quic_stream_send_buffer_inlining.h" #include "quiche/common/simple_buffer_allocator.h"