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

Side by Side Diff: net/http/http_stream_parser_unittest.cc

Issue 1476443002: Remove ScopedVector from ElementsUploadDataStream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/http/http_stream_parser.h" 5 #include "net/http/http_stream_parser.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <string> 10 #include <string>
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 ASSERT_EQ(ERR_INVALID_ARGUMENT, num_bytes_written); 119 ASSERT_EQ(ERR_INVALID_ARGUMENT, num_bytes_written);
120 } 120 }
121 121
122 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_NoBody) { 122 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_NoBody) {
123 // Shouldn't be merged if upload data is non-existent. 123 // Shouldn't be merged if upload data is non-existent.
124 ASSERT_FALSE(HttpStreamParser::ShouldMergeRequestHeadersAndBody( 124 ASSERT_FALSE(HttpStreamParser::ShouldMergeRequestHeadersAndBody(
125 "some header", NULL)); 125 "some header", NULL));
126 } 126 }
127 127
128 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_EmptyBody) { 128 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_EmptyBody) {
129 ScopedVector<UploadElementReader> element_readers; 129 std::vector<scoped_ptr<UploadElementReader>> element_readers;
130 scoped_ptr<UploadDataStream> body( 130 scoped_ptr<UploadDataStream> body(make_scoped_ptr(
mmenke 2015/11/24 17:25:08 include scoped_ptr
131 new ElementsUploadDataStream(element_readers.Pass(), 0)); 131 new ElementsUploadDataStream(std::move(element_readers), 0)));
132 ASSERT_EQ(OK, body->Init(CompletionCallback())); 132 ASSERT_EQ(OK, body->Init(CompletionCallback()));
133 // Shouldn't be merged if upload data is empty. 133 // Shouldn't be merged if upload data is empty.
134 ASSERT_FALSE(HttpStreamParser::ShouldMergeRequestHeadersAndBody( 134 ASSERT_FALSE(HttpStreamParser::ShouldMergeRequestHeadersAndBody(
135 "some header", body.get())); 135 "some header", body.get()));
136 } 136 }
137 137
138 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_ChunkedBody) { 138 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_ChunkedBody) {
139 const std::string payload = "123"; 139 const std::string payload = "123";
140 scoped_ptr<ChunkedUploadDataStream> body(new ChunkedUploadDataStream(0)); 140 scoped_ptr<ChunkedUploadDataStream> body(new ChunkedUploadDataStream(0));
141 body->AppendData(payload.data(), payload.size(), true); 141 body->AppendData(payload.data(), payload.size(), true);
142 ASSERT_EQ(OK, body->Init(TestCompletionCallback().callback())); 142 ASSERT_EQ(OK, body->Init(TestCompletionCallback().callback()));
143 // Shouldn't be merged if upload data carries chunked data. 143 // Shouldn't be merged if upload data carries chunked data.
144 ASSERT_FALSE(HttpStreamParser::ShouldMergeRequestHeadersAndBody( 144 ASSERT_FALSE(HttpStreamParser::ShouldMergeRequestHeadersAndBody(
145 "some header", body.get())); 145 "some header", body.get()));
146 } 146 }
147 147
148 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_FileBody) { 148 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_FileBody) {
149 // Create an empty temporary file. 149 // Create an empty temporary file.
150 base::ScopedTempDir temp_dir; 150 base::ScopedTempDir temp_dir;
151 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 151 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
152 base::FilePath temp_file_path; 152 base::FilePath temp_file_path;
153 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir.path(), &temp_file_path)); 153 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir.path(), &temp_file_path));
154 154
155 { 155 {
156 ScopedVector<UploadElementReader> element_readers; 156 std::vector<scoped_ptr<UploadElementReader>> element_readers;
157 157
158 element_readers.push_back( 158 element_readers.push_back(make_scoped_ptr(
159 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), 159 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(),
160 temp_file_path, 0, 0, base::Time())); 160 temp_file_path, 0, 0, base::Time())));
161 161
162 scoped_ptr<UploadDataStream> body( 162 scoped_ptr<UploadDataStream> body(
163 new ElementsUploadDataStream(element_readers.Pass(), 0)); 163 new ElementsUploadDataStream(std::move(element_readers), 0));
164 TestCompletionCallback callback; 164 TestCompletionCallback callback;
165 ASSERT_EQ(ERR_IO_PENDING, body->Init(callback.callback())); 165 ASSERT_EQ(ERR_IO_PENDING, body->Init(callback.callback()));
166 ASSERT_EQ(OK, callback.WaitForResult()); 166 ASSERT_EQ(OK, callback.WaitForResult());
167 // Shouldn't be merged if upload data carries a file, as it's not in-memory. 167 // Shouldn't be merged if upload data carries a file, as it's not in-memory.
168 ASSERT_FALSE(HttpStreamParser::ShouldMergeRequestHeadersAndBody( 168 ASSERT_FALSE(HttpStreamParser::ShouldMergeRequestHeadersAndBody(
169 "some header", body.get())); 169 "some header", body.get()));
170 } 170 }
171 171
172 // UploadFileElementReaders may post clean-up tasks on destruction. 172 // UploadFileElementReaders may post clean-up tasks on destruction.
173 base::RunLoop().RunUntilIdle(); 173 base::RunLoop().RunUntilIdle();
174 } 174 }
175 175
176 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_SmallBodyInMemory) { 176 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_SmallBodyInMemory) {
177 ScopedVector<UploadElementReader> element_readers; 177 std::vector<scoped_ptr<UploadElementReader>> element_readers;
178 const std::string payload = "123"; 178 const std::string payload = "123";
179 element_readers.push_back(new UploadBytesElementReader( 179 element_readers.push_back(make_scoped_ptr(
180 payload.data(), payload.size())); 180 new UploadBytesElementReader(payload.data(), payload.size())));
181 181
182 scoped_ptr<UploadDataStream> body( 182 scoped_ptr<UploadDataStream> body(
183 new ElementsUploadDataStream(element_readers.Pass(), 0)); 183 new ElementsUploadDataStream(std::move(element_readers), 0));
184 ASSERT_EQ(OK, body->Init(CompletionCallback())); 184 ASSERT_EQ(OK, body->Init(CompletionCallback()));
185 // Yes, should be merged if the in-memory body is small here. 185 // Yes, should be merged if the in-memory body is small here.
186 ASSERT_TRUE(HttpStreamParser::ShouldMergeRequestHeadersAndBody( 186 ASSERT_TRUE(HttpStreamParser::ShouldMergeRequestHeadersAndBody(
187 "some header", body.get())); 187 "some header", body.get()));
188 } 188 }
189 189
190 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_LargeBodyInMemory) { 190 TEST(HttpStreamParser, ShouldMergeRequestHeadersAndBody_LargeBodyInMemory) {
191 ScopedVector<UploadElementReader> element_readers; 191 std::vector<scoped_ptr<UploadElementReader>> element_readers;
192 const std::string payload(10000, 'a'); // 'a' x 10000. 192 const std::string payload(10000, 'a'); // 'a' x 10000.
193 element_readers.push_back(new UploadBytesElementReader( 193 element_readers.push_back(make_scoped_ptr(
194 payload.data(), payload.size())); 194 new UploadBytesElementReader(payload.data(), payload.size())));
195 195
196 scoped_ptr<UploadDataStream> body( 196 scoped_ptr<UploadDataStream> body(
197 new ElementsUploadDataStream(element_readers.Pass(), 0)); 197 new ElementsUploadDataStream(std::move(element_readers), 0));
198 ASSERT_EQ(OK, body->Init(CompletionCallback())); 198 ASSERT_EQ(OK, body->Init(CompletionCallback()));
199 // Shouldn't be merged if the in-memory body is large here. 199 // Shouldn't be merged if the in-memory body is large here.
200 ASSERT_FALSE(HttpStreamParser::ShouldMergeRequestHeadersAndBody( 200 ASSERT_FALSE(HttpStreamParser::ShouldMergeRequestHeadersAndBody(
201 "some header", body.get())); 201 "some header", body.get()));
202 } 202 }
203 203
204 TEST(HttpStreamParser, SentBytesNoHeaders) { 204 TEST(HttpStreamParser, SentBytesNoHeaders) {
205 MockWrite writes[] = { 205 MockWrite writes[] = {
206 MockWrite(SYNCHRONOUS, 0, "GET / HTTP/1.1\r\n\r\n"), 206 MockWrite(SYNCHRONOUS, 0, "GET / HTTP/1.1\r\n\r\n"),
207 }; 207 };
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 MockWrite writes[] = { 326 MockWrite writes[] = {
327 MockWrite(SYNCHRONOUS, 0, "POST / HTTP/1.1\r\n"), 327 MockWrite(SYNCHRONOUS, 0, "POST / HTTP/1.1\r\n"),
328 MockWrite(SYNCHRONOUS, 1, "Content-Length: 12\r\n\r\n"), 328 MockWrite(SYNCHRONOUS, 1, "Content-Length: 12\r\n\r\n"),
329 MockWrite(SYNCHRONOUS, 2, "hello world!"), 329 MockWrite(SYNCHRONOUS, 2, "hello world!"),
330 }; 330 };
331 331
332 SequencedSocketData data(nullptr, 0, writes, arraysize(writes)); 332 SequencedSocketData data(nullptr, 0, writes, arraysize(writes));
333 scoped_ptr<ClientSocketHandle> socket_handle = 333 scoped_ptr<ClientSocketHandle> socket_handle =
334 CreateConnectedSocketHandle(&data); 334 CreateConnectedSocketHandle(&data);
335 335
336 ScopedVector<UploadElementReader> element_readers; 336 std::vector<scoped_ptr<UploadElementReader>> element_readers;
337 element_readers.push_back(new UploadBytesElementReader("hello world!", 12)); 337 element_readers.push_back(
338 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); 338 make_scoped_ptr(new UploadBytesElementReader("hello world!", 12)));
339 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0);
339 ASSERT_EQ(OK, upload_data_stream.Init(TestCompletionCallback().callback())); 340 ASSERT_EQ(OK, upload_data_stream.Init(TestCompletionCallback().callback()));
340 341
341 HttpRequestInfo request; 342 HttpRequestInfo request;
342 request.method = "POST"; 343 request.method = "POST";
343 request.url = GURL("http://localhost"); 344 request.url = GURL("http://localhost");
344 request.upload_data_stream = &upload_data_stream; 345 request.upload_data_stream = &upload_data_stream;
345 346
346 scoped_refptr<GrowableIOBuffer> read_buffer(new GrowableIOBuffer); 347 scoped_refptr<GrowableIOBuffer> read_buffer(new GrowableIOBuffer);
347 HttpStreamParser parser(socket_handle.get(), &request, read_buffer.get(), 348 HttpStreamParser parser(socket_handle.get(), &request, read_buffer.get(),
348 BoundNetLog()); 349 BoundNetLog());
(...skipping 932 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 ASSERT_EQ(kBodySize, parser.ReadResponseBody( 1282 ASSERT_EQ(kBodySize, parser.ReadResponseBody(
1282 body_buffer.get(), kBodySize, callback.callback())); 1283 body_buffer.get(), kBodySize, callback.callback()));
1283 1284
1284 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), parser.sent_bytes()); 1285 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), parser.sent_bytes());
1285 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), parser.received_bytes()); 1286 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), parser.received_bytes());
1286 } 1287 }
1287 1288
1288 } // namespace 1289 } // namespace
1289 1290
1290 } // namespace net 1291 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698