]>
Commit | Line | Data |
---|---|---|
4c50505b | 1 | /* |
f70aedc4 | 2 | * Copyright (C) 1996-2021 The Squid Software Foundation and contributors |
26ac0430 | 3 | * |
4e0938ef AJ |
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. | |
4c50505b | 7 | */ |
8 | ||
4e0938ef AJ |
9 | /* DEBUG: section 19 Store Memory Primitives */ |
10 | ||
582c2af2 | 11 | #include "squid.h" |
602d9612 A |
12 | #include "Generic.h" |
13 | #include "mem_node.h" | |
14 | #include "stmem.h" | |
4c50505b | 15 | |
27e059d4 | 16 | #include <iostream> |
42b1a665 | 17 | #include <sstream> |
27e059d4 | 18 | |
4c50505b | 19 | void |
20 | testLowAndHigh() | |
21 | { | |
22 | mem_hdr aHeader; | |
23 | assert (aHeader.lowestOffset() == 0); | |
24 | assert (aHeader.write (StoreIOBuffer())); | |
25 | assert (aHeader.lowestOffset() == 0); | |
4bb92fe0 | 26 | assert (aHeader.write (StoreIOBuffer(0, 1, (char *)NULL))); |
4c50505b | 27 | assert (aHeader.lowestOffset() == 0); |
28 | char * sampleData = xstrdup ("A"); | |
29 | assert (aHeader.write (StoreIOBuffer(1, 100, sampleData))); | |
30 | safe_free (sampleData); | |
31 | assert (aHeader.lowestOffset() == 100); | |
32 | assert (aHeader.endOffset() == 101); | |
33 | sampleData = xstrdup ("B"); | |
34 | assert (aHeader.write (StoreIOBuffer(1, 10, sampleData))); | |
35 | safe_free (sampleData); | |
36 | assert (aHeader.lowestOffset() == 10); | |
37 | assert (aHeader.endOffset() == 101); | |
58b8859e | 38 | assert (aHeader.hasContigousContentRange(Range<int64_t>(10,11))); |
39 | assert (!aHeader.hasContigousContentRange(Range<int64_t>(10,12))); | |
40 | assert (!aHeader.hasContigousContentRange(Range<int64_t>(10,101))); | |
4c50505b | 41 | } |
42 | ||
42a503bd | 43 | void |
44 | testSplayOfNodes() | |
45 | { | |
46 | Splay<mem_node *> aSplay; | |
47 | mem_node *temp5; | |
48 | temp5 = new mem_node(5); | |
49 | temp5->nodeBuffer.length = 10; | |
50 | aSplay.insert (temp5, mem_hdr::NodeCompare); | |
51 | assert (aSplay.start()->data == temp5); | |
ccd33084 | 52 | assert (aSplay.finish()->data == temp5); |
42a503bd | 53 | |
54 | mem_node *temp0; | |
55 | temp0 = new mem_node(0); | |
56 | temp0->nodeBuffer.length = 5; | |
57 | aSplay.insert (temp0, mem_hdr::NodeCompare); | |
58 | assert (aSplay.start()->data == temp0); | |
ccd33084 | 59 | assert (aSplay.finish()->data == temp5); |
42a503bd | 60 | |
61 | mem_node *temp14; | |
62 | temp14 = new mem_node (14); | |
63 | temp14->nodeBuffer.length = 1; | |
64 | assert (aSplay.find(temp14,mem_hdr::NodeCompare)); | |
47c5b158 | 65 | delete temp14; |
42a503bd | 66 | |
67 | mem_node ref13 (13); | |
68 | assert (!aSplay.find(&ref13,mem_hdr::NodeCompare)); | |
69 | ref13.nodeBuffer.length = 1; | |
70 | assert (aSplay.find(&ref13,mem_hdr::NodeCompare)); | |
025490ed | 71 | aSplay.destroy(); |
42a503bd | 72 | } |
73 | ||
ccd33084 | 74 | void |
75 | testHdrVisit() | |
76 | { | |
77 | mem_hdr aHeader; | |
78 | char * sampleData = xstrdup ("A"); | |
79 | assert (aHeader.write (StoreIOBuffer(1, 100, sampleData))); | |
80 | safe_free (sampleData); | |
81 | sampleData = xstrdup ("B"); | |
82 | assert (aHeader.write (StoreIOBuffer(1, 102, sampleData))); | |
83 | safe_free (sampleData); | |
b8bad68c | 84 | std::ostringstream result; |
85 | PointerPrinter<mem_node *> foo(result, "\n"); | |
86 | for_each (aHeader.getNodes().end(), aHeader.getNodes().end(), foo); | |
87 | for_each (aHeader.getNodes().begin(), aHeader.getNodes().begin(), foo); | |
88 | for_each (aHeader.getNodes().begin(), aHeader.getNodes().end(), foo); | |
89 | std::ostringstream expectedResult; | |
90 | expectedResult << "[100,101)" << std::endl << "[102,103)" << std::endl; | |
91 | assert (result.str() == expectedResult.str()); | |
ccd33084 | 92 | } |
93 | ||
4c50505b | 94 | int |
72ed5979 | 95 | main(int, char *[]) |
4c50505b | 96 | { |
47c5b158 | 97 | assert (mem_node::InUseCount() == 0); |
4c50505b | 98 | testLowAndHigh(); |
99 | assert (mem_node::InUseCount() == 0); | |
42a503bd | 100 | testSplayOfNodes(); |
47c5b158 | 101 | assert (mem_node::InUseCount() == 0); |
ccd33084 | 102 | testHdrVisit(); |
103 | assert (mem_node::InUseCount() == 0); | |
24885773 | 104 | return EXIT_SUCCESS; |
4c50505b | 105 | } |
f53969cc | 106 |