mirror of
https://github.com/privacore/open-source-search-engine.git
synced 2025-06-26 00:06:07 -04:00
Add test for posdb getList while merging
This commit is contained in:
@ -24,6 +24,11 @@ static void dumpPosdb() {
|
||||
g_posdb.getRdb()->getBase(0)->generateGlobalIndex();
|
||||
}
|
||||
|
||||
static void mergePosdb() {
|
||||
g_posdb.getRdb()->getBase(0)->attemptMerge(0, true);
|
||||
g_posdb.getRdb()->getBase(0)->attemptMerge(0, true);
|
||||
}
|
||||
|
||||
class PosdbNoMergeTest : public ::testing::Test {
|
||||
protected:
|
||||
void SetUp() {
|
||||
@ -485,3 +490,53 @@ TEST_F(PosdbNoMergeTest, SingleDocSpiderDumpDeleteDumpSpider) {
|
||||
|
||||
EXPECT_TRUE(list.isExhausted());
|
||||
}
|
||||
|
||||
TEST_F(PosdbNoMergeTest, SingleDocSpiderDumpDeleteDumpSpiderMerging) {
|
||||
static const int64_t docId = 1;
|
||||
|
||||
// first round
|
||||
// doc contains 3 words (a, b, c)
|
||||
GbTest::addPosdbKey(m_rdb, 'a', docId, 0);
|
||||
GbTest::addPosdbKey(m_rdb, 'b', docId, 0);
|
||||
GbTest::addPosdbKey(m_rdb, 'c', docId, 0);
|
||||
GbTest::addPosdbKey(m_rdb, 'z', docId, 0, false, true);
|
||||
dumpPosdb();
|
||||
|
||||
// second round
|
||||
// doc deleted
|
||||
GbTest::addPosdbKey(m_rdb, 'a', docId, 0, true);
|
||||
GbTest::addPosdbKey(m_rdb, 'b', docId, 0, true);
|
||||
GbTest::addPosdbKey(m_rdb, 'c', docId, 0, true);
|
||||
GbTest::addPosdbKey(m_rdb, 'z', docId, 0, true, true);
|
||||
GbTest::addPosdbKey(m_rdb, POSDB_DELETEDOC_TERMID, docId, 0, true);
|
||||
dumpPosdb();
|
||||
|
||||
// third round
|
||||
// doc contains 3 words (d, e, f)
|
||||
GbTest::addPosdbKey(m_rdb, 'd', docId, 0);
|
||||
GbTest::addPosdbKey(m_rdb, 'e', docId, 0);
|
||||
GbTest::addPosdbKey(m_rdb, 'f', docId, 0);
|
||||
GbTest::addPosdbKey(m_rdb, 'y', docId, 0, false, true);
|
||||
GbTest::addPosdbKey(m_rdb, POSDB_DELETEDOC_TERMID, docId, 0, false);
|
||||
|
||||
saveAndReloadPosdbBucket();
|
||||
|
||||
mergePosdb();
|
||||
|
||||
// use extremes
|
||||
const char *startKey = KEYMIN();
|
||||
const char *endKey = KEYMAX();
|
||||
|
||||
Msg5 msg5;
|
||||
RdbList list;
|
||||
ASSERT_TRUE(msg5.getList(RDB_POSDB, 0, &list, startKey, endKey, -1, true, 0, -1, NULL, NULL, 0, false, 0, false));
|
||||
list.resetListPtr();
|
||||
|
||||
// verify that data returned is the same as data inserted above
|
||||
expectRecord(&list, 'd', docId);
|
||||
expectRecord(&list, 'e', docId);
|
||||
expectRecord(&list, 'f', docId);
|
||||
expectRecord(&list, 'y', docId, false, true);
|
||||
|
||||
EXPECT_TRUE(list.isExhausted());
|
||||
}
|
Reference in New Issue
Block a user