| Index: components/certificate_transparency/log_dns_client_unittest.cc
|
| diff --git a/components/certificate_transparency/log_dns_client_unittest.cc b/components/certificate_transparency/log_dns_client_unittest.cc
|
| index 3b32380fb2ae1bc5272ee0e28117484dd853d741..1db0a3213f0d9d35299ebaf2bc5be47f9d33a08f 100644
|
| --- a/components/certificate_transparency/log_dns_client_unittest.cc
|
| +++ b/components/certificate_transparency/log_dns_client_unittest.cc
|
| @@ -711,10 +711,66 @@ TEST_P(LogDnsClientTest, CanBeThrottledToOneQueryAtATime) {
|
| // TODO(robpercival): Enable this once MerkleAuditProof has tree_size.
|
| // EXPECT_THAT(proof3.tree_size, Eq(999999));
|
| EXPECT_THAT(proof3.nodes, Eq(audit_proof));
|
| }
|
|
|
| +TEST_P(LogDnsClientTest, NotifiesWhenNoLongerThrottled) {
|
| + const std::vector<std::string> audit_proof = GetSampleAuditProof(20);
|
| +
|
| + mock_dns_.ExpectLeafIndexRequestAndResponse(kLeafIndexQnames[0], 123456);
|
| + mock_dns_.ExpectAuditProofRequestAndResponse("0.123456.999999.tree.ct.test.",
|
| + audit_proof.begin(),
|
| + audit_proof.begin() + 7);
|
| + mock_dns_.ExpectAuditProofRequestAndResponse("7.123456.999999.tree.ct.test.",
|
| + audit_proof.begin() + 7,
|
| + audit_proof.begin() + 14);
|
| + mock_dns_.ExpectAuditProofRequestAndResponse("14.123456.999999.tree.ct.test.",
|
| + audit_proof.begin() + 14,
|
| + audit_proof.end());
|
| +
|
| + const size_t kMaxConcurrentQueries = 1;
|
| + std::unique_ptr<LogDnsClient> log_client =
|
| + CreateLogDnsClient(kMaxConcurrentQueries);
|
| +
|
| + // Start a query.
|
| + net::ct::MerkleAuditProof proof1;
|
| + net::TestCompletionCallback proof_callback1;
|
| + ASSERT_THAT(log_client->QueryAuditProof("ct.test", kLeafHashes[0], 999999,
|
| + &proof1, proof_callback1.callback()),
|
| + IsError(net::ERR_IO_PENDING));
|
| +
|
| + net::TestClosure not_throttled_callback;
|
| + log_client->NotifyWhenNotThrottled(not_throttled_callback.closure());
|
| +
|
| + ASSERT_THAT(proof_callback1.WaitForResult(), IsOk());
|
| + not_throttled_callback.WaitForResult();
|
| +
|
| + // Start another query to check |not_throttled_callback| doesn't fire again.
|
| + mock_dns_.ExpectLeafIndexRequestAndResponse(kLeafIndexQnames[1], 666);
|
| + mock_dns_.ExpectAuditProofRequestAndResponse("0.666.999999.tree.ct.test.",
|
| + audit_proof.begin(),
|
| + audit_proof.begin() + 7);
|
| + mock_dns_.ExpectAuditProofRequestAndResponse("7.666.999999.tree.ct.test.",
|
| + audit_proof.begin() + 7,
|
| + audit_proof.begin() + 14);
|
| + mock_dns_.ExpectAuditProofRequestAndResponse("14.666.999999.tree.ct.test.",
|
| + audit_proof.begin() + 14,
|
| + audit_proof.end());
|
| +
|
| + net::ct::MerkleAuditProof proof2;
|
| + net::TestCompletionCallback proof_callback2;
|
| + ASSERT_THAT(log_client->QueryAuditProof("ct.test", kLeafHashes[1], 999999,
|
| + &proof2, proof_callback2.callback()),
|
| + IsError(net::ERR_IO_PENDING));
|
| +
|
| + // Give the query a chance to run.
|
| + ASSERT_THAT(proof_callback2.WaitForResult(), IsOk());
|
| + // Give |not_throttled_callback| a chance to run - it shouldn't though.
|
| + base::RunLoop().RunUntilIdle();
|
| + ASSERT_FALSE(not_throttled_callback.have_result());
|
| +}
|
| +
|
| INSTANTIATE_TEST_CASE_P(ReadMode,
|
| LogDnsClientTest,
|
| ::testing::Values(net::IoMode::ASYNC,
|
| net::IoMode::SYNCHRONOUS));
|
|
|
|
|