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

Unified Diff: net/socket/ssl_client_socket_snapstart_unittest.cc

Issue 4854002: snap_start_tests: test NPN misprediction. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 10 years, 1 month 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 | « no previous file | net/test/openssl_helper.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/socket/ssl_client_socket_snapstart_unittest.cc
diff --git a/net/socket/ssl_client_socket_snapstart_unittest.cc b/net/socket/ssl_client_socket_snapstart_unittest.cc
index 25c2b1f30d6c0a1fa5fb2cad886731fa1ed331a2..e72521c8b70280d2c3b98ee73fad598d479ff018 100644
--- a/net/socket/ssl_client_socket_snapstart_unittest.cc
+++ b/net/socket/ssl_client_socket_snapstart_unittest.cc
@@ -225,6 +225,8 @@ class SSLClientSocketSnapStartTest : public PlatformTest {
EXPECT_EQ(8, rv);
EXPECT_TRUE(memcmp(reply_buffer->data(), "goodbye!", 8) == 0);
+ next_proto_status_ = sock->GetNextProto(&next_proto_);
+
sock->Disconnect();
}
@@ -265,6 +267,8 @@ class SSLClientSocketSnapStartTest : public PlatformTest {
int client_;
SSLConfig ssl_config_;
CapturingNetLog log_;
+ SSLClientSocket::NextProtoStatus next_proto_status_;
+ std::string next_proto_;
};
TEST_F(SSLClientSocketSnapStartTest, Basic) {
@@ -317,4 +321,45 @@ TEST_F(SSLClientSocketSnapStartTest, SnapStartResumeRecovery) {
EXPECT_TRUE(DidMerge());
}
+TEST_F(SSLClientSocketSnapStartTest, SnapStartWithNPN) {
+ ssl_config_.next_protos.assign("\003foo\003bar");
+ StartSnapStartServer("snap-start", "npn", NULL);
+ PerformConnection();
+ EXPECT_EQ(SSLClientSocket::kNextProtoNegotiated, next_proto_status_);
+ EXPECT_EQ("foo", next_proto_);
+ EXPECT_EQ(SSL_SNAP_START_NONE, SnapStartEventType());
+ EXPECT_FALSE(DidMerge());
+ SSLClientSocketNSS::ClearSessionCache();
+ PerformConnection();
+ EXPECT_EQ(SSL_SNAP_START_FULL, SnapStartEventType());
+ EXPECT_EQ(SSLClientSocket::kNextProtoNegotiated, next_proto_status_);
+ EXPECT_EQ("foo", next_proto_);
+ EXPECT_TRUE(DidMerge());
+}
+
+TEST_F(SSLClientSocketSnapStartTest, SnapStartWithNPNMispredict) {
+ // This tests that we recover in the event of a misprediction.
+ ssl_config_.next_protos.assign("\003foo\003baz");
+ StartSnapStartServer("snap-start", "npn-mispredict", NULL);
+ PerformConnection();
+ EXPECT_EQ(SSLClientSocket::kNextProtoNegotiated, next_proto_status_);
+ EXPECT_EQ("foo", next_proto_);
+ EXPECT_EQ(SSL_SNAP_START_NONE, SnapStartEventType());
+ EXPECT_FALSE(DidMerge());
+
+ SSLClientSocketNSS::ClearSessionCache();
+ PerformConnection();
+ EXPECT_EQ(SSL_SNAP_START_RECOVERY, SnapStartEventType());
+ EXPECT_EQ(SSLClientSocket::kNextProtoNegotiated, next_proto_status_);
+ EXPECT_EQ("baz", next_proto_);
+ EXPECT_TRUE(DidMerge());
+
+ SSLClientSocketNSS::ClearSessionCache();
+ PerformConnection();
+ EXPECT_EQ(SSL_SNAP_START_FULL, SnapStartEventType());
+ EXPECT_EQ(SSLClientSocket::kNextProtoNegotiated, next_proto_status_);
+ EXPECT_EQ("baz", next_proto_);
+ EXPECT_TRUE(DidMerge());
+}
+
} // namespace net
« no previous file with comments | « no previous file | net/test/openssl_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698