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

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

Issue 389393005: Narrow the strike register window in both directions when tracking many (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added include for limits Created 6 years, 5 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/strike_register.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/crypto/strike_register_test.cc
diff --git a/net/quic/crypto/strike_register_test.cc b/net/quic/crypto/strike_register_test.cc
index a232fd874b51ff02dbcddd152c2df287f03422b3..32295ad5ee3565a15786693b658219cdcd29bc9f 100644
--- a/net/quic/crypto/strike_register_test.cc
+++ b/net/quic/crypto/strike_register_test.cc
@@ -44,11 +44,12 @@ TEST(StrikeRegisterTest, SimpleHorizon) {
SetNonce(nonce, 1000, kOrbit);
ASSERT_FALSE(set.Insert(nonce, 1000));
- EXPECT_EQ(0u, set.EffectiveWindowSecs(1000 /* current time */));
- EXPECT_EQ(49u, set.EffectiveWindowSecs(1050 /* current time */));
- EXPECT_EQ(99u, set.EffectiveWindowSecs(1100 /* current time */));
- EXPECT_EQ(199u, set.EffectiveWindowSecs(1200 /* current time */));
- EXPECT_EQ(200u, set.EffectiveWindowSecs(1300 /* current time */));
+ EXPECT_EQ(0u, set.GetCurrentValidWindowSecs(1000 /* current time */));
+ EXPECT_EQ(0u, set.GetCurrentValidWindowSecs(1100 /* current time */));
+ EXPECT_EQ(1u, set.GetCurrentValidWindowSecs(1101 /* current time */));
+ EXPECT_EQ(50u, set.GetCurrentValidWindowSecs(1150 /* current time */));
+ EXPECT_EQ(100u, set.GetCurrentValidWindowSecs(1200 /* current time */));
+ EXPECT_EQ(101u, set.GetCurrentValidWindowSecs(1300 /* current time */));
}
TEST(StrikeRegisterTest, NoStartupMode) {
@@ -62,11 +63,11 @@ TEST(StrikeRegisterTest, NoStartupMode) {
ASSERT_TRUE(set.Insert(nonce, 1000));
ASSERT_FALSE(set.Insert(nonce, 1000));
- EXPECT_EQ(200u, set.EffectiveWindowSecs(1000 /* current time */));
- EXPECT_EQ(200u, set.EffectiveWindowSecs(1050 /* current time */));
- EXPECT_EQ(200u, set.EffectiveWindowSecs(1100 /* current time */));
- EXPECT_EQ(200u, set.EffectiveWindowSecs(1200 /* current time */));
- EXPECT_EQ(200u, set.EffectiveWindowSecs(1300 /* current time */));
+ EXPECT_EQ(101u, set.GetCurrentValidWindowSecs(1000 /* current time */));
+ EXPECT_EQ(101u, set.GetCurrentValidWindowSecs(1050 /* current time */));
+ EXPECT_EQ(101u, set.GetCurrentValidWindowSecs(1100 /* current time */));
+ EXPECT_EQ(101u, set.GetCurrentValidWindowSecs(1200 /* current time */));
+ EXPECT_EQ(101u, set.GetCurrentValidWindowSecs(1300 /* current time */));
}
TEST(StrikeRegisterTest, WindowFuture) {
@@ -98,7 +99,7 @@ TEST(StrikeRegisterTest, OneValue) {
StrikeRegister::DENY_REQUESTS_AT_STARTUP);
uint8 nonce[32];
SetNonce(nonce, 1101, kOrbit);
- ASSERT_TRUE(set.Insert(nonce, 1100));
+ ASSERT_TRUE(set.Insert(nonce, 1101));
}
TEST(StrikeRegisterTest, RejectDuplicate) {
@@ -108,8 +109,8 @@ TEST(StrikeRegisterTest, RejectDuplicate) {
StrikeRegister::DENY_REQUESTS_AT_STARTUP);
uint8 nonce[32];
SetNonce(nonce, 1101, kOrbit);
- ASSERT_TRUE(set.Insert(nonce, 1100));
- ASSERT_FALSE(set.Insert(nonce, 1100));
+ ASSERT_TRUE(set.Insert(nonce, 1101));
+ ASSERT_FALSE(set.Insert(nonce, 1101));
}
TEST(StrikeRegisterTest, HorizonUpdating) {
@@ -129,25 +130,40 @@ TEST(StrikeRegisterTest, HorizonUpdating) {
ASSERT_TRUE(set.Insert(nonce[i], 1100));
}
- // Effective horizon is still 2 * window.
- EXPECT_EQ(200u, set.EffectiveWindowSecs(1100));
+ // Valid window is still equal to |window_secs + 1|.
+ EXPECT_EQ(101u, set.GetCurrentValidWindowSecs(1100));
// This should push the oldest value out and force the horizon to
// be updated.
SetNonce(nonce[5], 1110, kOrbit);
- ASSERT_TRUE(set.Insert(nonce[5], 1100));
+ ASSERT_TRUE(set.Insert(nonce[5], 1110));
// Effective horizon is computed based on the timestamp of the
// value that was pushed out.
- EXPECT_EQ(98u, set.EffectiveWindowSecs(1100));
+ EXPECT_EQ(9u, set.GetCurrentValidWindowSecs(1110));
SetNonce(nonce[5], 1111, kOrbit);
- EXPECT_TRUE(set.Insert(nonce[5], 1100));
- EXPECT_EQ(97u, set.EffectiveWindowSecs(1100));
+ EXPECT_TRUE(set.Insert(nonce[5], 1110));
+ EXPECT_EQ(8u, set.GetCurrentValidWindowSecs(1110));
// This should be behind the horizon now:
SetNonce(nonce[5], 1101, kOrbit);
nonce[5][31] = 10;
- ASSERT_FALSE(set.Insert(nonce[5], 1100));
+ EXPECT_FALSE(set.Insert(nonce[5], 1110));
+
+ // Insert beyond the valid range.
+ SetNonce(nonce[5], 1117, kOrbit);
+ nonce[5][31] = 2;
+ EXPECT_FALSE(set.Insert(nonce[5], 1110));
+
+ // Insert at the upper valid range.
+ SetNonce(nonce[5], 1116, kOrbit);
+ nonce[5][31] = 1;
+ EXPECT_TRUE(set.Insert(nonce[5], 1110));
+
+ // This should be beyond the upper valid range now:
+ SetNonce(nonce[5], 1116, kOrbit);
+ nonce[5][31] = 2;
+ EXPECT_FALSE(set.Insert(nonce[5], 1110));
}
}
@@ -228,13 +244,12 @@ class SlowStrikeRegister {
return true;
}
- uint32 EffectiveWindowSecs(const uint32 current_time_external) const {
- const uint32 future_horizon =
- ExternalTimeToInternal(current_time_external) + window_secs_;
- if (horizon_ > future_horizon) {
+ uint32 GetCurrentValidWindowSecs(const uint32 current_time_external) const {
+ const uint32 current_time = ExternalTimeToInternal(current_time_external);
+ if (horizon_ > current_time) {
return 0;
}
- return min(future_horizon - horizon_, 2 * window_secs_);
+ return 1 + min(current_time - horizon_, window_secs_);
}
private:
@@ -304,8 +319,8 @@ TEST_F(StrikeRegisterStressTest, InOrderInsertion) {
EXPECT_EQ(r1, r2);
// Inserts succeed after the startup period.
EXPECT_EQ(time > current_time + window, r1);
- EXPECT_EQ(s1->EffectiveWindowSecs(time),
- s2->EffectiveWindowSecs(time));
+ EXPECT_EQ(s1->GetCurrentValidWindowSecs(time),
+ s2->GetCurrentValidWindowSecs(time));
if (i % 10 == 0) {
s1->Validate();
@@ -367,8 +382,8 @@ TEST_F(StrikeRegisterStressTest, Stress) {
const bool r2 = s2->Insert(nonce, time, time);
const bool r1 = s1->Insert(nonce, time);
EXPECT_EQ(r1, r2);
- EXPECT_EQ(s1->EffectiveWindowSecs(time),
- s2->EffectiveWindowSecs(time));
+ EXPECT_EQ(s1->GetCurrentValidWindowSecs(time),
+ s2->GetCurrentValidWindowSecs(time));
if (i % 10 == 0) {
s1->Validate();
« no previous file with comments | « net/quic/crypto/strike_register.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698