394 lines
13 KiB
C++
394 lines
13 KiB
C++
/**
|
|
* Copyright (c) 2021 OceanBase
|
|
* OceanBase CE is licensed under Mulan PubL v2.
|
|
* You can use this software according to the terms and conditions of the Mulan PubL v2.
|
|
* You may obtain a copy of Mulan PubL v2 at:
|
|
* http://license.coscl.org.cn/MulanPubL-2.0
|
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
* See the Mulan PubL v2 for more details.
|
|
*/
|
|
|
|
#include <gtest/gtest.h>
|
|
#include "ob_log_utils.h" // current_time
|
|
#include "ob_small_arena.h"
|
|
|
|
#include "lib/allocator/ob_concurrent_fifo_allocator.h" // ObConcurrentFIFOAllocator
|
|
|
|
#define ALLOC_AND_CHECK(size) ALLOC_ALIGN_AND_CHECK(sizeof(void*), size)
|
|
|
|
#define ALLOC_ALIGN_AND_CHECK(align_size, size) \
|
|
do { \
|
|
int64_t alloc_size = (size); \
|
|
int64_t align = (align_size); \
|
|
int64_t max_small_size = MAX_SMALL_ALLOC_SIZE(align); \
|
|
void *ptr = sa.alloc_aligned(alloc_size, align); \
|
|
\
|
|
ASSERT_TRUE(NULL != ptr); \
|
|
EXPECT_EQ(0, reinterpret_cast<int64_t>(ptr) & (align - 1)); \
|
|
\
|
|
if (alloc_size > max_small_size) { \
|
|
large_alloc_count++; \
|
|
} else { \
|
|
small_alloc_count++; \
|
|
} \
|
|
\
|
|
EXPECT_EQ(small_alloc_count, sa.get_small_alloc_count()); \
|
|
EXPECT_EQ(large_alloc_count, sa.get_large_alloc_count()); \
|
|
\
|
|
((char *)ptr)[alloc_size - 1] = 'a'; \
|
|
} while (0)
|
|
|
|
#define MAX_SMALL_ALLOC_SIZE(align) (MAX_SMALL_ALLOC_SIZE_WITHOUT_ALIGN - align + 1)
|
|
|
|
namespace oceanbase
|
|
{
|
|
namespace libobcdc
|
|
{
|
|
|
|
static const int64_t SMALL_ARENA_PAGE_SIZE = 1024;
|
|
static const int64_t MAX_SMALL_ALLOC_SIZE_WITHOUT_ALIGN = SMALL_ARENA_PAGE_SIZE - ObSmallArena::SMALL_PAGE_HEADER_SIZE;
|
|
static const int64_t PAGE_SIZE = 1024;
|
|
|
|
using namespace common;
|
|
|
|
// TODO: add multi thread test
|
|
class TestSmallArena : public ::testing::Test
|
|
{
|
|
public:
|
|
TestSmallArena() {}
|
|
~TestSmallArena() {}
|
|
|
|
virtual void SetUp();
|
|
virtual void TearDown();
|
|
|
|
public:
|
|
ObConcurrentFIFOAllocator large_allocator_;
|
|
static const uint64_t tenant_id_ = 0;
|
|
};
|
|
|
|
void TestSmallArena::SetUp()
|
|
{
|
|
const static int64_t LARGE_PAGE_SIZE = (1LL << 26);
|
|
const static int64_t LARGE_TOTAL_LIMIT = (1LL << 34);
|
|
const static int64_t LARGE_HOLD_LIMIT = LARGE_PAGE_SIZE;
|
|
ASSERT_EQ(OB_SUCCESS, large_allocator_.init(LARGE_TOTAL_LIMIT, LARGE_HOLD_LIMIT, LARGE_PAGE_SIZE));
|
|
|
|
srandom((unsigned int)get_timestamp());
|
|
}
|
|
|
|
void TestSmallArena::TearDown()
|
|
{
|
|
large_allocator_.destroy();
|
|
}
|
|
|
|
TEST_F(TestSmallArena, smoke_test)
|
|
{
|
|
ObSmallArena sa;
|
|
int64_t small_alloc_count = 0;
|
|
int64_t large_alloc_count = 0;
|
|
|
|
sa.set_allocator(PAGE_SIZE, large_allocator_);
|
|
|
|
ALLOC_AND_CHECK(8);
|
|
ALLOC_AND_CHECK(16);
|
|
ALLOC_AND_CHECK(256);
|
|
ALLOC_AND_CHECK(512);
|
|
ALLOC_AND_CHECK(17 + 8);
|
|
ALLOC_AND_CHECK(17 + 16);
|
|
ALLOC_AND_CHECK(17 + 256);
|
|
ALLOC_AND_CHECK(17 + 512);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 8);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 16);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 256);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 512);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 17 + 8);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 17 + 16);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 17 + 256);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 17 + 512);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 8);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 16);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 256);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 512);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 8);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 16);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 256);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 512);
|
|
|
|
sa.reset();
|
|
small_alloc_count = 0;
|
|
large_alloc_count = 0;
|
|
|
|
ALLOC_AND_CHECK(8);
|
|
ALLOC_AND_CHECK(16);
|
|
ALLOC_AND_CHECK(256);
|
|
ALLOC_AND_CHECK(512);
|
|
ALLOC_AND_CHECK(17 + 8);
|
|
ALLOC_AND_CHECK(17 + 16);
|
|
ALLOC_AND_CHECK(17 + 256);
|
|
ALLOC_AND_CHECK(17 + 512);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 8);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 16);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 256);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 512);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 17 + 8);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 17 + 16);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 17 + 256);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE + 17 + 512);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 8);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 16);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 256);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 512);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 8);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 16);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 256);
|
|
ALLOC_AND_CHECK((1<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 512);
|
|
|
|
sa.reset();
|
|
small_alloc_count = 0;
|
|
large_alloc_count = 0;
|
|
}
|
|
|
|
TEST_F(TestSmallArena, alloc_small)
|
|
{
|
|
static const int64_t TEST_COUNT = 10;
|
|
int64_t max_alloc_size = MAX_SMALL_ALLOC_SIZE(8);
|
|
int64_t small_alloc_count = 0;
|
|
int64_t large_alloc_count = 0;
|
|
ObSmallArena sa;
|
|
|
|
sa.set_allocator(PAGE_SIZE, large_allocator_);
|
|
|
|
for (int i = 0; i < TEST_COUNT; i++) {
|
|
ALLOC_AND_CHECK(8);
|
|
ALLOC_AND_CHECK(16);
|
|
ALLOC_AND_CHECK(256);
|
|
ALLOC_AND_CHECK(512);
|
|
ALLOC_AND_CHECK(17 + 8);
|
|
ALLOC_AND_CHECK(17 + 16);
|
|
ALLOC_AND_CHECK(17 + 256);
|
|
ALLOC_AND_CHECK(17 + 512);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 15);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 16);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 17);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 64);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 67);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 128);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 129);
|
|
|
|
ALLOC_AND_CHECK(random() % (max_alloc_size + 1));
|
|
}
|
|
|
|
sa.reset();
|
|
small_alloc_count = 0;
|
|
large_alloc_count = 0;
|
|
|
|
for (int i = 0; i < TEST_COUNT; i++) {
|
|
ALLOC_AND_CHECK(8);
|
|
ALLOC_AND_CHECK(16);
|
|
ALLOC_AND_CHECK(256);
|
|
ALLOC_AND_CHECK(512);
|
|
ALLOC_AND_CHECK(17 + 8);
|
|
ALLOC_AND_CHECK(17 + 16);
|
|
ALLOC_AND_CHECK(17 + 256);
|
|
ALLOC_AND_CHECK(17 + 512);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 15);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 16);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 17);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 64);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 67);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 128);
|
|
ALLOC_AND_CHECK(SMALL_ARENA_PAGE_SIZE - 129);
|
|
|
|
ALLOC_AND_CHECK(random() % (max_alloc_size + 1));
|
|
}
|
|
|
|
sa.reset();
|
|
small_alloc_count = 0;
|
|
large_alloc_count = 0;
|
|
}
|
|
|
|
TEST_F(TestSmallArena, alloc_large)
|
|
{
|
|
static const int64_t TEST_COUNT = 10;
|
|
int64_t max_alloc_size = (1 << 22);
|
|
int64_t min_alloc_size = MAX_SMALL_ALLOC_SIZE(8) + 1;
|
|
int64_t small_alloc_count = 0;
|
|
int64_t large_alloc_count = 0;
|
|
ObSmallArena sa;
|
|
|
|
sa.set_allocator(PAGE_SIZE, large_allocator_);
|
|
|
|
for (int i = 0; i < TEST_COUNT; i++) {
|
|
ALLOC_AND_CHECK(min_alloc_size + 0);
|
|
ALLOC_AND_CHECK(min_alloc_size + 1);
|
|
ALLOC_AND_CHECK(min_alloc_size + 2);
|
|
ALLOC_AND_CHECK(min_alloc_size + 4);
|
|
ALLOC_AND_CHECK(min_alloc_size + 8);
|
|
ALLOC_AND_CHECK(min_alloc_size + 16);
|
|
ALLOC_AND_CHECK(min_alloc_size + 256);
|
|
ALLOC_AND_CHECK(min_alloc_size + 512);
|
|
ALLOC_AND_CHECK(min_alloc_size + 17 + 8);
|
|
ALLOC_AND_CHECK(min_alloc_size + 17 + 16);
|
|
ALLOC_AND_CHECK(min_alloc_size + 17 + 256);
|
|
ALLOC_AND_CHECK(min_alloc_size + 17 + 512);
|
|
ALLOC_AND_CHECK(min_alloc_size + 1 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 2 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 3 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 4 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 5 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 6 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 7 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK((1LL << 10) + 11);
|
|
ALLOC_AND_CHECK((1LL << 12) + 13);
|
|
ALLOC_AND_CHECK((1LL << 18) + 17);
|
|
ALLOC_AND_CHECK((1LL << 19) + 19);
|
|
ALLOC_AND_CHECK((1LL << 20) + 7);
|
|
ALLOC_AND_CHECK((1LL << 21) + 3);
|
|
|
|
ALLOC_AND_CHECK((random() % (max_alloc_size)) + min_alloc_size);
|
|
}
|
|
|
|
sa.reset();
|
|
small_alloc_count = 0;
|
|
large_alloc_count = 0;
|
|
|
|
for (int i = 0; i < TEST_COUNT; i++) {
|
|
ALLOC_AND_CHECK(min_alloc_size + 0);
|
|
ALLOC_AND_CHECK(min_alloc_size + 1);
|
|
ALLOC_AND_CHECK(min_alloc_size + 2);
|
|
ALLOC_AND_CHECK(min_alloc_size + 4);
|
|
ALLOC_AND_CHECK(min_alloc_size + 8);
|
|
ALLOC_AND_CHECK(min_alloc_size + 16);
|
|
ALLOC_AND_CHECK(min_alloc_size + 256);
|
|
ALLOC_AND_CHECK(min_alloc_size + 512);
|
|
ALLOC_AND_CHECK(min_alloc_size + 17 + 8);
|
|
ALLOC_AND_CHECK(min_alloc_size + 17 + 16);
|
|
ALLOC_AND_CHECK(min_alloc_size + 17 + 256);
|
|
ALLOC_AND_CHECK(min_alloc_size + 17 + 512);
|
|
ALLOC_AND_CHECK(min_alloc_size + 1 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 2 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 3 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 4 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 5 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 6 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK(min_alloc_size + 7 * SMALL_ARENA_PAGE_SIZE);
|
|
ALLOC_AND_CHECK((1LL << 10) + 11);
|
|
ALLOC_AND_CHECK((1LL << 12) + 13);
|
|
ALLOC_AND_CHECK((1LL << 18) + 17);
|
|
ALLOC_AND_CHECK((1LL << 19) + 19);
|
|
ALLOC_AND_CHECK((1LL << 20) + 7);
|
|
ALLOC_AND_CHECK((1LL << 21) + 3);
|
|
|
|
ALLOC_AND_CHECK((random() % (max_alloc_size)) + min_alloc_size);
|
|
}
|
|
|
|
sa.reset();
|
|
small_alloc_count = 0;
|
|
large_alloc_count = 0;
|
|
}
|
|
|
|
TEST_F(TestSmallArena, alloc_align)
|
|
{
|
|
int64_t small_alloc_count = 0;
|
|
int64_t large_alloc_count = 0;
|
|
ObSmallArena sa;
|
|
|
|
sa.set_allocator(PAGE_SIZE, large_allocator_);
|
|
|
|
ALLOC_ALIGN_AND_CHECK(1, 4);
|
|
ALLOC_ALIGN_AND_CHECK(16, 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, 512);
|
|
ALLOC_ALIGN_AND_CHECK(16, 17 + 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, 17 + 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, 17 + 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, 17 + 512);
|
|
ALLOC_ALIGN_AND_CHECK(16, SMALL_ARENA_PAGE_SIZE + 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, SMALL_ARENA_PAGE_SIZE + 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, SMALL_ARENA_PAGE_SIZE + 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, SMALL_ARENA_PAGE_SIZE + 512);
|
|
ALLOC_ALIGN_AND_CHECK(16, SMALL_ARENA_PAGE_SIZE + 17 + 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, SMALL_ARENA_PAGE_SIZE + 17 + 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, SMALL_ARENA_PAGE_SIZE + 17 + 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, SMALL_ARENA_PAGE_SIZE + 17 + 512);
|
|
ALLOC_ALIGN_AND_CHECK(16, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 512);
|
|
ALLOC_ALIGN_AND_CHECK(16, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 512);
|
|
|
|
sa.reset();
|
|
small_alloc_count = 0;
|
|
large_alloc_count = 0;
|
|
|
|
ALLOC_ALIGN_AND_CHECK(1, 4);
|
|
ALLOC_ALIGN_AND_CHECK(16, 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, 512);
|
|
ALLOC_ALIGN_AND_CHECK(16, 17 + 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, 17 + 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, 17 + 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, 17 + 512);
|
|
ALLOC_ALIGN_AND_CHECK(16, SMALL_ARENA_PAGE_SIZE + 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, SMALL_ARENA_PAGE_SIZE + 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, SMALL_ARENA_PAGE_SIZE + 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, SMALL_ARENA_PAGE_SIZE + 512);
|
|
ALLOC_ALIGN_AND_CHECK(16, SMALL_ARENA_PAGE_SIZE + 17 + 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, SMALL_ARENA_PAGE_SIZE + 17 + 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, SMALL_ARENA_PAGE_SIZE + 17 + 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, SMALL_ARENA_PAGE_SIZE + 17 + 512);
|
|
ALLOC_ALIGN_AND_CHECK(16, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 512);
|
|
ALLOC_ALIGN_AND_CHECK(16, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 8);
|
|
ALLOC_ALIGN_AND_CHECK(32, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 16);
|
|
ALLOC_ALIGN_AND_CHECK(64, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 256);
|
|
ALLOC_ALIGN_AND_CHECK(128, (1LL<<21) + SMALL_ARENA_PAGE_SIZE + 17 + 512);
|
|
|
|
sa.reset();
|
|
small_alloc_count = 0;
|
|
large_alloc_count = 0;
|
|
}
|
|
|
|
TEST_F(TestSmallArena, init_err)
|
|
{
|
|
void *ptr = NULL;
|
|
ObSmallArena sa;
|
|
ptr = sa.alloc(8); EXPECT_TRUE(NULL == ptr);
|
|
|
|
sa.set_allocator(-1, large_allocator_);
|
|
ptr = sa.alloc(8); EXPECT_TRUE(NULL == ptr);
|
|
|
|
sa.reset();
|
|
}
|
|
|
|
TEST_F(TestSmallArena, invalid_args)
|
|
{
|
|
void *ptr = NULL;
|
|
ObSmallArena sa;
|
|
sa.set_allocator(PAGE_SIZE, large_allocator_);
|
|
ptr = sa.alloc(-1); EXPECT_TRUE(NULL == ptr);
|
|
ptr = sa.alloc_aligned(1,3); EXPECT_TRUE(NULL == ptr);
|
|
ptr = sa.alloc_aligned(1, 1024); EXPECT_TRUE(NULL == ptr);
|
|
sa.reset();
|
|
}
|
|
|
|
} // namespace libobcdc
|
|
} // ns oceanbase
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
oceanbase::common::ObLogger::get_logger().set_log_level("DEBUG");
|
|
OB_LOGGER.set_log_level("DEBUG");
|
|
testing::InitGoogleTest(&argc, argv);
|
|
return RUN_ALL_TESTS();
|
|
}
|