OLD | NEW |
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 <sys/epoll.h> | 6 #include <sys/epoll.h> |
7 | 7 |
8 #include <cstdint> | 8 #include <cstdint> |
9 #include <list> | 9 #include <list> |
10 #include <memory> | 10 #include <memory> |
(...skipping 1304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1315 QuicDispatcher* dispatcher = | 1315 QuicDispatcher* dispatcher = |
1316 QuicServerPeer::GetDispatcher(server_thread_->server()); | 1316 QuicServerPeer::GetDispatcher(server_thread_->server()); |
1317 QuicSession* server_session = dispatcher->session_map().begin()->second.get(); | 1317 QuicSession* server_session = dispatcher->session_map().begin()->second.get(); |
1318 EXPECT_EQ(kClientMaxIncomingDynamicStreams, | 1318 EXPECT_EQ(kClientMaxIncomingDynamicStreams, |
1319 server_session->max_open_outgoing_streams()); | 1319 server_session->max_open_outgoing_streams()); |
1320 server_thread_->Resume(); | 1320 server_thread_->Resume(); |
1321 } | 1321 } |
1322 | 1322 |
1323 TEST_P(EndToEndTest, NegotiateCongestionControl) { | 1323 TEST_P(EndToEndTest, NegotiateCongestionControl) { |
1324 FLAGS_quic_reloadable_flag_quic_allow_new_bbr = true; | 1324 FLAGS_quic_reloadable_flag_quic_allow_new_bbr = true; |
1325 // Disable this flag because if connection uses multipath sent packet manager, | |
1326 // static_cast here does not work. | |
1327 FLAGS_quic_reloadable_flag_quic_enable_multipath = false; | |
1328 ASSERT_TRUE(Initialize()); | 1325 ASSERT_TRUE(Initialize()); |
1329 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed()); | 1326 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed()); |
1330 | 1327 |
1331 CongestionControlType expected_congestion_control_type = kReno; | 1328 CongestionControlType expected_congestion_control_type = kReno; |
1332 switch (GetParam().congestion_control_tag) { | 1329 switch (GetParam().congestion_control_tag) { |
1333 case kRENO: | 1330 case kRENO: |
1334 expected_congestion_control_type = kReno; | 1331 expected_congestion_control_type = kReno; |
1335 break; | 1332 break; |
1336 case kTBBR: | 1333 case kTBBR: |
1337 expected_congestion_control_type = kBBR; | 1334 expected_congestion_control_type = kBBR; |
(...skipping 860 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2198 // tear down the connection. | 2195 // tear down the connection. |
2199 TEST_P(EndToEndTest, BadEncryptedData) { | 2196 TEST_P(EndToEndTest, BadEncryptedData) { |
2200 ASSERT_TRUE(Initialize()); | 2197 ASSERT_TRUE(Initialize()); |
2201 | 2198 |
2202 // Start the connection. | 2199 // Start the connection. |
2203 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo")); | 2200 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo")); |
2204 EXPECT_EQ("200", client_->response_headers()->find(":status")->second); | 2201 EXPECT_EQ("200", client_->response_headers()->find(":status")->second); |
2205 | 2202 |
2206 std::unique_ptr<QuicEncryptedPacket> packet(ConstructEncryptedPacket( | 2203 std::unique_ptr<QuicEncryptedPacket> packet(ConstructEncryptedPacket( |
2207 client_->client()->session()->connection()->connection_id(), false, false, | 2204 client_->client()->session()->connection()->connection_id(), false, false, |
2208 false, 1, "At least 20 characters.", PACKET_8BYTE_CONNECTION_ID, | 2205 1, "At least 20 characters.", PACKET_8BYTE_CONNECTION_ID, |
2209 PACKET_6BYTE_PACKET_NUMBER)); | 2206 PACKET_6BYTE_PACKET_NUMBER)); |
2210 // Damage the encrypted data. | 2207 // Damage the encrypted data. |
2211 string damaged_packet(packet->data(), packet->length()); | 2208 string damaged_packet(packet->data(), packet->length()); |
2212 damaged_packet[30] ^= 0x01; | 2209 damaged_packet[30] ^= 0x01; |
2213 QUIC_DLOG(INFO) << "Sending bad packet."; | 2210 QUIC_DLOG(INFO) << "Sending bad packet."; |
2214 client_writer_->WritePacket( | 2211 client_writer_->WritePacket( |
2215 damaged_packet.data(), damaged_packet.length(), | 2212 damaged_packet.data(), damaged_packet.length(), |
2216 client_->client()->GetLatestClientAddress().host(), server_address_, | 2213 client_->client()->GetLatestClientAddress().host(), server_address_, |
2217 nullptr); | 2214 nullptr); |
2218 // Give the server time to process the packet. | 2215 // Give the server time to process the packet. |
(...skipping 783 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3002 // Tests that when client side has no active request and no waiting | 2999 // Tests that when client side has no active request and no waiting |
3003 // PUSH_PROMISE, its headers stream's sequencer buffer should be released. | 3000 // PUSH_PROMISE, its headers stream's sequencer buffer should be released. |
3004 ASSERT_TRUE(Initialize()); | 3001 ASSERT_TRUE(Initialize()); |
3005 client_->SendSynchronousRequest("/foo"); | 3002 client_->SendSynchronousRequest("/foo"); |
3006 QuicHeadersStream* headers_stream = | 3003 QuicHeadersStream* headers_stream = |
3007 QuicSpdySessionPeer::GetHeadersStream(client_->client()->session()); | 3004 QuicSpdySessionPeer::GetHeadersStream(client_->client()->session()); |
3008 QuicStreamSequencer* sequencer = QuicStreamPeer::sequencer(headers_stream); | 3005 QuicStreamSequencer* sequencer = QuicStreamPeer::sequencer(headers_stream); |
3009 EXPECT_FALSE(QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer)); | 3006 EXPECT_FALSE(QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer)); |
3010 } | 3007 } |
3011 | 3008 |
| 3009 TEST_P(EndToEndTest, WayTooLongRequestHeaders) { |
| 3010 ASSERT_TRUE(Initialize()); |
| 3011 SpdyHeaderBlock headers; |
| 3012 headers[":method"] = "GET"; |
| 3013 headers[":path"] = "/foo"; |
| 3014 headers[":scheme"] = "https"; |
| 3015 headers[":authority"] = server_hostname_; |
| 3016 headers["key"] = string(64 * 1024, 'a'); |
| 3017 |
| 3018 client_->SendMessage(headers, ""); |
| 3019 client_->WaitForResponse(); |
| 3020 EXPECT_EQ(QUIC_HEADERS_STREAM_DATA_DECOMPRESS_FAILURE, |
| 3021 client_->connection_error()); |
| 3022 } |
| 3023 |
3012 class EndToEndBufferedPacketsTest : public EndToEndTest { | 3024 class EndToEndBufferedPacketsTest : public EndToEndTest { |
3013 public: | 3025 public: |
3014 void CreateClientWithWriter() override { | 3026 void CreateClientWithWriter() override { |
3015 QUIC_LOG(ERROR) << "create client with reorder_writer_ "; | 3027 QUIC_LOG(ERROR) << "create client with reorder_writer_ "; |
3016 reorder_writer_ = new PacketReorderingWriter(); | 3028 reorder_writer_ = new PacketReorderingWriter(); |
3017 client_.reset(EndToEndTest::CreateQuicClient(reorder_writer_)); | 3029 client_.reset(EndToEndTest::CreateQuicClient(reorder_writer_)); |
3018 } | 3030 } |
3019 | 3031 |
3020 void SetUp() override { | 3032 void SetUp() override { |
3021 // Don't initialize client writer in base class. | 3033 // Don't initialize client writer in base class. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3056 client_->WaitForResponse(); | 3068 client_->WaitForResponse(); |
3057 EXPECT_EQ(kBarResponseBody, client_->response_body()); | 3069 EXPECT_EQ(kBarResponseBody, client_->response_body()); |
3058 QuicConnectionStats client_stats = | 3070 QuicConnectionStats client_stats = |
3059 client_->client()->session()->connection()->GetStats(); | 3071 client_->client()->session()->connection()->GetStats(); |
3060 EXPECT_EQ(0u, client_stats.packets_lost); | 3072 EXPECT_EQ(0u, client_stats.packets_lost); |
3061 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos()); | 3073 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos()); |
3062 } | 3074 } |
3063 } // namespace | 3075 } // namespace |
3064 } // namespace test | 3076 } // namespace test |
3065 } // namespace net | 3077 } // namespace net |
OLD | NEW |