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

Unified Diff: net/quic/crypto/quic_crypto_server_config_test.cc

Issue 1811043002: Landing Recent QUIC changes until 2016-03-15 16:26 UTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add an export clause. Created 4 years, 9 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/quic/crypto/quic_crypto_server_config.cc ('k') | net/quic/quic_bandwidth.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/crypto/quic_crypto_server_config_test.cc
diff --git a/net/quic/crypto/quic_crypto_server_config_test.cc b/net/quic/crypto/quic_crypto_server_config_test.cc
index 0585a1930d229912187c31db2a47917641815f63..1578bd96eec7507ebbfe17689f8204d3f7e678f3 100644
--- a/net/quic/crypto/quic_crypto_server_config_test.cc
+++ b/net/quic/crypto/quic_crypto_server_config_test.cc
@@ -8,6 +8,7 @@
#include "base/stl_util.h"
#include "net/quic/crypto/aes_128_gcm_12_encrypter.h"
+#include "net/quic/crypto/cert_compressor.h"
#include "net/quic/crypto/crypto_handshake_message.h"
#include "net/quic/crypto/crypto_secret_boxer.h"
#include "net/quic/crypto/crypto_server_config_protobuf.h"
@@ -181,6 +182,16 @@ class QuicCryptoServerConfigPeer {
QuicWallTime::FromUNIXSeconds(seconds));
}
+ const string CompressChain(QuicCompressedCertsCache* compressed_certs_cache,
+ const scoped_refptr<ProofSource::Chain>& chain,
+ const string& client_common_set_hashes,
+ const string& client_cached_cert_hashes,
+ const CommonCertSets* common_sets) {
+ return server_config_->CompressChain(
+ compressed_certs_cache, chain, client_common_set_hashes,
+ client_cached_cert_hashes, common_sets);
+ }
+
private:
const QuicCryptoServerConfig* server_config_;
};
@@ -271,6 +282,103 @@ TEST(QuicCryptoServerConfigTest, GetOrbitIsCalledWithoutTheStrikeRegisterLock) {
EXPECT_TRUE(strike_register->is_known_orbit_called());
}
+TEST(QuicCryptoServerConfigTest, CompressCerts) {
+ QuicCompressedCertsCache compressed_certs_cache(
+ QuicCompressedCertsCache::kQuicCompressedCertsCacheSize);
+
+ QuicRandom* rand = QuicRandom::GetInstance();
+ QuicCryptoServerConfig server(QuicCryptoServerConfig::TESTING, rand,
+ CryptoTestUtils::ProofSourceForTesting());
+ QuicCryptoServerConfigPeer peer(&server);
+
+ vector<string> certs = {"testcert"};
+ scoped_refptr<ProofSource::Chain> chain(new ProofSource::Chain(certs));
+
+ string compressed =
+ peer.CompressChain(&compressed_certs_cache, chain, "", "", nullptr);
+
+ if (FLAGS_quic_use_cached_compressed_certs) {
+ EXPECT_EQ(compressed_certs_cache.Size(), 1u);
+ } else {
+ EXPECT_EQ(compressed_certs_cache.Size(), 0u);
+ }
+}
+
+TEST(QuicCryptoServerConfigTest, CompressSameCertsTwice) {
+ QuicCompressedCertsCache compressed_certs_cache(
+ QuicCompressedCertsCache::kQuicCompressedCertsCacheSize);
+
+ QuicRandom* rand = QuicRandom::GetInstance();
+ QuicCryptoServerConfig server(QuicCryptoServerConfig::TESTING, rand,
+ CryptoTestUtils::ProofSourceForTesting());
+ QuicCryptoServerConfigPeer peer(&server);
+
+ // Compress the certs for the first time.
+ vector<string> certs = {"testcert"};
+ scoped_refptr<ProofSource::Chain> chain(new ProofSource::Chain(certs));
+ string common_certs = "";
+ string cached_certs = "";
+
+ string compressed = peer.CompressChain(&compressed_certs_cache, chain,
+ common_certs, cached_certs, nullptr);
+ if (FLAGS_quic_use_cached_compressed_certs) {
+ EXPECT_EQ(compressed_certs_cache.Size(), 1u);
+ }
+
+ // Compress the same certs, should use cache if available.
+ string compressed2 = peer.CompressChain(&compressed_certs_cache, chain,
+ common_certs, cached_certs, nullptr);
+ EXPECT_EQ(compressed, compressed2);
+ if (FLAGS_quic_use_cached_compressed_certs) {
+ EXPECT_EQ(compressed_certs_cache.Size(), 1u);
+ }
+}
+
+TEST(QuicCryptoServerConfigTest, CompressDifferentCerts) {
+ // This test compresses a set of similar but not identical certs. Cache if
+ // used should return cache miss and add all the compressed certs.
+ QuicCompressedCertsCache compressed_certs_cache(
+ QuicCompressedCertsCache::kQuicCompressedCertsCacheSize);
+
+ QuicRandom* rand = QuicRandom::GetInstance();
+ QuicCryptoServerConfig server(QuicCryptoServerConfig::TESTING, rand,
+ CryptoTestUtils::ProofSourceForTesting());
+ QuicCryptoServerConfigPeer peer(&server);
+
+ vector<string> certs = {"testcert"};
+ scoped_refptr<ProofSource::Chain> chain(new ProofSource::Chain(certs));
+ string common_certs = "";
+ string cached_certs = "";
+
+ string compressed = peer.CompressChain(&compressed_certs_cache, chain,
+ common_certs, cached_certs, nullptr);
+ if (FLAGS_quic_use_cached_compressed_certs) {
+ EXPECT_EQ(compressed_certs_cache.Size(), 1u);
+ }
+
+ // Compress a similar certs which only differs in the chain.
+ scoped_refptr<ProofSource::Chain> chain2(new ProofSource::Chain(certs));
+
+ string compressed2 = peer.CompressChain(&compressed_certs_cache, chain2,
+ common_certs, cached_certs, nullptr);
+ if (FLAGS_quic_use_cached_compressed_certs) {
+ EXPECT_EQ(compressed_certs_cache.Size(), 2u);
+ }
+
+ // Compress a similar certs which only differs in common certs field.
+ static const uint64_t set_hash = 42;
+ scoped_ptr<CommonCertSets> common_sets(
+ CryptoTestUtils::MockCommonCertSets(certs[0], set_hash, 1));
+ StringPiece different_common_certs(reinterpret_cast<const char*>(&set_hash),
+ sizeof(set_hash));
+ string compressed3 = peer.CompressChain(&compressed_certs_cache, chain,
+ different_common_certs.as_string(),
+ cached_certs, common_sets.get());
+ if (FLAGS_quic_use_cached_compressed_certs) {
+ EXPECT_EQ(compressed_certs_cache.Size(), 3u);
+ }
+}
+
class SourceAddressTokenTest : public ::testing::Test {
public:
SourceAddressTokenTest()
« no previous file with comments | « net/quic/crypto/quic_crypto_server_config.cc ('k') | net/quic/quic_bandwidth.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698