disk_cache_test_util.h revision c7f5f8508d98d5952d42ed7648c2a8f30a4da156
1// Copyright (c) 2006-2009 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_DISK_CACHE_DISK_CACHE_TEST_UTIL_H_ 6#define NET_DISK_CACHE_DISK_CACHE_TEST_UTIL_H_ 7 8#include <string> 9 10#include "base/file_path.h" 11#include "base/message_loop.h" 12#include "base/task.h" 13#include "base/timer.h" 14#include "build/build_config.h" 15 16class FilePath; 17 18// Re-creates a given test file inside the cache test folder. 19bool CreateCacheTestFile(const FilePath& name); 20 21// Deletes all file son the cache. 22bool DeleteCache(const FilePath& path); 23 24// Gets the path to the cache test folder. 25FilePath GetCacheFilePath(); 26 27// Fills buffer with random values (may contain nulls unless no_nulls is true). 28void CacheTestFillBuffer(char* buffer, size_t len, bool no_nulls); 29 30// Generates a random key of up to 200 bytes. 31std::string GenerateKey(bool same_length); 32 33// Returns true if the cache is not corrupt. 34bool CheckCacheIntegrity(const FilePath& path, bool new_eviction); 35 36// Helper class which ensures that the cache dir returned by GetCacheFilePath 37// exists and is clear in ctor and that the directory gets deleted in dtor. 38class ScopedTestCache { 39 public: 40 ScopedTestCache(); 41 ScopedTestCache(const std::string& name); // Use a specific folder name. 42 ~ScopedTestCache(); 43 44 FilePath path() const { return path_; } 45 46 private: 47 const FilePath path_; // Path to the cache test folder. 48 49 DISALLOW_COPY_AND_ASSIGN(ScopedTestCache); 50}; 51 52// ----------------------------------------------------------------------- 53 54// Simple callback to process IO completions from the cache. It allows tests 55// with multiple simultaneous IO operations. 56class CallbackTest : public CallbackRunner< Tuple1<int> > { 57 public: 58 explicit CallbackTest(bool reuse) : result_(-1), reuse_(reuse ? 0 : 1) {} 59 ~CallbackTest() {} 60 61 virtual void RunWithParams(const Tuple1<int>& params); 62 int result() const { return result_; } 63 64 private: 65 int result_; 66 int reuse_; 67 DISALLOW_COPY_AND_ASSIGN(CallbackTest); 68}; 69 70// ----------------------------------------------------------------------- 71 72// Simple helper to deal with the message loop on a test. 73class MessageLoopHelper { 74 public: 75 MessageLoopHelper(); 76 77 // Run the message loop and wait for num_callbacks before returning. Returns 78 // false if we are waiting to long. 79 bool WaitUntilCacheIoFinished(int num_callbacks); 80 81 private: 82 // Sets the number of callbacks that can be received so far. 83 void ExpectCallbacks(int num_callbacks) { 84 num_callbacks_ = num_callbacks; 85 num_iterations_ = last_ = 0; 86 completed_ = false; 87 } 88 89 // Called periodically to test if WaitUntilCacheIoFinished should return. 90 void TimerExpired(); 91 92 base::RepeatingTimer<MessageLoopHelper> timer_; 93 int num_callbacks_; 94 int num_iterations_; 95 int last_; 96 bool completed_; 97 98 DISALLOW_COPY_AND_ASSIGN(MessageLoopHelper); 99}; 100 101#endif // NET_DISK_CACHE_DISK_CACHE_TEST_UTIL_H_ 102