| 22 | std::unordered_set<int> TestIdTraits::id_set; |
| 23 | |
| 24 | TEST(AbaListTest, TestGc) { |
| 25 | ListOfABAFreeId<int, TestIdTraits> aba_list; |
| 26 | |
| 27 | size_t wait_seq = 0; |
| 28 | for (size_t i = 0; i < 1000000; i++) { |
| 29 | size_t cnts[1]; |
| 30 | aba_list.get_sizes(cnts, 1); |
| 31 | if (wait_seq > cnts[0] + 1) { |
| 32 | wait_seq = 0; |
| 33 | TestIdTraits::id_set.clear(); |
| 34 | } |
| 35 | EXPECT_EQ(aba_list.add(i), 0); |
| 36 | if (TestIdTraits::id_set.size() < 4) { |
| 37 | TestIdTraits::id_set.insert(i); |
| 38 | } else { |
| 39 | wait_seq++; |
| 40 | } |
| 41 | } |
| 42 | size_t cnts[1]; |
| 43 | aba_list.get_sizes(cnts, 1); |
| 44 | EXPECT_EQ(cnts[0], (size_t)96); |
| 45 | } |
| 46 | } // namespace bthread |