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

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

Issue 12334063: Land recent QUIC changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more EXPECT_FALSE Created 7 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/quic/quic_client_session.cc ('k') | net/quic/quic_clock.h » ('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 "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 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 EXPECT_TRUE(stream); 70 EXPECT_TRUE(stream);
71 streams.push_back(stream); 71 streams.push_back(stream);
72 } 72 }
73 EXPECT_FALSE(session_.CreateOutgoingReliableStream()); 73 EXPECT_FALSE(session_.CreateOutgoingReliableStream());
74 74
75 // Close a stream and ensure I can now open a new one. 75 // Close a stream and ensure I can now open a new one.
76 session_.CloseStream(streams[0]->id()); 76 session_.CloseStream(streams[0]->id());
77 EXPECT_TRUE(session_.CreateOutgoingReliableStream()); 77 EXPECT_TRUE(session_.CreateOutgoingReliableStream());
78 } 78 }
79 79
80 TEST_F(QuicClientSessionTest, GoAwayReceived) {
81 // Initialize crypto before the client session will create a stream.
82 ASSERT_TRUE(session_.CryptoConnect(callback_.callback()));
83 // Simulate the server crypto handshake.
84 CryptoHandshakeMessage server_message;
85 server_message.tag = kSHLO;
86 session_.GetCryptoStream()->OnHandshakeMessage(server_message);
87
88 // After receiving a GoAway, I should no longer be able to create outgoing
89 // streams.
90 session_.OnGoAway(QuicGoAwayFrame(QUIC_PEER_GOING_AWAY, 1u, "Going away."));
91 EXPECT_EQ(NULL, session_.CreateOutgoingReliableStream());
92 }
93
80 TEST_F(QuicClientSessionTest, Logging) { 94 TEST_F(QuicClientSessionTest, Logging) {
81 // Initialize crypto before the client session will create a stream. 95 // Initialize crypto before the client session will create a stream.
82 ASSERT_EQ(ERR_IO_PENDING, session_.CryptoConnect(callback_.callback())); 96 ASSERT_EQ(ERR_IO_PENDING, session_.CryptoConnect(callback_.callback()));
83 // Simulate the server crypto handshake. 97 // Simulate the server crypto handshake.
84 CryptoHandshakeMessage server_message; 98 CryptoHandshakeMessage server_message;
85 server_message.tag = kSHLO; 99 server_message.tag = kSHLO;
86 session_.GetCryptoStream()->OnHandshakeMessage(server_message); 100 session_.GetCryptoStream()->OnHandshakeMessage(server_message);
87 callback_.WaitForResult(); 101 callback_.WaitForResult();
88 102
89 // TODO(rch): Add some helper methods to simplify packet creation in tests. 103 // TODO(rch): Add some helper methods to simplify packet creation in tests.
90 // Receive a packet, and verify that it was logged. 104 // Receive a packet, and verify that it was logged.
91 QuicFramer framer(QuicDecrypter::Create(kNULL), QuicEncrypter::Create(kNULL)); 105 QuicFramer framer(QuicDecrypter::Create(kNULL), QuicEncrypter::Create(kNULL));
92 QuicRstStreamFrame frame; 106 QuicRstStreamFrame frame;
93 frame.stream_id = 2; 107 frame.stream_id = 2;
94 frame.offset = 7;
95 frame.error_code = QUIC_CONNECTION_TIMED_OUT; 108 frame.error_code = QUIC_CONNECTION_TIMED_OUT;
96 frame.error_details = "doh!"; 109 frame.error_details = "doh!";
97 110
98 QuicFrames frames; 111 QuicFrames frames;
99 frames.push_back(QuicFrame(&frame)); 112 frames.push_back(QuicFrame(&frame));
100 QuicPacketHeader header; 113 QuicPacketHeader header;
101 header.public_header.guid = 1; 114 header.public_header.guid = 1;
102 header.public_header.flags = PACKET_PUBLIC_FLAGS_NONE; 115 header.public_header.reset_flag = false;
116 header.public_header.version_flag = false;
103 header.packet_sequence_number = 1; 117 header.packet_sequence_number = 1;
104 header.private_flags = PACKET_PRIVATE_FLAGS_NONE; 118 header.entropy_flag = false;
119 header.fec_flag = false;
120 header.fec_entropy_flag = false;
105 header.fec_group = 0; 121 header.fec_group = 0;
106 scoped_ptr<QuicPacket> p(framer.ConstructFrameDataPacket(header, frames)); 122 scoped_ptr<QuicPacket> p(
107 scoped_ptr<QuicEncryptedPacket> packet(framer.EncryptPacket(*p)); 123 framer.ConstructFrameDataPacket(header, frames).packet);
124 scoped_ptr<QuicEncryptedPacket> packet(framer.EncryptPacket(1, *p));
108 IPAddressNumber ip; 125 IPAddressNumber ip;
109 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip)); 126 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip));
110 IPEndPoint peer_addr = IPEndPoint(ip, 443); 127 IPEndPoint peer_addr = IPEndPoint(ip, 443);
111 IPEndPoint self_addr = IPEndPoint(ip, 8435); 128 IPEndPoint self_addr = IPEndPoint(ip, 8435);
112 129
113 connection_->ProcessUdpPacketInternal(self_addr, peer_addr, *packet); 130 connection_->ProcessUdpPacketInternal(self_addr, peer_addr, *packet);
114 131
115 // Check that the NetLog was filled reasonably. 132 // Check that the NetLog was filled reasonably.
116 net::CapturingNetLog::CapturedEntryList entries; 133 net::CapturingNetLog::CapturedEntryList entries;
117 net_log_.GetEntries(&entries); 134 net_log_.GetEntries(&entries);
118 EXPECT_LT(0u, entries.size()); 135 EXPECT_LT(0u, entries.size());
119 136
120 // Check that we logged a QUIC_SESSION_PACKET_RECEIVED. 137 // Check that we logged a QUIC_SESSION_PACKET_RECEIVED.
121 int pos = net::ExpectLogContainsSomewhere( 138 int pos = net::ExpectLogContainsSomewhere(
122 entries, 0, 139 entries, 0,
123 net::NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED, 140 net::NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED,
124 net::NetLog::PHASE_NONE); 141 net::NetLog::PHASE_NONE);
125 EXPECT_LT(0, pos); 142 EXPECT_LT(0, pos);
126 143
127 // ... and also a QUIC_SESSION_RST_STREAM_FRAME_RECEIVED. 144 // ... and also a QUIC_SESSION_RST_STREAM_FRAME_RECEIVED.
128 pos = net::ExpectLogContainsSomewhere( 145 pos = net::ExpectLogContainsSomewhere(
129 entries, 0, 146 entries, 0,
130 net::NetLog::TYPE_QUIC_SESSION_RST_STREAM_FRAME_RECEIVED, 147 net::NetLog::TYPE_QUIC_SESSION_RST_STREAM_FRAME_RECEIVED,
131 net::NetLog::PHASE_NONE); 148 net::NetLog::PHASE_NONE);
132 EXPECT_LT(0, pos); 149 EXPECT_LT(0, pos);
133 150
134 int stream_id; 151 int stream_id;
135 ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &stream_id)); 152 ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &stream_id));
136 EXPECT_EQ(frame.stream_id, static_cast<QuicStreamId>(stream_id)); 153 EXPECT_EQ(frame.stream_id, static_cast<QuicStreamId>(stream_id));
137 int offset;
138 ASSERT_TRUE(entries[pos].GetIntegerValue("offset", &offset));
139 EXPECT_EQ(frame.offset, static_cast<QuicStreamOffset>(offset));
140 int error_code; 154 int error_code;
141 ASSERT_TRUE(entries[pos].GetIntegerValue("error_code", &error_code)); 155 ASSERT_TRUE(entries[pos].GetIntegerValue("error_code", &error_code));
142 EXPECT_EQ(frame.error_code, static_cast<QuicErrorCode>(error_code)); 156 EXPECT_EQ(frame.error_code, static_cast<QuicErrorCode>(error_code));
143 std::string details; 157 std::string details;
144 ASSERT_TRUE(entries[pos].GetStringValue("details", &details)); 158 ASSERT_TRUE(entries[pos].GetStringValue("details", &details));
145 EXPECT_EQ(frame.error_details, details); 159 EXPECT_EQ(frame.error_details, details);
146 } 160 }
147 161
148 } // namespace 162 } // namespace
149 } // namespace test 163 } // namespace test
150 } // namespace net 164 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_client_session.cc ('k') | net/quic/quic_clock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698