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 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 LOG(ERROR) << error_details_; | 325 LOG(ERROR) << error_details_; |
326 EXPECT_EQ(100u, read); | 326 EXPECT_EQ(100u, read); |
327 EXPECT_EQ(100u, buffer_->BytesConsumed()); | 327 EXPECT_EQ(100u, buffer_->BytesConsumed()); |
328 EXPECT_EQ(source, string(dest, read)); | 328 EXPECT_EQ(source, string(dest, read)); |
329 EXPECT_EQ(1u, helper_->frame_arrival_time_map()->size()); | 329 EXPECT_EQ(1u, helper_->frame_arrival_time_map()->size()); |
330 // The first block should be released as its data has been read out. | 330 // The first block should be released as its data has been read out. |
331 EXPECT_EQ(nullptr, helper_->GetBlock(0)); | 331 EXPECT_EQ(nullptr, helper_->GetBlock(0)); |
332 EXPECT_TRUE(helper_->CheckBufferInvariants()); | 332 EXPECT_TRUE(helper_->CheckBufferInvariants()); |
333 } | 333 } |
334 | 334 |
335 TEST_F(QuicStreamSequencerBufferTest, ReadvError) { | |
336 string source = string(100, 'b'); | |
337 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1)); | |
338 QuicTime t1 = clock_.ApproximateNow(); | |
339 // Write something into [0, 100). | |
340 size_t written; | |
341 buffer_->OnStreamData(0, source, t1, &written, &error_details_); | |
342 EXPECT_TRUE(helper_->GetBlock(0) != nullptr); | |
343 EXPECT_TRUE(buffer_->HasBytesToRead()); | |
344 // Read into a iovec array with total capacity of 120 bytes. | |
345 iovec iov{nullptr, 120}; | |
346 size_t read; | |
347 EXPECT_EQ(QUIC_STREAM_SEQUENCER_INVALID_STATE, | |
348 buffer_->Readv(&iov, 1, &read, &error_details_)); | |
349 EXPECT_EQ(0u, | |
350 error_details_.find( | |
351 "QuicStreamSequencerBuffer error: Readv() dest == nullptr: true" | |
352 " blocks_[0] == nullptr: false")); | |
353 } | |
354 | |
355 TEST_F(QuicStreamSequencerBufferTest, ReadvAcrossBlocks) { | 335 TEST_F(QuicStreamSequencerBufferTest, ReadvAcrossBlocks) { |
356 string source(kBlockSizeBytes + 50, 'a'); | 336 string source(kBlockSizeBytes + 50, 'a'); |
357 // Write 1st block to full and extand 50 bytes to next block. | 337 // Write 1st block to full and extand 50 bytes to next block. |
358 size_t written; | 338 size_t written; |
359 buffer_->OnStreamData(0, source, clock_.ApproximateNow(), &written, | 339 buffer_->OnStreamData(0, source, clock_.ApproximateNow(), &written, |
360 &error_details_); | 340 &error_details_); |
361 EXPECT_EQ(source.size(), helper_->ReadableBytes()); | 341 EXPECT_EQ(source.size(), helper_->ReadableBytes()); |
362 // Iteratively read 512 bytes from buffer_-> Overwrite dest[] each time. | 342 // Iteratively read 512 bytes from buffer_-> Overwrite dest[] each time. |
363 char dest[512]; | 343 char dest[512]; |
364 while (helper_->ReadableBytes()) { | 344 while (helper_->ReadableBytes()) { |
(...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1048 EXPECT_LE(bytes_to_buffer_, total_bytes_read_) << "iterations: " | 1028 EXPECT_LE(bytes_to_buffer_, total_bytes_read_) << "iterations: " |
1049 << iterations; | 1029 << iterations; |
1050 EXPECT_LE(bytes_to_buffer_, total_bytes_written_); | 1030 EXPECT_LE(bytes_to_buffer_, total_bytes_written_); |
1051 } | 1031 } |
1052 | 1032 |
1053 } // anonymous namespace | 1033 } // anonymous namespace |
1054 | 1034 |
1055 } // namespace test | 1035 } // namespace test |
1056 | 1036 |
1057 } // namespace net | 1037 } // namespace net |
OLD | NEW |