Home | History | Annotate | Download | only in test_tools
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef NET_QUIC_TEST_TOOLS_DELAYED_VERIFY_STRIKE_REGISTER_CLIENT_H_
      6 #define NET_QUIC_TEST_TOOLS_DELAYED_VERIFY_STRIKE_REGISTER_CLIENT_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "base/strings/string_piece.h"
     12 #include "net/quic/crypto/local_strike_register_client.h"
     13 
     14 namespace net {
     15 namespace test {
     16 
     17 // Test helper that allows delaying execution of nonce verification
     18 // callbacks until a later time.
     19 class DelayedVerifyStrikeRegisterClient : public LocalStrikeRegisterClient {
     20  public:
     21   DelayedVerifyStrikeRegisterClient(unsigned max_entries,
     22                                     uint32 current_time_external,
     23                                     uint32 window_secs,
     24                                     const uint8 orbit[8],
     25                                     StrikeRegister::StartupType startup);
     26   virtual ~DelayedVerifyStrikeRegisterClient();
     27 
     28   virtual void VerifyNonceIsValidAndUnique(base::StringPiece nonce,
     29                                            QuicWallTime now,
     30                                            ResultCallback* cb) OVERRIDE;
     31 
     32   // Start queueing verifications instead of executing them immediately.
     33   void StartDelayingVerification() {
     34     delay_verifications_ = true;
     35   }
     36   // Number of verifications that are queued.
     37   int PendingVerifications() const;
     38   // Run all pending verifications.
     39   void RunPendingVerifications();
     40 
     41  private:
     42   struct VerifyArgs {
     43     VerifyArgs(base::StringPiece in_nonce,
     44                QuicWallTime in_now,
     45                ResultCallback* in_cb)
     46         : nonce(in_nonce.as_string()),
     47           now(in_now),
     48           cb(in_cb) {
     49     }
     50 
     51     std::string nonce;
     52     QuicWallTime now;
     53     ResultCallback* cb;
     54   };
     55 
     56   bool delay_verifications_;
     57   std::vector<VerifyArgs> pending_verifications_;
     58 
     59   DISALLOW_COPY_AND_ASSIGN(DelayedVerifyStrikeRegisterClient);
     60 };
     61 
     62 }  // namespace test
     63 }  // namespace net
     64 
     65 #endif  // NET_QUIC_TEST_TOOLS_DELAYED_VERIFY_STRIKE_REGISTER_CLIENT_H_
     66