summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-18 15:51:33 +0000
committerrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-18 15:51:33 +0000
commitdfd0e449b5434719ec5225140624768644c5a9cb (patch)
tree001625b0ad53724c4812609369828e87a9acce9b
parent32f7fc18bff0c197df57e70c081539be4bea6771 (diff)
downloadchromium_src-dfd0e449b5434719ec5225140624768644c5a9cb.zip
chromium_src-dfd0e449b5434719ec5225140624768644c5a9cb.tar.gz
chromium_src-dfd0e449b5434719ec5225140624768644c5a9cb.tar.bz2
QUIC - Added unit test for IsDataReady to verify that it returns false
if there is a pending write. IsDataReady is called before we save the server config to disk cache. BUG=362800 R=rch@chromium.org Review URL: https://codereview.chromium.org/200793003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257647 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--net/http/disk_cache_based_quic_server_info_unittest.cc57
1 files changed, 57 insertions, 0 deletions
diff --git a/net/http/disk_cache_based_quic_server_info_unittest.cc b/net/http/disk_cache_based_quic_server_info_unittest.cc
index 4de10a5..366f73b 100644
--- a/net/http/disk_cache_based_quic_server_info_unittest.cc
+++ b/net/http/disk_cache_based_quic_server_info_unittest.cc
@@ -220,4 +220,61 @@ TEST(DiskCacheBasedQuicServerInfo, UpdateDifferentPorts) {
RemoveMockTransaction(&kHostInfoTransaction1);
}
+// Test IsDataReady when there is a pending write.
+TEST(DiskCacheBasedQuicServerInfo, IsDataReady) {
+ MockHttpCache cache;
+ AddMockTransaction(&kHostInfoTransaction1);
+ net::TestCompletionCallback callback;
+
+ net::QuicSessionKey server_key("www.google.com", 443, true);
+ scoped_ptr<net::QuicServerInfo> quic_server_info(
+ new net::DiskCacheBasedQuicServerInfo(server_key, cache.http_cache()));
+ quic_server_info->Start();
+ EXPECT_TRUE(quic_server_info->IsDataReady());
+ int rv = quic_server_info->WaitForDataReady(callback.callback());
+ EXPECT_TRUE(quic_server_info->IsDataReady());
+ EXPECT_EQ(net::OK, callback.GetResult(rv));
+
+ net::QuicServerInfo::State* state = quic_server_info->mutable_state();
+ EXPECT_TRUE(state->certs.empty());
+ const string server_config_a = "server_config_a";
+ const string source_address_token_a = "source_address_token_a";
+ const string server_config_sig_a = "server_config_sig_a";
+ const string cert_a = "cert_a";
+
+ state->server_config = server_config_a;
+ state->source_address_token = source_address_token_a;
+ state->server_config_sig = server_config_sig_a;
+ state->certs.push_back(cert_a);
+ EXPECT_TRUE(quic_server_info->IsDataReady());
+ quic_server_info->Persist();
+
+ // Once we call Persist, IsDataReady should return false until Persist has
+ // completed.
+ EXPECT_FALSE(quic_server_info->IsDataReady());
+
+ // Wait until Persist() does the work.
+ base::MessageLoop::current()->RunUntilIdle();
+
+ EXPECT_TRUE(quic_server_info->IsDataReady());
+
+ // Verify that the state was updated.
+ quic_server_info.reset(
+ new net::DiskCacheBasedQuicServerInfo(server_key, cache.http_cache()));
+ quic_server_info->Start();
+ rv = quic_server_info->WaitForDataReady(callback.callback());
+ EXPECT_EQ(net::OK, callback.GetResult(rv));
+ EXPECT_TRUE(quic_server_info->IsDataReady());
+
+ const net::QuicServerInfo::State& state1 = quic_server_info->state();
+ EXPECT_TRUE(quic_server_info->IsDataReady());
+ EXPECT_EQ(server_config_a, state1.server_config);
+ EXPECT_EQ(source_address_token_a, state1.source_address_token);
+ EXPECT_EQ(server_config_sig_a, state1.server_config_sig);
+ EXPECT_EQ(1U, state1.certs.size());
+ EXPECT_EQ(cert_a, state1.certs[0]);
+
+ RemoveMockTransaction(&kHostInfoTransaction1);
+}
+
} // namespace