|
5 | 5 | #include "storage/buffer_manager/buffer_manager.h"
|
6 | 6 | #include "storage/checkpointer.h"
|
7 | 7 | #include "storage/storage_manager.h"
|
| 8 | +#include "test_runner/fsm_leak_checker.h" |
8 | 9 | #include "test_runner/test_parser.h"
|
9 | 10 | #include "transaction/transaction_manager.h"
|
10 | 11 |
|
@@ -114,57 +115,6 @@ class CopyTest : public BaseGraphTest {
|
114 | 115 | FlakyBufferManager* currentBM;
|
115 | 116 | };
|
116 | 117 |
|
117 |
| -static decltype(auto) getDbSizeInPages(main::Connection* conn) { |
118 |
| - return storage::StorageManager::Get(*conn->getClientContext())->getDataFH()->getNumPages(); |
119 |
| -} |
120 |
| - |
121 |
| -static decltype(auto) getNumFreePages(main::Connection* conn) { |
122 |
| - auto& pageManager = *storage::PageManager::Get(*conn->getClientContext()); |
123 |
| - auto numFreeEntries = pageManager.getNumFreeEntries(); |
124 |
| - auto entries = pageManager.getFreeEntries(0, numFreeEntries); |
125 |
| - return std::accumulate(entries.begin(), entries.end(), 0ull, |
126 |
| - [](auto a, auto b) { return a + b.numPages; }); |
127 |
| -} |
128 |
| - |
129 |
| -struct FSMLeakChecker { |
130 |
| - static void checkForLeakedPages(main::Connection* conn) { |
131 |
| - conn->query("checkpoint"); |
132 |
| - |
133 |
| - std::vector<std::pair<std::string, std::string>> tableNames; |
134 |
| - auto tableNamesResult = conn->query("call show_tables() return name, type"); |
135 |
| - while (tableNamesResult->hasNext()) { |
136 |
| - auto nextResult = tableNamesResult->getNext(); |
137 |
| - tableNames.emplace_back(nextResult->getValue(0)->toString(), |
138 |
| - nextResult->getValue(1)->toString()); |
139 |
| - } |
140 |
| - |
141 |
| - // Drop rel tables first |
142 |
| - for (const auto& [tableName, tableType] : tableNames) { |
143 |
| - if (tableType == common::TableTypeUtils::toString(common::TableType::REL)) { |
144 |
| - ASSERT_TRUE( |
145 |
| - conn->query(common::stringFormat("drop table {}", tableName))->isSuccess()); |
146 |
| - } |
147 |
| - } |
148 |
| - for (const auto& [tableName, tableType] : tableNames) { |
149 |
| - if (tableType != common::TableTypeUtils::toString(common::TableType::REL)) { |
150 |
| - ASSERT_TRUE( |
151 |
| - conn->query(common::stringFormat("drop table {}", tableName))->isSuccess()); |
152 |
| - } |
153 |
| - } |
154 |
| - conn->query("checkpoint"); |
155 |
| - |
156 |
| - const auto numTotalPages = getDbSizeInPages(conn); |
157 |
| - const auto numUsedPages = numTotalPages - getNumFreePages(conn); |
158 |
| - |
159 |
| - storage::Checkpointer checkpointer{*conn->getClientContext()}; |
160 |
| - auto databaseHeader = storage::StorageManager::Get(*conn->getClientContext()) |
161 |
| - ->getOrInitDatabaseHeader(*conn->getClientContext()); |
162 |
| - ASSERT_EQ(1 + databaseHeader->catalogPageRange.numPages + |
163 |
| - databaseHeader->metadataPageRange.numPages, |
164 |
| - numUsedPages); |
165 |
| - } |
166 |
| -}; |
167 |
| - |
168 | 118 | void CopyTest::BMExceptionRecoveryTest(BMExceptionRecoveryTestConfig cfg) {
|
169 | 119 | if (inMemMode) {
|
170 | 120 | failureFrequency = UINT64_MAX;
|
|
0 commit comments