20 #include "gtest/gtest.h"
35 template <
size_t kSize>
45 TEST(MemoryRequestTest, ConversionFromSize) {
51 TEST(MemoryRequestTest, MinMax) {
63 TEST(MemoryQuotaTest, CreateAllocatorNoOp) {
68 TEST(MemoryQuotaTest, CreateObjectFromAllocator) {
74 TEST(MemoryQuotaTest, CreateSomeObjectsAndExpectReclamation) {
83 memory_allocator.PostReclaimer(
90 auto object2 = memory_allocator.MakeUnique<
Sized<2048>>();
95 memory_allocator.PostReclaimer(
102 auto object3 = memory_allocator.MakeUnique<
Sized<2048>>();
107 TEST(MemoryQuotaTest, ReserveRangeNoPressure) {
111 for (
int i = 0;
i < 10000;
i++) {
116 memory_allocator.Release(
total);
122 std::vector<grpc_slice>
slices;
123 for (
int i = 1;
i < 1000;
i++) {
125 int max = 10 *
i - 9;
133 TEST(MemoryQuotaTest, ContainerAllocator) {
137 for (
int i = 0;
i < 100000;
i++) {
142 TEST(MemoryQuotaTest, NoBunchingIfIdle) {
146 std::atomic<size_t> count_reclaimers_called{0};
148 for (
size_t i = 0;
i < 10000;
i++) {
155 count_reclaimers_called.fetch_add(1, std::memory_order_relaxed);
157 auto object = memory_owner.MakeUnique<
Sized<2048>>();
160 EXPECT_GE(count_reclaimers_called.load(std::memory_order_relaxed), 8000);
169 int main(
int argc,
char** argv) {