1 /*
2  * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 #ifndef SQUID_SRC_TEST_STORE_H
10 #define SQUID_SRC_TEST_STORE_H
11 
12 #include "Store.h"
13 #include "store/Controlled.h"
14 
15 #include <cppunit/extensions/HelperMacros.h>
16 
17 /*
18  * test the store framework
19  */
20 
21 class testStore : public CPPUNIT_NS::TestFixture
22 {
23     CPPUNIT_TEST_SUITE( testStore );
24     CPPUNIT_TEST( testSetRoot );
25     CPPUNIT_TEST( testUnsetRoot );
26     CPPUNIT_TEST( testStats );
27     CPPUNIT_TEST( testMaxSize );
28     CPPUNIT_TEST_SUITE_END();
29 
30 public:
31 
32 protected:
33     void testSetRoot();
34     void testUnsetRoot();
35     void testStats();
36     void testMaxSize();
37 };
38 
39 /// allows testing of methods without having all the other components live
40 class TestStore : public Store::Controller
41 {
42 
43 public:
TestStore()44     TestStore() : statsCalled (false) {}
45 
46     bool statsCalled;
47 
48     virtual int callback();
49 
50     virtual StoreEntry* get(const cache_key*);
51 
52     virtual void get(String, void (*)(StoreEntry*, void*), void*);
53 
54     virtual void init();
55 
maintain()56     virtual void maintain() {};
57 
58     virtual uint64_t maxSize() const;
59 
60     virtual uint64_t minSize() const;
61 
62     virtual uint64_t currentSize() const;
63 
64     virtual uint64_t currentCount() const;
65 
66     virtual int64_t maxObjectSize() const;
67 
68     virtual void getStats(StoreInfoStats &) const;
69 
70     virtual void stat(StoreEntry &) const; /* output stats to the provided store entry */
71 
reference(StoreEntry &)72     virtual void reference(StoreEntry &) {} /* Reference this object */
73 
dereference(StoreEntry &)74     virtual bool dereference(StoreEntry &) { return true; }
75 
76     virtual StoreSearch *search();
77 };
78 
79 typedef RefCount<TestStore> TestStorePointer;
80 
81 #endif
82 
83