tdb/test: refactor page recycling test cases
This commit is contained in:
parent
fe197ccf9c
commit
204999d57e
|
@ -860,10 +860,9 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx, TXN *pTx
|
|||
|
||||
if (!TDB_BTREE_PAGE_IS_LEAF(pNews[0])) {
|
||||
((SIntHdr *)(pParent->pData))->pgno = ((SIntHdr *)(pNews[0]->pData))->pgno;
|
||||
} // else {
|
||||
// printf("tdb/balance: btree balance delete pgno: %d.\n", TDB_PAGE_PGNO(pNews[0]));
|
||||
}
|
||||
|
||||
tdbPagerInsertFreePage(pBt->pPager, TDB_PAGE_PGNO(pNews[0]), pTxn);
|
||||
//}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
|
@ -873,15 +872,12 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx, TXN *pTx
|
|||
}
|
||||
|
||||
for (pageIdx = 0; pageIdx < nOlds; ++pageIdx) {
|
||||
// printf("tdb/balance: btree balance old pgno: %d.\n", TDB_PAGE_PGNO(pOlds[pageIdx]));
|
||||
if (pageIdx >= nNews) {
|
||||
// printf("tdb/balance: btree balance delete pgno: %d.\n", TDB_PAGE_PGNO(pOlds[pageIdx]));
|
||||
tdbPagerInsertFreePage(pBt->pPager, TDB_PAGE_PGNO(pOlds[pageIdx]), pTxn);
|
||||
}
|
||||
tdbPagerReturnPage(pBt->pPager, pOlds[pageIdx], pTxn);
|
||||
}
|
||||
for (; pageIdx < nNews; ++pageIdx) {
|
||||
// printf("tdb/balance: btree balance new pgno: %d.\n", TDB_PAGE_PGNO(pNews[pageIdx]));
|
||||
tdbPagerReturnPage(pBt->pPager, pNews[pageIdx], pTxn);
|
||||
}
|
||||
|
||||
|
|
|
@ -464,31 +464,25 @@ TEST(TdbPageRecycleTest, DISABLED_simple_insert1) {
|
|||
GTEST_ASSERT_EQ(ret, 0);
|
||||
}
|
||||
|
||||
static const int nDataConst = 256 * 19;
|
||||
static void clearDb(char const *db) { taosRemoveDir(db); }
|
||||
|
||||
// TEST(TdbPageRecycleTest, DISABLED_seq_insert) {
|
||||
TEST(TdbPageRecycleTest, seq_insert) {
|
||||
static void insertDb(int nData) {
|
||||
int ret = 0;
|
||||
TDB *pEnv = NULL;
|
||||
TTB *pDb = NULL;
|
||||
tdb_cmpr_fn_t compFunc;
|
||||
int nData = nDataConst;
|
||||
TXN *txn = NULL;
|
||||
int const pageSize = 4 * 1024;
|
||||
|
||||
taosRemoveDir("tdb");
|
||||
|
||||
// Open Env
|
||||
ret = tdbOpen("tdb", pageSize, 64, &pEnv, 0);
|
||||
GTEST_ASSERT_EQ(ret, 0);
|
||||
|
||||
printf("tdb opened\n");
|
||||
// Create a database
|
||||
compFunc = tKeyCmpr;
|
||||
ret = tdbTbOpen("db.db", -1, -1, compFunc, pEnv, &pDb, 0);
|
||||
GTEST_ASSERT_EQ(ret, 0);
|
||||
|
||||
printf("tb opened\n");
|
||||
// 1, insert nData kv
|
||||
{
|
||||
char key[64];
|
||||
|
@ -540,13 +534,11 @@ TEST(TdbPageRecycleTest, seq_insert) {
|
|||
system("ls -l ./tdb");
|
||||
}
|
||||
|
||||
// TEST(TdbPageRecycleTest, DISABLED_seq_delete) {
|
||||
TEST(TdbPageRecycleTest, seq_delete) {
|
||||
static void deleteDb(int nData) {
|
||||
int ret = 0;
|
||||
TDB *pEnv = NULL;
|
||||
TTB *pDb = NULL;
|
||||
tdb_cmpr_fn_t compFunc;
|
||||
int nData = nDataConst;
|
||||
TXN *txn = NULL;
|
||||
int const pageSize = 4 * 1024;
|
||||
|
||||
|
@ -612,68 +604,16 @@ TEST(TdbPageRecycleTest, seq_delete) {
|
|||
system("ls -l ./tdb");
|
||||
}
|
||||
|
||||
// TEST(TdbPageRecycleTest, DISABLED_recycly_insert) {
|
||||
TEST(TdbPageRecycleTest, recycly_insert) {
|
||||
int ret = 0;
|
||||
TDB *pEnv = NULL;
|
||||
TTB *pDb = NULL;
|
||||
tdb_cmpr_fn_t compFunc = tKeyCmpr;
|
||||
int nData = nDataConst;
|
||||
TXN *txn = NULL;
|
||||
int const pageSize = 4 * 1024;
|
||||
static const int nDataConst = 256 * 19;
|
||||
|
||||
// Open Env
|
||||
ret = tdbOpen("tdb", pageSize, 64, &pEnv, 0);
|
||||
GTEST_ASSERT_EQ(ret, 0);
|
||||
|
||||
// Create a database
|
||||
ret = tdbTbOpen("db.db", -1, -1, compFunc, pEnv, &pDb, 0);
|
||||
GTEST_ASSERT_EQ(ret, 0);
|
||||
|
||||
// 3, insert 32k records
|
||||
{
|
||||
char key[64];
|
||||
char val[(4083 - 4 - 3 - 2) + 1]; // pSize(4096) - amSize(1) - pageHdr(8) - footerSize(4)
|
||||
int64_t poolLimit = 4096;
|
||||
SPoolMem *pPool;
|
||||
|
||||
// open the pool
|
||||
pPool = openPool();
|
||||
|
||||
// start a transaction
|
||||
tdbBegin(pEnv, &txn, poolMalloc, poolFree, pPool, TDB_TXN_WRITE | TDB_TXN_READ_UNCOMMITTED);
|
||||
|
||||
// for (int iData = nData; iData < nData + nData; iData++) {
|
||||
for (int iData = 0; iData < nData; iData++) {
|
||||
sprintf(key, "key%03d", iData);
|
||||
sprintf(val, "value%03d", iData);
|
||||
|
||||
ret = tdbTbInsert(pDb, key, strlen(key), val, strlen(val), txn);
|
||||
GTEST_ASSERT_EQ(ret, 0);
|
||||
|
||||
if (pPool->size >= poolLimit) {
|
||||
tdbCommit(pEnv, txn);
|
||||
tdbPostCommit(pEnv, txn);
|
||||
|
||||
// start a new transaction
|
||||
clearPool(pPool);
|
||||
|
||||
tdbBegin(pEnv, &txn, poolMalloc, poolFree, pPool, TDB_TXN_WRITE | TDB_TXN_READ_UNCOMMITTED);
|
||||
}
|
||||
}
|
||||
|
||||
tdbCommit(pEnv, txn);
|
||||
tdbPostCommit(pEnv, txn);
|
||||
|
||||
closePool(pPool);
|
||||
}
|
||||
|
||||
// Close a database
|
||||
tdbTbClose(pDb);
|
||||
|
||||
// Close Env
|
||||
ret = tdbClose(pEnv);
|
||||
GTEST_ASSERT_EQ(ret, 0);
|
||||
|
||||
system("ls -l ./tdb");
|
||||
// TEST(TdbPageRecycleTest, DISABLED_seq_insert) {
|
||||
TEST(TdbPageRecycleTest, seq_insert) {
|
||||
clearDb("tdb");
|
||||
insertDb(nDataConst);
|
||||
}
|
||||
|
||||
// TEST(TdbPageRecycleTest, DISABLED_seq_delete) {
|
||||
TEST(TdbPageRecycleTest, seq_delete) { deleteDb(nDataConst); }
|
||||
|
||||
// TEST(TdbPageRecycleTest, DISABLED_recycly_insert) {
|
||||
TEST(TdbPageRecycleTest, recycly_insert) { insertDb(nDataConst); }
|
||||
|
|
Loading…
Reference in New Issue