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

Side by Side Diff: net/quic/quic_client_session_test.cc

Issue 14083012: QUIC: retransmit packets with the correct encryption. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moved HandshakeMode enum to MockCryptoClientStream Created 7 years, 7 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/quic/quic_client_session.h" 5 #include "net/quic/quic_client_session.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "net/base/capturing_net_log.h" 10 #include "net/base/capturing_net_log.h"
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 streams.push_back(stream); 79 streams.push_back(stream);
80 } 80 }
81 EXPECT_FALSE(session_.CreateOutgoingReliableStream()); 81 EXPECT_FALSE(session_.CreateOutgoingReliableStream());
82 82
83 // Close a stream and ensure I can now open a new one. 83 // Close a stream and ensure I can now open a new one.
84 session_.CloseStream(streams[0]->id()); 84 session_.CloseStream(streams[0]->id());
85 EXPECT_TRUE(session_.CreateOutgoingReliableStream()); 85 EXPECT_TRUE(session_.CreateOutgoingReliableStream());
86 } 86 }
87 87
88 TEST_F(QuicClientSessionTest, GoAwayReceived) { 88 TEST_F(QuicClientSessionTest, GoAwayReceived) {
89 // Initialize crypto before the client session will create a stream. 89 if (!Aes128GcmEncrypter::IsSupported()) {
90 ASSERT_TRUE(session_.CryptoConnect(callback_.callback())); 90 LOG(INFO) << "AES GCM not supported. Test skipped.";
91 // Simulate the server crypto handshake. 91 return;
92 CryptoHandshakeMessage server_message; 92 }
93 server_message.set_tag(kSHLO); 93
94 session_.GetCryptoStream()->OnHandshakeMessage(server_message); 94 CompleteCryptoHandshake();
95 95
96 // After receiving a GoAway, I should no longer be able to create outgoing 96 // After receiving a GoAway, I should no longer be able to create outgoing
97 // streams. 97 // streams.
98 session_.OnGoAway(QuicGoAwayFrame(QUIC_PEER_GOING_AWAY, 1u, "Going away.")); 98 session_.OnGoAway(QuicGoAwayFrame(QUIC_PEER_GOING_AWAY, 1u, "Going away."));
99 EXPECT_EQ(NULL, session_.CreateOutgoingReliableStream()); 99 EXPECT_EQ(NULL, session_.CreateOutgoingReliableStream());
100 } 100 }
101 101
102 TEST_F(QuicClientSessionTest, Logging) { 102 TEST_F(QuicClientSessionTest, Logging) {
103 if (!Aes128GcmEncrypter::IsSupported()) { 103 if (!Aes128GcmEncrypter::IsSupported()) {
104 LOG(INFO) << "AES GCM not supported. Test skipped."; 104 LOG(INFO) << "AES GCM not supported. Test skipped.";
105 return; 105 return;
106 } 106 }
107 107
108 CompleteCryptoHandshake(); 108 CompleteCryptoHandshake();
109 109
110 // TODO(rch): Add some helper methods to simplify packet creation in tests. 110 // TODO(rch): Add some helper methods to simplify packet creation in tests.
111 // Receive a packet, and verify that it was logged. 111 // Receive a packet, and verify that it was logged.
112 QuicFramer framer(kQuicVersion1, 112 QuicFramer framer(kQuicVersion1, QuicTime::Zero(), false);
113 QuicDecrypter::Create(kNULL),
114 QuicEncrypter::Create(kNULL),
115 QuicTime::Zero(),
116 false);
117 QuicRstStreamFrame frame; 113 QuicRstStreamFrame frame;
118 frame.stream_id = 2; 114 frame.stream_id = 2;
119 frame.error_code = QUIC_STREAM_CONNECTION_ERROR; 115 frame.error_code = QUIC_STREAM_CONNECTION_ERROR;
120 frame.error_details = "doh!"; 116 frame.error_details = "doh!";
121 117
122 QuicFrames frames; 118 QuicFrames frames;
123 frames.push_back(QuicFrame(&frame)); 119 frames.push_back(QuicFrame(&frame));
124 QuicPacketHeader header; 120 QuicPacketHeader header;
125 header.public_header.guid = 1; 121 header.public_header.guid = 1;
126 header.public_header.reset_flag = false; 122 header.public_header.reset_flag = false;
127 header.public_header.version_flag = false; 123 header.public_header.version_flag = false;
128 header.packet_sequence_number = 1; 124 header.packet_sequence_number = 1;
129 header.entropy_flag = false; 125 header.entropy_flag = false;
130 header.fec_flag = false; 126 header.fec_flag = false;
131 header.fec_entropy_flag = false; 127 header.fec_entropy_flag = false;
132 header.fec_group = 0; 128 header.fec_group = 0;
133 scoped_ptr<QuicPacket> p( 129 scoped_ptr<QuicPacket> p(
134 framer.ConstructFrameDataPacket(header, frames).packet); 130 framer.ConstructFrameDataPacket(header, frames).packet);
135 scoped_ptr<QuicEncryptedPacket> packet(framer.EncryptPacket(1, *p)); 131 scoped_ptr<QuicEncryptedPacket> packet(framer.EncryptPacket(
132 ENCRYPTION_NONE, 1, *p));
136 IPAddressNumber ip; 133 IPAddressNumber ip;
137 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip)); 134 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip));
138 IPEndPoint peer_addr = IPEndPoint(ip, 443); 135 IPEndPoint peer_addr = IPEndPoint(ip, 443);
139 IPEndPoint self_addr = IPEndPoint(ip, 8435); 136 IPEndPoint self_addr = IPEndPoint(ip, 8435);
140 137
141 connection_->ProcessUdpPacketInternal(self_addr, peer_addr, *packet); 138 connection_->ProcessUdpPacketInternal(self_addr, peer_addr, *packet);
142 139
143 // Check that the NetLog was filled reasonably. 140 // Check that the NetLog was filled reasonably.
144 net::CapturingNetLog::CapturedEntryList entries; 141 net::CapturingNetLog::CapturedEntryList entries;
145 net_log_.GetEntries(&entries); 142 net_log_.GetEntries(&entries);
(...skipping 20 matching lines...) Expand all
166 ASSERT_TRUE(entries[pos].GetIntegerValue("error_code", &error_code)); 163 ASSERT_TRUE(entries[pos].GetIntegerValue("error_code", &error_code));
167 EXPECT_EQ(frame.error_code, static_cast<QuicRstStreamErrorCode>(error_code)); 164 EXPECT_EQ(frame.error_code, static_cast<QuicRstStreamErrorCode>(error_code));
168 std::string details; 165 std::string details;
169 ASSERT_TRUE(entries[pos].GetStringValue("details", &details)); 166 ASSERT_TRUE(entries[pos].GetStringValue("details", &details));
170 EXPECT_EQ(frame.error_details, details); 167 EXPECT_EQ(frame.error_details, details);
171 } 168 }
172 169
173 } // namespace 170 } // namespace
174 } // namespace test 171 } // namespace test
175 } // namespace net 172 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698