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

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

Issue 9817014: Created a new class SpdyTestStateHelper to serve as a helper to manage the state of a number of SPD… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add TODO 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
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/spdy/spdy_http_stream.h" 5 #include "net/spdy/spdy_http_stream.h"
6 6
7 #include "crypto/ec_private_key.h" 7 #include "crypto/ec_private_key.h"
8 #include "crypto/ec_signature_creator.h" 8 #include "crypto/ec_signature_creator.h"
9 #include "crypto/signature_creator.h" 9 #include "crypto/signature_creator.h"
10 #include "net/base/asn1_util.h" 10 #include "net/base/asn1_util.h"
11 #include "net/base/default_origin_bound_cert_store.h" 11 #include "net/base/default_origin_bound_cert_store.h"
12 #include "net/http/http_response_headers.h" 12 #include "net/http/http_response_headers.h"
13 #include "net/http/http_response_info.h" 13 #include "net/http/http_response_info.h"
14 #include "net/spdy/spdy_session.h" 14 #include "net/spdy/spdy_session.h"
15 #include "net/spdy/spdy_test_util_spdy3.h" 15 #include "net/spdy/spdy_test_util_spdy3.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 using namespace net::test_spdy3; 18 using namespace net::test_spdy3;
19 19
20 namespace net { 20 namespace net {
21 21
22 class SpdyHttpStreamSpdy3Test : public testing::Test { 22 class SpdyHttpStreamSpdy3Test : public testing::Test {
23 public: 23 public:
24 OrderedSocketData* data() { return data_.get(); } 24 OrderedSocketData* data() { return data_.get(); }
25 protected: 25 protected:
26 SpdyHttpStreamSpdy3Test() {} 26 SpdyHttpStreamSpdy3Test() {}
27 27
28 void EnableCompression(bool enabled) {
29 spdy::SpdyFramer::set_enable_compression_default(enabled);
30 }
31
32 virtual void SetUp() { 28 virtual void SetUp() {
33 SpdySession::set_default_protocol(SSLClientSocket::kProtoSPDY3); 29 SpdySession::set_default_protocol(SSLClientSocket::kProtoSPDY3);
34 } 30 }
35 31
36 virtual void TearDown() { 32 virtual void TearDown() {
37 crypto::ECSignatureCreator::SetFactoryForTesting(NULL); 33 crypto::ECSignatureCreator::SetFactoryForTesting(NULL);
38 MessageLoop::current()->RunAllPending(); 34 MessageLoop::current()->RunAllPending();
39 } 35 }
40 36
41 int InitSession(MockRead* reads, size_t reads_count, 37 int InitSession(MockRead* reads, size_t reads_count,
(...skipping 25 matching lines...) Expand all
67 ServerBoundCertService* server_bound_cert_service, 63 ServerBoundCertService* server_bound_cert_service,
68 const std::string& cert, 64 const std::string& cert,
69 const std::string& proof, 65 const std::string& proof,
70 SSLClientCertType type); 66 SSLClientCertType type);
71 67
72 SpdySessionDependencies session_deps_; 68 SpdySessionDependencies session_deps_;
73 scoped_ptr<OrderedSocketData> data_; 69 scoped_ptr<OrderedSocketData> data_;
74 scoped_refptr<HttpNetworkSession> http_session_; 70 scoped_refptr<HttpNetworkSession> http_session_;
75 scoped_refptr<SpdySession> session_; 71 scoped_refptr<SpdySession> session_;
76 scoped_refptr<TransportSocketParams> transport_params_; 72 scoped_refptr<TransportSocketParams> transport_params_;
73
74 private:
75 SpdyTestStateHelper spdy_state_;
77 }; 76 };
78 77
79 TEST_F(SpdyHttpStreamSpdy3Test, SendRequest) { 78 TEST_F(SpdyHttpStreamSpdy3Test, SendRequest) {
80 EnableCompression(false);
81
82 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 79 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
83 MockWrite writes[] = { 80 MockWrite writes[] = {
84 CreateMockWrite(*req.get(), 1), 81 CreateMockWrite(*req.get(), 1),
85 }; 82 };
86 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 83 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
87 MockRead reads[] = { 84 MockRead reads[] = {
88 CreateMockRead(*resp, 2), 85 CreateMockRead(*resp, 2),
89 MockRead(SYNCHRONOUS, 0, 3) // EOF 86 MockRead(SYNCHRONOUS, 0, 3) // EOF
90 }; 87 };
91 88
(...skipping 26 matching lines...) Expand all
118 data()->CompleteRead(); 115 data()->CompleteRead();
119 116
120 // Because we abandoned the stream, we don't expect to find a session in the 117 // Because we abandoned the stream, we don't expect to find a session in the
121 // pool anymore. 118 // pool anymore.
122 EXPECT_FALSE(http_session_->spdy_session_pool()->HasSession(pair)); 119 EXPECT_FALSE(http_session_->spdy_session_pool()->HasSession(pair));
123 EXPECT_TRUE(data()->at_read_eof()); 120 EXPECT_TRUE(data()->at_read_eof());
124 EXPECT_TRUE(data()->at_write_eof()); 121 EXPECT_TRUE(data()->at_write_eof());
125 } 122 }
126 123
127 TEST_F(SpdyHttpStreamSpdy3Test, SendChunkedPost) { 124 TEST_F(SpdyHttpStreamSpdy3Test, SendChunkedPost) {
128 EnableCompression(false);
129 UploadDataStream::set_merge_chunks(false); 125 UploadDataStream::set_merge_chunks(false);
130 126
131 scoped_ptr<spdy::SpdyFrame> req(ConstructChunkedSpdyPost(NULL, 0)); 127 scoped_ptr<spdy::SpdyFrame> req(ConstructChunkedSpdyPost(NULL, 0));
132 scoped_ptr<spdy::SpdyFrame> chunk1(ConstructSpdyBodyFrame(1, false)); 128 scoped_ptr<spdy::SpdyFrame> chunk1(ConstructSpdyBodyFrame(1, false));
133 scoped_ptr<spdy::SpdyFrame> chunk2(ConstructSpdyBodyFrame(1, true)); 129 scoped_ptr<spdy::SpdyFrame> chunk2(ConstructSpdyBodyFrame(1, true));
134 MockWrite writes[] = { 130 MockWrite writes[] = {
135 CreateMockWrite(*req.get(), 1), 131 CreateMockWrite(*req.get(), 1),
136 CreateMockWrite(*chunk1, 2), // POST upload frames 132 CreateMockWrite(*chunk1, 2), // POST upload frames
137 CreateMockWrite(*chunk2, 3), 133 CreateMockWrite(*chunk2, 3),
138 }; 134 };
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 177
182 // Because we abandoned the stream, we don't expect to find a session in the 178 // Because we abandoned the stream, we don't expect to find a session in the
183 // pool anymore. 179 // pool anymore.
184 EXPECT_FALSE(http_session_->spdy_session_pool()->HasSession(pair)); 180 EXPECT_FALSE(http_session_->spdy_session_pool()->HasSession(pair));
185 EXPECT_TRUE(data()->at_read_eof()); 181 EXPECT_TRUE(data()->at_read_eof());
186 EXPECT_TRUE(data()->at_write_eof()); 182 EXPECT_TRUE(data()->at_write_eof());
187 } 183 }
188 184
189 // Test case for bug: http://code.google.com/p/chromium/issues/detail?id=50058 185 // Test case for bug: http://code.google.com/p/chromium/issues/detail?id=50058
190 TEST_F(SpdyHttpStreamSpdy3Test, SpdyURLTest) { 186 TEST_F(SpdyHttpStreamSpdy3Test, SpdyURLTest) {
191 EnableCompression(false);
192
193 const char * const full_url = "http://www.google.com/foo?query=what#anchor"; 187 const char * const full_url = "http://www.google.com/foo?query=what#anchor";
194 const char * const base_url = "http://www.google.com/foo?query=what"; 188 const char * const base_url = "http://www.google.com/foo?query=what";
195 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(base_url, false, 1, LOWEST)); 189 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(base_url, false, 1, LOWEST));
196 MockWrite writes[] = { 190 MockWrite writes[] = {
197 CreateMockWrite(*req.get(), 1), 191 CreateMockWrite(*req.get(), 1),
198 }; 192 };
199 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 193 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
200 MockRead reads[] = { 194 MockRead reads[] = {
201 CreateMockRead(*resp, 2), 195 CreateMockRead(*resp, 2),
202 MockRead(SYNCHRONOUS, 0, 3) // EOF 196 MockRead(SYNCHRONOUS, 0, 3) // EOF
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 // guard can be removed 284 // guard can be removed
291 #if !defined(USE_OPENSSL) 285 #if !defined(USE_OPENSSL)
292 // Test that if we request a resource for a new origin on a session that 286 // Test that if we request a resource for a new origin on a session that
293 // used domain bound certificates, that we send a CREDENTIAL frame for 287 // used domain bound certificates, that we send a CREDENTIAL frame for
294 // the new domain before we send the new request. 288 // the new domain before we send the new request.
295 void SpdyHttpStreamSpdy3Test::TestSendCredentials( 289 void SpdyHttpStreamSpdy3Test::TestSendCredentials(
296 ServerBoundCertService* server_bound_cert_service, 290 ServerBoundCertService* server_bound_cert_service,
297 const std::string& cert, 291 const std::string& cert,
298 const std::string& proof, 292 const std::string& proof,
299 SSLClientCertType type) { 293 SSLClientCertType type) {
300 EnableCompression(false);
301
302 spdy::SpdyCredential cred; 294 spdy::SpdyCredential cred;
303 cred.slot = 1; 295 cred.slot = 1;
304 cred.proof = proof; 296 cred.proof = proof;
305 cred.certs.push_back(cert); 297 cred.certs.push_back(cert);
306 298
307 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 299 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
308 scoped_ptr<spdy::SpdyFrame> credential(ConstructSpdyCredential(cred)); 300 scoped_ptr<spdy::SpdyFrame> credential(ConstructSpdyCredential(cred));
309 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet("http://www.gmail.com", 301 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet("http://www.gmail.com",
310 false, 3, LOWEST)); 302 false, 3, LOWEST));
311 MockWrite writes[] = { 303 MockWrite writes[] = {
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 TestSendCredentials(server_bound_cert_service.get(), cert, proof, 460 TestSendCredentials(server_bound_cert_service.get(), cert, proof,
469 CLIENT_CERT_ECDSA_SIGN); 461 CLIENT_CERT_ECDSA_SIGN);
470 } 462 }
471 463
472 #endif // !defined(USE_OPENSSL) 464 #endif // !defined(USE_OPENSSL)
473 465
474 // TODO(willchan): Write a longer test for SpdyStream that exercises all 466 // TODO(willchan): Write a longer test for SpdyStream that exercises all
475 // methods. 467 // methods.
476 468
477 } // namespace net 469 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_http_stream_spdy2_unittest.cc ('k') | net/spdy/spdy_network_transaction_spdy21_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698