|
|
|
@ -29,6 +29,7 @@ |
|
|
|
|
#include <vector> |
|
|
|
|
|
|
|
|
|
#include "absl/strings/str_join.h" |
|
|
|
|
#include "gmock/gmock.h" |
|
|
|
|
#include "gtest/gtest.h" |
|
|
|
|
|
|
|
|
|
#include <grpc/support/sync.h> |
|
|
|
@ -40,6 +41,8 @@ |
|
|
|
|
#include "src/core/lib/resource_quota/resource_quota.h" |
|
|
|
|
#include "test/core/test_util/test_config.h" |
|
|
|
|
|
|
|
|
|
using testing::StrictMock; |
|
|
|
|
|
|
|
|
|
namespace grpc_core { |
|
|
|
|
|
|
|
|
|
struct AllocShape { |
|
|
|
@ -289,6 +292,23 @@ TEST(ArenaTest, FooContext) { |
|
|
|
|
EXPECT_EQ(*arena->GetContext<Foo>()->p, 42); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
class MockArenaFactory : public ArenaFactory { |
|
|
|
|
public: |
|
|
|
|
MockArenaFactory() |
|
|
|
|
: ArenaFactory( |
|
|
|
|
ResourceQuota::Default()->memory_quota()->CreateMemoryAllocator( |
|
|
|
|
"test")) {} |
|
|
|
|
MOCK_METHOD(RefCountedPtr<Arena>, MakeArena, (), (override)); |
|
|
|
|
MOCK_METHOD(void, FinalizeArena, (Arena * arena), (override)); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
TEST(ArenaTest, FinalizeArenaIsCalled) { |
|
|
|
|
auto factory = MakeRefCounted<StrictMock<MockArenaFactory>>(); |
|
|
|
|
auto arena = Arena::Create(1, factory); |
|
|
|
|
EXPECT_CALL(*factory, FinalizeArena(arena.get())); |
|
|
|
|
arena.reset(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} // namespace grpc_core
|
|
|
|
|
|
|
|
|
|
int main(int argc, char* argv[]) { |
|
|
|
|