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

Unified Diff: net/tools/quic/end_to_end_test.cc

Issue 15074007: Land Recent QUIC changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix for windows 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/socket/socket_test_util.cc ('k') | net/tools/quic/quic_client.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/quic/end_to_end_test.cc
diff --git a/net/tools/quic/end_to_end_test.cc b/net/tools/quic/end_to_end_test.cc
index c03f9d842b959c9118b306a9ca20dc828a3d2f2e..01e91816d857d5b3d24d6f14c90ba23d561fbe7c 100644
--- a/net/tools/quic/end_to_end_test.cc
+++ b/net/tools/quic/end_to_end_test.cc
@@ -17,16 +17,22 @@
#include "net/quic/quic_framer.h"
#include "net/quic/quic_packet_creator.h"
#include "net/quic/quic_protocol.h"
+#include "net/quic/test_tools/quic_connection_peer.h"
#include "net/quic/test_tools/quic_session_peer.h"
#include "net/quic/test_tools/reliable_quic_stream_peer.h"
+#include "net/tools/quic/quic_epoll_connection_helper.h"
#include "net/tools/quic/quic_in_memory_cache.h"
#include "net/tools/quic/quic_server.h"
+#include "net/tools/quic/quic_socket_utils.h"
#include "net/tools/quic/test_tools/http_message_test_utils.h"
+#include "net/tools/quic/test_tools/quic_client_peer.h"
+#include "net/tools/quic/test_tools/quic_epoll_connection_helper_peer.h"
#include "net/tools/quic/test_tools/quic_test_client.h"
#include "testing/gtest/include/gtest/gtest.h"
using base::StringPiece;
using base::WaitableEvent;
+using net::test::QuicConnectionPeer;
using net::test::QuicSessionPeer;
using net::test::ReliableQuicStreamPeer;
using std::string;
@@ -209,7 +215,7 @@ TEST_F(EndToEndTest, SimpleRequestResponse) {
ASSERT_TRUE(Initialize());
EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo"));
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
}
TEST_F(EndToEndTest, SimpleRequestResponsev6) {
@@ -220,12 +226,12 @@ TEST_F(EndToEndTest, SimpleRequestResponsev6) {
}
IPAddressNumber ip;
- CHECK(net::ParseIPLiteralToNumber("::", &ip));
+ CHECK(net::ParseIPLiteralToNumber("::1", &ip));
server_address_ = IPEndPoint(ip, server_address_.port());
ASSERT_TRUE(Initialize());
EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo"));
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
}
TEST_F(EndToEndTest, SeparateFinPacket) {
@@ -247,7 +253,7 @@ TEST_F(EndToEndTest, SeparateFinPacket) {
client_->WaitForResponse();
EXPECT_EQ(kFooResponseBody, client_->response_body());
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
request.AddBody("foo", true);
@@ -255,7 +261,7 @@ TEST_F(EndToEndTest, SeparateFinPacket) {
client_->SendData(std::string(), true);
client_->WaitForResponse();
EXPECT_EQ(kFooResponseBody, client_->response_body());
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
}
TEST_F(EndToEndTest, MultipleRequestResponse) {
@@ -268,9 +274,9 @@ TEST_F(EndToEndTest, MultipleRequestResponse) {
ASSERT_TRUE(Initialize());
EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo"));
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
EXPECT_EQ(kBarResponseBody, client_->SendSynchronousRequest("/bar"));
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
}
TEST_F(EndToEndTest, MultipleClients) {
@@ -294,12 +300,12 @@ TEST_F(EndToEndTest, MultipleClients) {
client_->SendData("bar", true);
client_->WaitForResponse();
EXPECT_EQ(kFooResponseBody, client_->response_body());
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
client2->SendData("eep", true);
client2->WaitForResponse();
EXPECT_EQ(kFooResponseBody, client2->response_body());
- EXPECT_EQ(200ul, client2->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client2->response_headers()->parsed_response_code());
}
TEST_F(EndToEndTest, RequestOverMultiplePackets) {
@@ -329,7 +335,7 @@ TEST_F(EndToEndTest, RequestOverMultiplePackets) {
// Make sure our request is too large to fit in one packet.
EXPECT_GT(strlen(kLargeRequest), min_payload_size);
EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest(kLargeRequest));
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
}
TEST_F(EndToEndTest, MultipleFramesRandomOrder) {
@@ -360,7 +366,7 @@ TEST_F(EndToEndTest, MultipleFramesRandomOrder) {
// Make sure our request is too large to fit in one packet.
EXPECT_GT(strlen(kLargeRequest), min_payload_size);
EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest(kLargeRequest));
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
}
TEST_F(EndToEndTest, PostMissingBytes) {
@@ -382,7 +388,7 @@ TEST_F(EndToEndTest, PostMissingBytes) {
// triggering an error response.
client_->SendCustomSynchronousRequest(request);
EXPECT_EQ("bad", client_->response_body());
- EXPECT_EQ(500ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(500u, client_->response_headers()->parsed_response_code());
}
TEST_F(EndToEndTest, LargePost) {
@@ -460,7 +466,7 @@ TEST_F(EndToEndTest, InvalidStream) {
request.AddBody(body, true);
// Force the client to write with a stream ID belonging to a nonexistant
// server-side stream.
- QuicSessionPeer::SetNextStreamId(2, client_->client()->session());
+ QuicSessionPeer::SetNextStreamId(client_->client()->session(), 2);
client_->SendCustomSynchronousRequest(request);
// EXPECT_EQ(QUIC_STREAM_CONNECTION_ERROR, client_->stream_error());
@@ -505,6 +511,7 @@ TEST_F(EndToEndTest, MultipleTermination) {
/*TEST_F(EndToEndTest, Timeout) {
config_.set_idle_connection_state_lifetime(
+ QuicTime::Delta::FromMicroseconds(500),
QuicTime::Delta::FromMicroseconds(500));
// Note: we do NOT ASSERT_TRUE: we may time out during initial handshake:
// that's enough to validate timeout in this case.
@@ -524,10 +531,58 @@ TEST_F(EndToEndTest, ResetConnection) {
ASSERT_TRUE(Initialize());
EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo"));
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
client_->ResetConnection();
EXPECT_EQ(kBarResponseBody, client_->SendSynchronousRequest("/bar"));
- EXPECT_EQ(200ul, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
+}
+
+class WrongAddressWriter : public QuicPacketWriter {
+ public:
+ explicit WrongAddressWriter(int fd) : fd_(fd) {
+ IPAddressNumber ip;
+ CHECK(net::ParseIPLiteralToNumber("127.0.0.2", &ip));
+ self_address_ = IPEndPoint(ip, 0);
+ }
+
+ virtual int WritePacket(const char* buffer, size_t buf_len,
+ const IPAddressNumber& real_self_address,
+ const IPEndPoint& peer_address,
+ QuicBlockedWriterInterface* blocked_writer,
+ int* error) OVERRIDE {
+ return QuicSocketUtils::WritePacket(fd_, buffer, buf_len,
+ self_address_.address(), peer_address,
+ error);
+ }
+
+ IPEndPoint self_address_;
+ int fd_;
+};
+
+TEST_F(EndToEndTest, ConnectionMigration) {
+ // TODO(rtenneti): Delete this when NSS is supported.
+ if (!Aes128GcmEncrypter::IsSupported()) {
+ LOG(INFO) << "AES GCM not supported. Test skipped.";
+ return;
+ }
+
+ ASSERT_TRUE(Initialize());
+
+ EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo"));
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
+
+ WrongAddressWriter writer(QuicClientPeer::GetFd(client_->client()));
+ QuicEpollConnectionHelper* helper =
+ reinterpret_cast<QuicEpollConnectionHelper*>(
+ QuicConnectionPeer::GetHelper(
+ client_->client()->session()->connection()));
+ QuicEpollConnectionHelperPeer::SetWriter(helper, &writer);
+
+ client_->SendSynchronousRequest("/bar");
+ QuicEpollConnectionHelperPeer::SetWriter(helper, NULL);
+
+ EXPECT_EQ(QUIC_STREAM_CONNECTION_ERROR, client_->stream_error());
+ EXPECT_EQ(QUIC_ERROR_MIGRATING_ADDRESS, client_->connection_error());
}
} // namespace
« no previous file with comments | « net/socket/socket_test_util.cc ('k') | net/tools/quic/quic_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698