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 32295ad5ee3565a15786693b658219cdcd29bc9f..df723579a1b25949ba702f1827aed2c6c5f4d2bc 100644 |
--- a/net/quic/crypto/strike_register_test.cc |
+++ b/net/quic/crypto/strike_register_test.cc |
@@ -13,6 +13,7 @@ |
namespace { |
+using net::InsertStatus; |
using net::StrikeRegister; |
using std::make_pair; |
using std::min; |
@@ -40,9 +41,9 @@ TEST(StrikeRegisterTest, SimpleHorizon) { |
StrikeRegister::DENY_REQUESTS_AT_STARTUP); |
uint8 nonce[32]; |
SetNonce(nonce, 999, kOrbit); |
- ASSERT_FALSE(set.Insert(nonce, 1000)); |
+ EXPECT_EQ(net::NONCE_INVALID_TIME_FAILURE, set.Insert(nonce, 1000)); |
SetNonce(nonce, 1000, kOrbit); |
- ASSERT_FALSE(set.Insert(nonce, 1000)); |
+ EXPECT_EQ(net::NONCE_INVALID_TIME_FAILURE, set.Insert(nonce, 1000)); |
EXPECT_EQ(0u, set.GetCurrentValidWindowSecs(1000 /* current time */)); |
EXPECT_EQ(0u, set.GetCurrentValidWindowSecs(1100 /* current time */)); |
@@ -60,8 +61,8 @@ TEST(StrikeRegisterTest, NoStartupMode) { |
StrikeRegister::NO_STARTUP_PERIOD_NEEDED); |
uint8 nonce[32]; |
SetNonce(nonce, 1000, kOrbit); |
- ASSERT_TRUE(set.Insert(nonce, 1000)); |
- ASSERT_FALSE(set.Insert(nonce, 1000)); |
+ EXPECT_EQ(net::NONCE_OK, set.Insert(nonce, 1000)); |
+ EXPECT_EQ(net::NONCE_NOT_UNIQUE_FAILURE, set.Insert(nonce, 1000)); |
EXPECT_EQ(101u, set.GetCurrentValidWindowSecs(1000 /* current time */)); |
EXPECT_EQ(101u, set.GetCurrentValidWindowSecs(1050 /* current time */)); |
@@ -77,9 +78,9 @@ TEST(StrikeRegisterTest, WindowFuture) { |
StrikeRegister::DENY_REQUESTS_AT_STARTUP); |
uint8 nonce[32]; |
SetNonce(nonce, 1101, kOrbit); |
- ASSERT_FALSE(set.Insert(nonce, 1000)); |
+ EXPECT_EQ(net::NONCE_INVALID_TIME_FAILURE, set.Insert(nonce, 1000)); |
SetNonce(nonce, 999, kOrbit); |
- ASSERT_FALSE(set.Insert(nonce, 1100)); |
+ EXPECT_EQ(net::NONCE_INVALID_TIME_FAILURE, set.Insert(nonce, 1100)); |
} |
TEST(StrikeRegisterTest, BadOrbit) { |
@@ -90,7 +91,7 @@ TEST(StrikeRegisterTest, BadOrbit) { |
uint8 nonce[32]; |
static const uint8 kBadOrbit[8] = { 0, 0, 0, 0, 1, 1, 1, 1 }; |
SetNonce(nonce, 1101, kBadOrbit); |
- ASSERT_FALSE(set.Insert(nonce, 1100)); |
+ EXPECT_EQ(net::NONCE_INVALID_ORBIT_FAILURE, set.Insert(nonce, 1100)); |
} |
TEST(StrikeRegisterTest, OneValue) { |
@@ -99,7 +100,7 @@ TEST(StrikeRegisterTest, OneValue) { |
StrikeRegister::DENY_REQUESTS_AT_STARTUP); |
uint8 nonce[32]; |
SetNonce(nonce, 1101, kOrbit); |
- ASSERT_TRUE(set.Insert(nonce, 1101)); |
+ EXPECT_EQ(net::NONCE_OK, set.Insert(nonce, 1101)); |
} |
TEST(StrikeRegisterTest, RejectDuplicate) { |
@@ -109,8 +110,8 @@ TEST(StrikeRegisterTest, RejectDuplicate) { |
StrikeRegister::DENY_REQUESTS_AT_STARTUP); |
uint8 nonce[32]; |
SetNonce(nonce, 1101, kOrbit); |
- ASSERT_TRUE(set.Insert(nonce, 1101)); |
- ASSERT_FALSE(set.Insert(nonce, 1101)); |
+ EXPECT_EQ(net::NONCE_OK, set.Insert(nonce, 1101)); |
+ EXPECT_EQ(net::NONCE_NOT_UNIQUE_FAILURE, set.Insert(nonce, 1101)); |
} |
TEST(StrikeRegisterTest, HorizonUpdating) { |
@@ -127,7 +128,7 @@ TEST(StrikeRegisterTest, HorizonUpdating) { |
for (unsigned i = 0; i < 5; i++) { |
SetNonce(nonce[i], 1101 + i, kOrbit); |
nonce[i][31] = i; |
- ASSERT_TRUE(set.Insert(nonce[i], 1100)); |
+ EXPECT_EQ(net::NONCE_OK, set.Insert(nonce[i], 1100)); |
} |
// Valid window is still equal to |window_secs + 1|. |
@@ -136,34 +137,34 @@ TEST(StrikeRegisterTest, HorizonUpdating) { |
// 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], 1110)); |
+ EXPECT_EQ(net::NONCE_OK, set.Insert(nonce[5], 1110)); |
// Effective horizon is computed based on the timestamp of the |
// value that was pushed out. |
EXPECT_EQ(9u, set.GetCurrentValidWindowSecs(1110)); |
SetNonce(nonce[5], 1111, kOrbit); |
- EXPECT_TRUE(set.Insert(nonce[5], 1110)); |
+ EXPECT_EQ(net::NONCE_OK, 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; |
- EXPECT_FALSE(set.Insert(nonce[5], 1110)); |
+ EXPECT_EQ(net::NONCE_INVALID_TIME_FAILURE, 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)); |
+ EXPECT_EQ(net::NONCE_INVALID_TIME_FAILURE, 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)); |
+ EXPECT_EQ(net::NONCE_OK, 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)); |
+ EXPECT_EQ(net::NONCE_INVALID_TIME_FAILURE, set.Insert(nonce[5], 1110)); |
} |
} |
@@ -177,7 +178,7 @@ TEST(StrikeRegisterTest, InsertMany) { |
for (unsigned i = 0; i < 100000; i++) { |
SetNonce(nonce, 1101 + i/500, kOrbit); |
memcpy(nonce + 12, &i, sizeof(i)); |
- set.Insert(nonce, 1100); |
+ EXPECT_EQ(net::NONCE_INVALID_TIME_FAILURE, set.Insert(nonce, 1100)); |
} |
} |
@@ -201,9 +202,9 @@ class SlowStrikeRegister { |
memcpy(orbit_, orbit, sizeof(orbit_)); |
} |
- bool Insert(const uint8 nonce_bytes[32], |
- const uint32 nonce_time_external, |
- const uint32 current_time_external) { |
+ InsertStatus Insert(const uint8 nonce_bytes[32], |
+ const uint32 nonce_time_external, |
+ const uint32 current_time_external) { |
if (nonces_.size() == max_entries_) { |
DropOldestEntry(); |
} |
@@ -212,7 +213,7 @@ class SlowStrikeRegister { |
// Check to see if the orbit is correct. |
if (memcmp(nonce_bytes + 4, orbit_, sizeof(orbit_))) { |
- return false; |
+ return net::NONCE_INVALID_ORBIT_FAILURE; |
} |
const uint32 nonce_time = |
ExternalTimeToInternal(TimeFromBytes(nonce_bytes)); |
@@ -221,14 +222,14 @@ class SlowStrikeRegister { |
// so we have to reject anything with a timestamp less than or |
// equal to that. |
if (nonce_time < horizon_) { |
- return false; |
+ return net::NONCE_INVALID_TIME_FAILURE; |
} |
// Check that the timestamp is in the current window. |
if ((current_time > window_secs_ && |
nonce_time < (current_time - window_secs_)) || |
nonce_time > (current_time + window_secs_)) { |
- return false; |
+ return net::NONCE_INVALID_TIME_FAILURE; |
} |
pair<uint32, string> nonce = make_pair( |
@@ -237,11 +238,11 @@ class SlowStrikeRegister { |
set<pair<uint32, string> >::const_iterator it = nonces_.find(nonce); |
if (it != nonces_.end()) { |
- return false; |
+ return net::NONCE_NOT_UNIQUE_FAILURE; |
} |
nonces_.insert(nonce); |
- return true; |
+ return net::NONCE_OK; |
} |
uint32 GetCurrentValidWindowSecs(const uint32 current_time_external) const { |
@@ -314,11 +315,16 @@ TEST_F(StrikeRegisterStressTest, InOrderInsertion) { |
nonce[30] = v >> 8; |
nonce[31] = v; |
- const bool r2 = s2->Insert(nonce, time, time); |
- const bool r1 = s1->Insert(nonce, time); |
- EXPECT_EQ(r1, r2); |
+ const InsertStatus nonce_error2 = s2->Insert(nonce, time, time); |
+ const InsertStatus nonce_error1 = s1->Insert(nonce, time); |
+ EXPECT_EQ(nonce_error1, nonce_error2); |
+ |
// Inserts succeed after the startup period. |
- EXPECT_EQ(time > current_time + window, r1); |
+ if (time > current_time + window) { |
+ EXPECT_EQ(net::NONCE_OK, nonce_error1); |
+ } else { |
+ EXPECT_EQ(net::NONCE_INVALID_TIME_FAILURE, nonce_error1); |
+ } |
EXPECT_EQ(s1->GetCurrentValidWindowSecs(time), |
s2->GetCurrentValidWindowSecs(time)); |
@@ -379,9 +385,9 @@ TEST_F(StrikeRegisterStressTest, Stress) { |
nonce[30] = v >> 8; |
nonce[31] = v; |
- const bool r2 = s2->Insert(nonce, time, time); |
- const bool r1 = s1->Insert(nonce, time); |
- EXPECT_EQ(r1, r2); |
+ const InsertStatus nonce_error2 = s2->Insert(nonce, time, time); |
+ const InsertStatus nonce_error1 = s1->Insert(nonce, time); |
+ EXPECT_EQ(nonce_error1, nonce_error2); |
EXPECT_EQ(s1->GetCurrentValidWindowSecs(time), |
s2->GetCurrentValidWindowSecs(time)); |