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

Side by Side Diff: net/tools/quic/end_to_end_test.cc

Issue 131743009: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use size_t instead of int to fix win_x64 compile error Created 6 years, 11 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/test_tools/simple_quic_framer.h ('k') | net/tools/quic/quic_client.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 <stddef.h> 5 #include <stddef.h>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
10 #include "base/memory/singleton.h" 11 #include "base/memory/singleton.h"
11 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
12 #include "base/synchronization/waitable_event.h" 13 #include "base/synchronization/waitable_event.h"
13 #include "net/base/ip_endpoint.h" 14 #include "net/base/ip_endpoint.h"
14 #include "net/quic/congestion_control/tcp_cubic_sender.h" 15 #include "net/quic/congestion_control/tcp_cubic_sender.h"
15 #include "net/quic/crypto/aes_128_gcm_12_encrypter.h" 16 #include "net/quic/crypto/aes_128_gcm_12_encrypter.h"
16 #include "net/quic/crypto/null_encrypter.h" 17 #include "net/quic/crypto/null_encrypter.h"
17 #include "net/quic/quic_framer.h" 18 #include "net/quic/quic_framer.h"
18 #include "net/quic/quic_packet_creator.h" 19 #include "net/quic/quic_packet_creator.h"
19 #include "net/quic/quic_protocol.h" 20 #include "net/quic/quic_protocol.h"
20 #include "net/quic/quic_sent_packet_manager.h" 21 #include "net/quic/quic_sent_packet_manager.h"
21 #include "net/quic/test_tools/quic_connection_peer.h" 22 #include "net/quic/test_tools/quic_connection_peer.h"
22 #include "net/quic/test_tools/quic_session_peer.h" 23 #include "net/quic/test_tools/quic_session_peer.h"
23 #include "net/quic/test_tools/quic_test_utils.h" 24 #include "net/quic/test_tools/quic_test_utils.h"
24 #include "net/quic/test_tools/quic_test_writer.h"
25 #include "net/quic/test_tools/reliable_quic_stream_peer.h" 25 #include "net/quic/test_tools/reliable_quic_stream_peer.h"
26 #include "net/tools/quic/quic_epoll_connection_helper.h" 26 #include "net/tools/quic/quic_epoll_connection_helper.h"
27 #include "net/tools/quic/quic_in_memory_cache.h" 27 #include "net/tools/quic/quic_in_memory_cache.h"
28 #include "net/tools/quic/quic_packet_writer_wrapper.h"
28 #include "net/tools/quic/quic_server.h" 29 #include "net/tools/quic/quic_server.h"
29 #include "net/tools/quic/quic_socket_utils.h" 30 #include "net/tools/quic/quic_socket_utils.h"
30 #include "net/tools/quic/quic_spdy_client_stream.h" 31 #include "net/tools/quic/quic_spdy_client_stream.h"
31 #include "net/tools/quic/test_tools/http_message_test_utils.h" 32 #include "net/tools/quic/test_tools/http_message_test_utils.h"
32 #include "net/tools/quic/test_tools/packet_dropping_test_writer.h" 33 #include "net/tools/quic/test_tools/packet_dropping_test_writer.h"
33 #include "net/tools/quic/test_tools/quic_client_peer.h" 34 #include "net/tools/quic/test_tools/quic_client_peer.h"
34 #include "net/tools/quic/test_tools/quic_dispatcher_peer.h" 35 #include "net/tools/quic/test_tools/quic_dispatcher_peer.h"
35 #include "net/tools/quic/test_tools/quic_in_memory_cache_peer.h" 36 #include "net/tools/quic/test_tools/quic_in_memory_cache_peer.h"
36 #include "net/tools/quic/test_tools/quic_server_peer.h" 37 #include "net/tools/quic/test_tools/quic_server_peer.h"
37 #include "net/tools/quic/test_tools/quic_test_client.h" 38 #include "net/tools/quic/test_tools/quic_test_client.h"
38 #include "net/tools/quic/test_tools/server_thread.h" 39 #include "net/tools/quic/test_tools/server_thread.h"
39 #include "testing/gtest/include/gtest/gtest.h" 40 #include "testing/gtest/include/gtest/gtest.h"
40 41
41 using base::StringPiece; 42 using base::StringPiece;
42 using base::WaitableEvent; 43 using base::WaitableEvent;
43 using net::test::QuicConnectionPeer; 44 using net::test::QuicConnectionPeer;
44 using net::test::QuicSessionPeer; 45 using net::test::QuicSessionPeer;
45 using net::test::QuicTestWriter;
46 using net::test::ReliableQuicStreamPeer; 46 using net::test::ReliableQuicStreamPeer;
47 using net::tools::test::PacketDroppingTestWriter; 47 using net::tools::test::PacketDroppingTestWriter;
48 using net::tools::test::QuicDispatcherPeer; 48 using net::tools::test::QuicDispatcherPeer;
49 using net::tools::test::QuicServerPeer; 49 using net::tools::test::QuicServerPeer;
50 using std::ostream; 50 using std::ostream;
51 using std::string; 51 using std::string;
52 using std::vector; 52 using std::vector;
53 53
54 namespace net { 54 namespace net {
55 namespace tools { 55 namespace tools {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 AddToCache("GET", "https://www.google.com/bar", 172 AddToCache("GET", "https://www.google.com/bar",
173 "HTTP/1.1", "200", "OK", kBarResponseBody); 173 "HTTP/1.1", "200", "OK", kBarResponseBody);
174 } 174 }
175 175
176 virtual ~EndToEndTest() { 176 virtual ~EndToEndTest() {
177 // TODO(rtenneti): port RecycleUnusedPort if needed. 177 // TODO(rtenneti): port RecycleUnusedPort if needed.
178 // RecycleUnusedPort(server_address_.port()); 178 // RecycleUnusedPort(server_address_.port());
179 QuicInMemoryCachePeer::ResetForTests(); 179 QuicInMemoryCachePeer::ResetForTests();
180 } 180 }
181 181
182 virtual QuicTestClient* CreateQuicClient(QuicTestWriter* writer) { 182 virtual QuicTestClient* CreateQuicClient(QuicPacketWriterWrapper* writer) {
183 QuicTestClient* client = new QuicTestClient(server_address_, 183 QuicTestClient* client = new QuicTestClient(server_address_,
184 server_hostname_, 184 server_hostname_,
185 false, // not secure 185 false, // not secure
186 client_config_, 186 client_config_,
187 client_supported_versions_); 187 client_supported_versions_);
188 client->UseWriter(writer); 188 client->UseWriter(writer);
189 client->Connect(); 189 client->Connect();
190 return client; 190 return client;
191 } 191 }
192 192
193 virtual bool Initialize() { 193 virtual bool Initialize() {
194 // Start the server first, because CreateQuicClient() attempts 194 // Start the server first, because CreateQuicClient() attempts
195 // to connect to the server. 195 // to connect to the server.
196 StartServer(); 196 StartServer();
197 client_.reset(CreateQuicClient(client_writer_)); 197 client_.reset(CreateQuicClient(client_writer_));
198 QuicEpollConnectionHelper* helper = 198 QuicEpollConnectionHelper* helper =
199 reinterpret_cast<QuicEpollConnectionHelper*>( 199 reinterpret_cast<QuicEpollConnectionHelper*>(
200 QuicConnectionPeer::GetHelper( 200 QuicConnectionPeer::GetHelper(
201 client_->client()->session()->connection())); 201 client_->client()->session()->connection()));
202 client_writer_->SetConnectionHelper(helper); 202 client_writer_->SetConnectionHelper(helper);
203 return client_->client()->connected(); 203 return client_->client()->connected();
204 } 204 }
205 205
206 virtual void SetUp() { 206 virtual void SetUp() {
207 // The ownership of these gets transferred to the QuicTestWriter and 207 // The ownership of these gets transferred to the QuicPacketWriterWrapper
208 // QuicDispatcher when Initialize() is executed. 208 // and QuicDispatcher when Initialize() is executed.
209 client_writer_ = new PacketDroppingTestWriter(); 209 client_writer_ = new PacketDroppingTestWriter();
210 server_writer_ = new PacketDroppingTestWriter(); 210 server_writer_ = new PacketDroppingTestWriter();
211 } 211 }
212 212
213 virtual void TearDown() { 213 virtual void TearDown() {
214 StopServer(); 214 StopServer();
215 } 215 }
216 216
217 void StartServer() { 217 void StartServer() {
218 server_thread_.reset(new ServerThread(server_address_, server_config_, 218 server_thread_.reset(new ServerThread(server_address_, server_config_,
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 // received for that stream. 809 // received for that stream.
810 EXPECT_EQ(QUIC_NO_ERROR, client_->connection_error()); 810 EXPECT_EQ(QUIC_NO_ERROR, client_->connection_error());
811 } else { 811 } else {
812 // Check that the connection is always properly closed 812 // Check that the connection is always properly closed
813 // from a stream being RST before headers are decompressed. 813 // from a stream being RST before headers are decompressed.
814 EXPECT_EQ(QUIC_STREAM_RST_BEFORE_HEADERS_DECOMPRESSED, 814 EXPECT_EQ(QUIC_STREAM_RST_BEFORE_HEADERS_DECOMPRESSED,
815 client_->connection_error()); 815 client_->connection_error());
816 } 816 }
817 } 817 }
818 818
819 class WrongAddressWriter : public QuicTestWriter { 819 class WrongAddressWriter : public QuicPacketWriterWrapper {
820 public: 820 public:
821 WrongAddressWriter() { 821 WrongAddressWriter() {
822 IPAddressNumber ip; 822 IPAddressNumber ip;
823 CHECK(net::ParseIPLiteralToNumber("127.0.0.2", &ip)); 823 CHECK(net::ParseIPLiteralToNumber("127.0.0.2", &ip));
824 self_address_ = IPEndPoint(ip, 0); 824 self_address_ = IPEndPoint(ip, 0);
825 } 825 }
826 826
827 virtual WriteResult WritePacket( 827 virtual WriteResult WritePacket(
828 const char* buffer, size_t buf_len, 828 const char* buffer,
829 size_t buf_len,
829 const IPAddressNumber& real_self_address, 830 const IPAddressNumber& real_self_address,
830 const IPEndPoint& peer_address, 831 const IPEndPoint& peer_address,
831 QuicBlockedWriterInterface* blocked_writer) OVERRIDE { 832 QuicBlockedWriterInterface* blocked_writer) OVERRIDE {
832 return writer()->WritePacket(buffer, buf_len, self_address_.address(), 833 // Use wrong address!
833 peer_address, blocked_writer); 834 return QuicPacketWriterWrapper::WritePacket(
835 buffer, buf_len, self_address_.address(), peer_address, blocked_writer);
834 } 836 }
835 837
836 virtual bool IsWriteBlockedDataBuffered() const OVERRIDE { 838 virtual bool IsWriteBlockedDataBuffered() const OVERRIDE {
837 return false; 839 return false;
838 } 840 }
839 841
840 IPEndPoint self_address_; 842 IPEndPoint self_address_;
841 }; 843 };
842 844
843 TEST_P(EndToEndTest, ConnectionMigration) { 845 TEST_P(EndToEndTest, ConnectionMigration) {
(...skipping 12 matching lines...) Expand all
856 client_->SendSynchronousRequest("/bar"); 858 client_->SendSynchronousRequest("/bar");
857 859
858 EXPECT_EQ(QUIC_STREAM_CONNECTION_ERROR, client_->stream_error()); 860 EXPECT_EQ(QUIC_STREAM_CONNECTION_ERROR, client_->stream_error());
859 EXPECT_EQ(QUIC_ERROR_MIGRATING_ADDRESS, client_->connection_error()); 861 EXPECT_EQ(QUIC_ERROR_MIGRATING_ADDRESS, client_->connection_error());
860 } 862 }
861 863
862 } // namespace 864 } // namespace
863 } // namespace test 865 } // namespace test
864 } // namespace tools 866 } // namespace tools
865 } // namespace net 867 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/test_tools/simple_quic_framer.h ('k') | net/tools/quic/quic_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698