Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: net/spdy/spdy_read_queue_unittest.cc

Issue 2388243003: Add test for SpdyReadQueue::Clear(). (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/spdy/spdy_read_queue.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 4
5 #include "net/spdy/spdy_read_queue.h" 5 #include "net/spdy/spdy_read_queue.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cstddef> 8 #include <cstddef>
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
11 11
12 #include "base/bind.h"
13 #include "base/memory/ptr_util.h"
12 #include "base/stl_util.h" 14 #include "base/stl_util.h"
13 #include "net/spdy/spdy_buffer.h" 15 #include "net/spdy/spdy_buffer.h"
14 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
15 17
16 namespace net { 18 namespace net {
17 19 namespace test {
davidben 2016/10/04 18:41:49 (Huh, is that the usual pattern? I've seen unnames
Bence 2016/10/04 18:49:53 Yes, I see this pattern quite often, see https://c
18 namespace { 20 namespace {
19 21
20 const char kData[] = "SPDY read queue test data.\0Some more data."; 22 const char kData[] = "SPDY read queue test data.\0Some more data.";
21 const size_t kDataSize = arraysize(kData); 23 const size_t kDataSize = arraysize(kData);
22 24
23 // Enqueues |data| onto |queue| in chunks of at most |max_buffer_size| 25 // Enqueues |data| onto |queue| in chunks of at most |max_buffer_size|
24 // bytes. 26 // bytes.
25 void EnqueueString(const std::string& data, 27 void EnqueueString(const std::string& data,
26 size_t max_buffer_size, 28 size_t max_buffer_size,
27 SpdyReadQueue* queue) { 29 SpdyReadQueue* queue) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 void RunEnqueueDequeueTest(size_t enqueue_max_buffer_size, 79 void RunEnqueueDequeueTest(size_t enqueue_max_buffer_size,
78 size_t dequeue_max_buffer_size) { 80 size_t dequeue_max_buffer_size) {
79 std::string data(kData, kDataSize); 81 std::string data(kData, kDataSize);
80 SpdyReadQueue read_queue; 82 SpdyReadQueue read_queue;
81 EnqueueString(data, enqueue_max_buffer_size, &read_queue); 83 EnqueueString(data, enqueue_max_buffer_size, &read_queue);
82 const std::string& drained_data = 84 const std::string& drained_data =
83 DrainToString(dequeue_max_buffer_size, &read_queue); 85 DrainToString(dequeue_max_buffer_size, &read_queue);
84 EXPECT_EQ(data, drained_data); 86 EXPECT_EQ(data, drained_data);
85 } 87 }
86 88
89 void OnBufferDiscarded(bool* discarded,
90 size_t* discarded_bytes,
91 size_t delta,
92 SpdyBuffer::ConsumeSource consume_source) {
93 EXPECT_EQ(SpdyBuffer::DISCARD, consume_source);
94 *discarded = true;
95 *discarded_bytes = delta;
96 }
97
98 } // namespace
99
87 class SpdyReadQueueTest : public ::testing::Test {}; 100 class SpdyReadQueueTest : public ::testing::Test {};
88 101
89 // Call RunEnqueueDequeueTest() with various buffer size combinatinos. 102 // Call RunEnqueueDequeueTest() with various buffer size combinatinos.
90 103
91 TEST_F(SpdyReadQueueTest, LargeEnqueueAndDequeueBuffers) { 104 TEST_F(SpdyReadQueueTest, LargeEnqueueAndDequeueBuffers) {
92 RunEnqueueDequeueTest(2 * kDataSize, 2 * kDataSize); 105 RunEnqueueDequeueTest(2 * kDataSize, 2 * kDataSize);
93 } 106 }
94 107
95 TEST_F(SpdyReadQueueTest, OneByteEnqueueAndDequeueBuffers) { 108 TEST_F(SpdyReadQueueTest, OneByteEnqueueAndDequeueBuffers) {
96 RunEnqueueDequeueTest(1, 1); 109 RunEnqueueDequeueTest(1, 1);
97 } 110 }
98 111
99 TEST_F(SpdyReadQueueTest, CoprimeBufferSizes) { 112 TEST_F(SpdyReadQueueTest, CoprimeBufferSizes) {
100 RunEnqueueDequeueTest(2, 3); 113 RunEnqueueDequeueTest(2, 3);
101 RunEnqueueDequeueTest(3, 2); 114 RunEnqueueDequeueTest(3, 2);
102 } 115 }
103 116
104 } // namespace 117 TEST_F(SpdyReadQueueTest, Clear) {
118 auto buffer = base::MakeUnique<SpdyBuffer>(kData, kDataSize);
119 bool discarded = false;
120 size_t discarded_bytes = 0;
121 buffer->AddConsumeCallback(
122 base::Bind(&OnBufferDiscarded, &discarded, &discarded_bytes));
105 123
124 SpdyReadQueue read_queue;
125 read_queue.Enqueue(std::move(buffer));
126
127 EXPECT_FALSE(discarded);
128 EXPECT_EQ(0u, discarded_bytes);
129 EXPECT_FALSE(read_queue.IsEmpty());
130
131 read_queue.Clear();
132
133 EXPECT_TRUE(discarded);
134 EXPECT_EQ(kDataSize, discarded_bytes);
135 EXPECT_TRUE(read_queue.IsEmpty());
136 }
137
138 } // namespace test
106 } // namespace net 139 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_read_queue.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698