| OLD | NEW |
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 #include "net/quic/core/quic_stream_sequencer_buffer.h" | 4 #include "net/quic/core/quic_stream_sequencer_buffer.h" |
| 5 | 5 |
| 6 #include <algorithm> | 6 #include <algorithm> |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 EXPECT_EQ(1824u, gaps.back().begin_offset); | 130 EXPECT_EQ(1824u, gaps.back().begin_offset); |
| 131 auto* frame_map = helper_->frame_arrival_time_map(); | 131 auto* frame_map = helper_->frame_arrival_time_map(); |
| 132 EXPECT_EQ(1u, frame_map->size()); | 132 EXPECT_EQ(1u, frame_map->size()); |
| 133 EXPECT_EQ(800u, frame_map->begin()->first); | 133 EXPECT_EQ(800u, frame_map->begin()->first); |
| 134 EXPECT_EQ(t, (*frame_map)[800].timestamp); | 134 EXPECT_EQ(t, (*frame_map)[800].timestamp); |
| 135 EXPECT_TRUE(helper_->CheckBufferInvariants()); | 135 EXPECT_TRUE(helper_->CheckBufferInvariants()); |
| 136 EXPECT_TRUE(helper_->IsBufferAllocated()); | 136 EXPECT_TRUE(helper_->IsBufferAllocated()); |
| 137 } | 137 } |
| 138 | 138 |
| 139 TEST_F(QuicStreamSequencerBufferTest, OnStreamDataInvalidSource) { | 139 TEST_F(QuicStreamSequencerBufferTest, OnStreamDataInvalidSource) { |
| 140 FLAGS_quic_stream_sequencer_buffer_debug = true; | |
| 141 // Pass in an invalid source, expects to return error. | 140 // Pass in an invalid source, expects to return error. |
| 142 StringPiece source; | 141 StringPiece source; |
| 143 source.set(nullptr, 1024); | 142 source.set(nullptr, 1024); |
| 144 size_t written; | 143 size_t written; |
| 145 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1)); | 144 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1)); |
| 146 QuicTime t = clock_.ApproximateNow(); | 145 QuicTime t = clock_.ApproximateNow(); |
| 147 EXPECT_EQ(QUIC_STREAM_SEQUENCER_INVALID_STATE, | 146 EXPECT_EQ(QUIC_STREAM_SEQUENCER_INVALID_STATE, |
| 148 buffer_->OnStreamData(800, source, t, &written, &error_details_)); | 147 buffer_->OnStreamData(800, source, t, &written, &error_details_)); |
| 149 EXPECT_EQ( | 148 EXPECT_EQ( |
| 150 0u, error_details_.find("QuicStreamSequencerBuffer error: OnStreamData()" | 149 0u, error_details_.find("QuicStreamSequencerBuffer error: OnStreamData()" |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 EXPECT_EQ(100u, read); | 328 EXPECT_EQ(100u, read); |
| 330 EXPECT_EQ(100u, buffer_->BytesConsumed()); | 329 EXPECT_EQ(100u, buffer_->BytesConsumed()); |
| 331 EXPECT_EQ(source, string(dest, read)); | 330 EXPECT_EQ(source, string(dest, read)); |
| 332 EXPECT_EQ(1u, helper_->frame_arrival_time_map()->size()); | 331 EXPECT_EQ(1u, helper_->frame_arrival_time_map()->size()); |
| 333 // The first block should be released as its data has been read out. | 332 // The first block should be released as its data has been read out. |
| 334 EXPECT_EQ(nullptr, helper_->GetBlock(0)); | 333 EXPECT_EQ(nullptr, helper_->GetBlock(0)); |
| 335 EXPECT_TRUE(helper_->CheckBufferInvariants()); | 334 EXPECT_TRUE(helper_->CheckBufferInvariants()); |
| 336 } | 335 } |
| 337 | 336 |
| 338 TEST_F(QuicStreamSequencerBufferTest, ReadvError) { | 337 TEST_F(QuicStreamSequencerBufferTest, ReadvError) { |
| 339 FLAGS_quic_stream_sequencer_buffer_debug = true; | |
| 340 string source = string(100, 'b'); | 338 string source = string(100, 'b'); |
| 341 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1)); | 339 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1)); |
| 342 QuicTime t1 = clock_.ApproximateNow(); | 340 QuicTime t1 = clock_.ApproximateNow(); |
| 343 // Write something into [0, 100). | 341 // Write something into [0, 100). |
| 344 size_t written; | 342 size_t written; |
| 345 buffer_->OnStreamData(0, source, t1, &written, &error_details_); | 343 buffer_->OnStreamData(0, source, t1, &written, &error_details_); |
| 346 EXPECT_TRUE(helper_->GetBlock(0) != nullptr); | 344 EXPECT_TRUE(helper_->GetBlock(0) != nullptr); |
| 347 EXPECT_TRUE(buffer_->HasBytesToRead()); | 345 EXPECT_TRUE(buffer_->HasBytesToRead()); |
| 348 // Read into a iovec array with total capacity of 120 bytes. | 346 // Read into a iovec array with total capacity of 120 bytes. |
| 349 iovec iov{nullptr, 120}; | 347 iovec iov{nullptr, 120}; |
| (...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1056 EXPECT_LE(bytes_to_buffer_, total_bytes_read_) << "iterations: " | 1054 EXPECT_LE(bytes_to_buffer_, total_bytes_read_) << "iterations: " |
| 1057 << iterations; | 1055 << iterations; |
| 1058 EXPECT_LE(bytes_to_buffer_, total_bytes_written_); | 1056 EXPECT_LE(bytes_to_buffer_, total_bytes_written_); |
| 1059 } | 1057 } |
| 1060 | 1058 |
| 1061 } // anonymous namespace | 1059 } // anonymous namespace |
| 1062 | 1060 |
| 1063 } // namespace test | 1061 } // namespace test |
| 1064 | 1062 |
| 1065 } // namespace net | 1063 } // namespace net |
| OLD | NEW |