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

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

Issue 9705046: Switch CreateSpdyHeadersFromHttpRequest to construct the correct headers based on the spdy protocol… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix raman's comments. Created 8 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « net/spdy/spdy_stream_spdy2_unittest.cc ('k') | net/spdy/spdy_test_util_spdy3.cc » ('j') | 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) 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 "base/memory/ref_counted.h" 5 #include "base/memory/ref_counted.h"
6 #include "net/base/completion_callback.h" 6 #include "net/base/completion_callback.h"
7 #include "net/base/net_log_unittest.h" 7 #include "net/base/net_log_unittest.h"
8 #include "net/spdy/buffered_spdy_framer.h" 8 #include "net/spdy/buffered_spdy_framer.h"
9 #include "net/spdy/spdy_stream.h" 9 #include "net/spdy/spdy_stream.h"
10 #include "net/spdy/spdy_http_utils.h" 10 #include "net/spdy/spdy_http_utils.h"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 0, 136 0,
137 net::ConvertRequestPriorityToSpdyPriority(LOWEST), 137 net::ConvertRequestPriorityToSpdyPriority(LOWEST),
138 spdy::CONTROL_FLAG_NONE, 138 spdy::CONTROL_FLAG_NONE,
139 false, 139 false,
140 spdy::INVALID, 140 spdy::INVALID,
141 NULL, 141 NULL,
142 0, 142 0,
143 spdy::DATA_FLAG_NONE 143 spdy::DATA_FLAG_NONE
144 }; 144 };
145 static const char* const kGetHeaders[] = { 145 static const char* const kGetHeaders[] = {
146 "method", 146 ":method",
147 "GET", 147 "GET",
148 "scheme", 148 ":scheme",
149 "http", 149 "http",
150 "host", 150 ":host",
151 "www.google.com", 151 "www.google.com",
152 "path", 152 ":path",
153 "/", 153 "/",
154 "version", 154 ":version",
155 "HTTP/1.1", 155 "HTTP/1.1",
156 }; 156 };
157 scoped_ptr<spdy::SpdyFrame> req( 157 scoped_ptr<spdy::SpdyFrame> req(
158 ConstructSpdyPacket( 158 ConstructSpdyPacket(
159 kSynStartHeader, NULL, 0, kGetHeaders, arraysize(kGetHeaders) / 2)); 159 kSynStartHeader, NULL, 0, kGetHeaders, arraysize(kGetHeaders) / 2));
160 scoped_ptr<spdy::SpdyFrame> msg( 160 scoped_ptr<spdy::SpdyFrame> msg(
161 ConstructSpdyBodyFrame("\0hello!\xff", 8)); 161 ConstructSpdyBodyFrame("\0hello!\xff", 8));
162 MockWrite writes[] = { 162 MockWrite writes[] = {
163 CreateMockWrite(*req), 163 CreateMockWrite(*req),
164 CreateMockWrite(*msg), 164 CreateMockWrite(*msg),
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 memcpy(buf->data(), "\0hello!\xff", 8); 211 memcpy(buf->data(), "\0hello!\xff", 8);
212 TestCompletionCallback callback; 212 TestCompletionCallback callback;
213 213
214 scoped_ptr<TestSpdyStreamDelegate> delegate( 214 scoped_ptr<TestSpdyStreamDelegate> delegate(
215 new TestSpdyStreamDelegate(stream.get(), buf.get(), callback.callback())); 215 new TestSpdyStreamDelegate(stream.get(), buf.get(), callback.callback()));
216 stream->SetDelegate(delegate.get()); 216 stream->SetDelegate(delegate.get());
217 217
218 EXPECT_FALSE(stream->HasUrl()); 218 EXPECT_FALSE(stream->HasUrl());
219 219
220 linked_ptr<spdy::SpdyHeaderBlock> headers(new spdy::SpdyHeaderBlock); 220 linked_ptr<spdy::SpdyHeaderBlock> headers(new spdy::SpdyHeaderBlock);
221 (*headers)["method"] = "GET"; 221 (*headers)[":method"] = "GET";
222 (*headers)["scheme"] = url.scheme(); 222 (*headers)[":scheme"] = url.scheme();
223 (*headers)["host"] = url.host(); 223 (*headers)[":host"] = url.host();
224 (*headers)["path"] = url.path(); 224 (*headers)[":path"] = url.path();
225 (*headers)["version"] = "HTTP/1.1"; 225 (*headers)[":version"] = "HTTP/1.1";
226 stream->set_spdy_headers(headers); 226 stream->set_spdy_headers(headers);
227 EXPECT_TRUE(stream->HasUrl()); 227 EXPECT_TRUE(stream->HasUrl());
228 EXPECT_EQ(kStreamUrl, stream->GetUrl().spec()); 228 EXPECT_EQ(kStreamUrl, stream->GetUrl().spec());
229 229
230 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequest(true)); 230 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequest(true));
231 231
232 EXPECT_EQ(OK, callback.WaitForResult()); 232 EXPECT_EQ(OK, callback.WaitForResult());
233 233
234 EXPECT_TRUE(delegate->send_headers_completed()); 234 EXPECT_TRUE(delegate->send_headers_completed());
235 EXPECT_EQ("200", (*delegate->response())["status"]); 235 EXPECT_EQ("200", (*delegate->response())["status"]);
236 EXPECT_EQ("HTTP/1.1", (*delegate->response())["version"]); 236 EXPECT_EQ("HTTP/1.1", (*delegate->response())["version"]);
237 EXPECT_EQ(std::string("\0hello!\xff", 8), delegate->received_data()); 237 EXPECT_EQ(std::string("\0hello!\xff", 8), delegate->received_data());
238 EXPECT_EQ(8, delegate->data_sent()); 238 EXPECT_EQ(8, delegate->data_sent());
239 EXPECT_TRUE(delegate->closed()); 239 EXPECT_TRUE(delegate->closed());
240 } 240 }
241 241
242 TEST_F(SpdyStreamSpdy3Test, PushedStream) { 242 TEST_F(SpdyStreamSpdy3Test, PushedStream) {
243 const char kStreamUrl[] = "http://www.google.com/"; 243 const char kStreamUrl[] = "http://www.google.com/";
244 244
245 SpdySessionDependencies session_deps; 245 SpdySessionDependencies session_deps;
246 session_ = SpdySessionDependencies::SpdyCreateSession(&session_deps); 246 session_ = SpdySessionDependencies::SpdyCreateSession(&session_deps);
247 SpdySessionPoolPeer pool_peer_(session_->spdy_session_pool()); 247 SpdySessionPoolPeer pool_peer_(session_->spdy_session_pool());
248 scoped_refptr<SpdySession> spdy_session(CreateSpdySession()); 248 scoped_refptr<SpdySession> spdy_session(CreateSpdySession());
249
250 MockRead reads[] = {
251 MockRead(ASYNC, 0, 0), // EOF
252 };
253
254 scoped_ptr<OrderedSocketData> data(
255 new OrderedSocketData(reads, arraysize(reads), NULL, 0));
256 MockConnect connect_data(SYNCHRONOUS, OK);
257 data->set_connect_data(connect_data);
258
259 session_deps.socket_factory->AddSocketDataProvider(data.get());
260 SpdySession::SetSSLMode(false);
261
262 HostPortPair host_port_pair("www.google.com", 80);
263 scoped_refptr<TransportSocketParams> transport_params(
264 new TransportSocketParams(host_port_pair, LOWEST, false, false));
265 scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
266 EXPECT_EQ(OK, connection->Init(host_port_pair.ToString(), transport_params,
267 LOWEST, CompletionCallback(),
268 session_->GetTransportSocketPool(),
269 BoundNetLog()));
270 spdy_session->InitializeWithSocket(connection.release(), false, OK);
249 BoundNetLog net_log; 271 BoundNetLog net_log;
250 272
251 // Conjure up a stream. 273 // Conjure up a stream.
252 scoped_refptr<SpdyStream> stream = new SpdyStream(spdy_session, 274 scoped_refptr<SpdyStream> stream = new SpdyStream(spdy_session,
253 2, 275 2,
254 true, 276 true,
255 net_log); 277 net_log);
256 EXPECT_FALSE(stream->response_received()); 278 EXPECT_FALSE(stream->response_received());
257 EXPECT_FALSE(stream->HasUrl()); 279 EXPECT_FALSE(stream->HasUrl());
258 280
259 // Set a couple of headers. 281 // Set a couple of headers.
260 spdy::SpdyHeaderBlock response; 282 spdy::SpdyHeaderBlock response;
261 response["url"] = kStreamUrl; 283 GURL url(kStreamUrl);
284 response[":host"] = url.host();
285 response[":scheme"] = url.scheme();
286 response[":path"] = url.path();
262 stream->OnResponseReceived(response); 287 stream->OnResponseReceived(response);
263 288
264 // Send some basic headers. 289 // Send some basic headers.
265 spdy::SpdyHeaderBlock headers; 290 spdy::SpdyHeaderBlock headers;
266 response["status"] = "200"; 291 response["status"] = "200";
267 response["version"] = "OK"; 292 response["version"] = "OK";
268 stream->OnHeaders(headers); 293 stream->OnHeaders(headers);
269 294
270 stream->set_response_received(); 295 stream->set_response_received();
271 EXPECT_TRUE(stream->response_received()); 296 EXPECT_TRUE(stream->response_received());
(...skipping 13 matching lines...) Expand all
285 0, 310 0,
286 net::ConvertRequestPriorityToSpdyPriority(LOWEST), 311 net::ConvertRequestPriorityToSpdyPriority(LOWEST),
287 spdy::CONTROL_FLAG_NONE, 312 spdy::CONTROL_FLAG_NONE,
288 false, 313 false,
289 spdy::INVALID, 314 spdy::INVALID,
290 NULL, 315 NULL,
291 0, 316 0,
292 spdy::DATA_FLAG_NONE 317 spdy::DATA_FLAG_NONE
293 }; 318 };
294 static const char* const kGetHeaders[] = { 319 static const char* const kGetHeaders[] = {
295 "method", 320 ":method",
296 "GET", 321 "GET",
297 "scheme", 322 ":scheme",
298 "http", 323 "http",
299 "host", 324 ":host",
300 "www.google.com", 325 "www.google.com",
301 "path", 326 ":path",
302 "/", 327 "/",
303 "version", 328 ":version",
304 "HTTP/1.1", 329 "HTTP/1.1",
305 }; 330 };
306 scoped_ptr<spdy::SpdyFrame> req( 331 scoped_ptr<spdy::SpdyFrame> req(
307 ConstructSpdyPacket( 332 ConstructSpdyPacket(
308 kSynStartHeader, NULL, 0, kGetHeaders, arraysize(kGetHeaders) / 2)); 333 kSynStartHeader, NULL, 0, kGetHeaders, arraysize(kGetHeaders) / 2));
309 scoped_ptr<spdy::SpdyFrame> msg( 334 scoped_ptr<spdy::SpdyFrame> msg(
310 ConstructSpdyBodyFrame("\0hello!\xff", 8)); 335 ConstructSpdyBodyFrame("\0hello!\xff", 8));
311 MockWrite writes[] = { 336 MockWrite writes[] = {
312 CreateMockWrite(*req), 337 CreateMockWrite(*req),
313 CreateMockWrite(*msg), 338 CreateMockWrite(*msg),
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 memcpy(buf->data(), "\0hello!\xff", 8); 387 memcpy(buf->data(), "\0hello!\xff", 8);
363 TestCompletionCallback callback; 388 TestCompletionCallback callback;
364 389
365 scoped_ptr<TestSpdyStreamDelegate> delegate( 390 scoped_ptr<TestSpdyStreamDelegate> delegate(
366 new TestSpdyStreamDelegate(stream.get(), buf.get(), callback.callback())); 391 new TestSpdyStreamDelegate(stream.get(), buf.get(), callback.callback()));
367 stream->SetDelegate(delegate.get()); 392 stream->SetDelegate(delegate.get());
368 393
369 EXPECT_FALSE(stream->HasUrl()); 394 EXPECT_FALSE(stream->HasUrl());
370 395
371 linked_ptr<spdy::SpdyHeaderBlock> headers(new spdy::SpdyHeaderBlock); 396 linked_ptr<spdy::SpdyHeaderBlock> headers(new spdy::SpdyHeaderBlock);
372 (*headers)["method"] = "GET"; 397 (*headers)[":method"] = "GET";
373 (*headers)["scheme"] = url.scheme(); 398 (*headers)[":scheme"] = url.scheme();
374 (*headers)["host"] = url.host(); 399 (*headers)[":host"] = url.host();
375 (*headers)["path"] = url.path(); 400 (*headers)[":path"] = url.path();
376 (*headers)["version"] = "HTTP/1.1"; 401 (*headers)[":version"] = "HTTP/1.1";
377 stream->set_spdy_headers(headers); 402 stream->set_spdy_headers(headers);
378 EXPECT_TRUE(stream->HasUrl()); 403 EXPECT_TRUE(stream->HasUrl());
379 EXPECT_EQ(kStreamUrl, stream->GetUrl().spec()); 404 EXPECT_EQ(kStreamUrl, stream->GetUrl().spec());
380 405
381 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequest(true)); 406 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequest(true));
382 407
383 const spdy::SpdyStreamId stream_id = stream->stream_id(); 408 const spdy::SpdyStreamId stream_id = stream->stream_id();
384 409
385 EXPECT_EQ(OK, callback.WaitForResult()); 410 EXPECT_EQ(OK, callback.WaitForResult());
386 411
(...skipping 16 matching lines...) Expand all
403 net::NetLog::PHASE_NONE); 428 net::NetLog::PHASE_NONE);
404 429
405 CapturingNetLog::Entry entry = entries[pos]; 430 CapturingNetLog::Entry entry = entries[pos];
406 NetLogSpdyStreamErrorParameter* request_params = 431 NetLogSpdyStreamErrorParameter* request_params =
407 static_cast<NetLogSpdyStreamErrorParameter*>( 432 static_cast<NetLogSpdyStreamErrorParameter*>(
408 entry.extra_parameters.get()); 433 entry.extra_parameters.get());
409 EXPECT_EQ(stream_id, request_params->stream_id()); 434 EXPECT_EQ(stream_id, request_params->stream_id());
410 } 435 }
411 436
412 } // namespace net 437 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_stream_spdy2_unittest.cc ('k') | net/spdy/spdy_test_util_spdy3.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698