aboutsummaryrefslogtreecommitdiff
path: root/icing/file/posting_list/index-block_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'icing/file/posting_list/index-block_test.cc')
-rw-r--r--icing/file/posting_list/index-block_test.cc115
1 files changed, 74 insertions, 41 deletions
diff --git a/icing/file/posting_list/index-block_test.cc b/icing/file/posting_list/index-block_test.cc
index ebc9ba4..d841e79 100644
--- a/icing/file/posting_list/index-block_test.cc
+++ b/icing/file/posting_list/index-block_test.cc
@@ -14,11 +14,16 @@
#include "icing/file/posting_list/index-block.h"
+#include <memory>
+#include <string>
+#include <vector>
+
#include "icing/text_classifier/lib3/utils/base/status.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "icing/file/filesystem.h"
-#include "icing/file/posting_list/posting-list-used.h"
+#include "icing/file/posting_list/posting-list-common.h"
+#include "icing/index/hit/hit.h"
#include "icing/index/main/posting-list-hit-serializer.h"
#include "icing/testing/common-matchers.h"
#include "icing/testing/tmp-directory.h"
@@ -67,7 +72,7 @@ class IndexBlockTest : public ::testing::Test {
};
TEST_F(IndexBlockTest, CreateFromUninitializedRegionProducesEmptyBlock) {
- constexpr int kPostingListBytes = 20;
+ constexpr int kPostingListBytes = 24;
{
// Create an IndexBlock from this newly allocated file block.
@@ -80,7 +85,7 @@ TEST_F(IndexBlockTest, CreateFromUninitializedRegionProducesEmptyBlock) {
}
TEST_F(IndexBlockTest, SizeAccessorsWorkCorrectly) {
- constexpr int kPostingListBytes1 = 20;
+ constexpr int kPostingListBytes1 = 24;
// Create an IndexBlock from this newly allocated file block.
ICING_ASSERT_OK_AND_ASSIGN(IndexBlock block,
@@ -88,13 +93,13 @@ TEST_F(IndexBlockTest, SizeAccessorsWorkCorrectly) {
&filesystem_, serializer_.get(), sfd_->get(),
/*offset=*/0, kBlockSize, kPostingListBytes1));
EXPECT_THAT(block.posting_list_bytes(), Eq(kPostingListBytes1));
- // There should be (4096 - 12) / 20 = 204 posting lists
- // (sizeof(BlockHeader)==12). We can store a PostingListIndex of 203 in only 8
+ // There should be (4096 - 12) / 24 = 170 posting lists
+ // (sizeof(BlockHeader)==12). We can store a PostingListIndex of 170 in only 8
// bits.
- EXPECT_THAT(block.max_num_posting_lists(), Eq(204));
+ EXPECT_THAT(block.max_num_posting_lists(), Eq(170));
EXPECT_THAT(block.posting_list_index_bits(), Eq(8));
- constexpr int kPostingListBytes2 = 200;
+ constexpr int kPostingListBytes2 = 240;
// Create an IndexBlock from this newly allocated file block.
ICING_ASSERT_OK_AND_ASSIGN(
@@ -102,22 +107,27 @@ TEST_F(IndexBlockTest, SizeAccessorsWorkCorrectly) {
&filesystem_, serializer_.get(), sfd_->get(), /*offset=*/0,
kBlockSize, kPostingListBytes2));
EXPECT_THAT(block.posting_list_bytes(), Eq(kPostingListBytes2));
- // There should be (4096 - 12) / 200 = 20 posting lists
+ // There should be (4096 - 12) / 240 = 17 posting lists
// (sizeof(BlockHeader)==12). We can store a PostingListIndex of 19 in only 5
// bits.
- EXPECT_THAT(block.max_num_posting_lists(), Eq(20));
+ EXPECT_THAT(block.max_num_posting_lists(), Eq(17));
EXPECT_THAT(block.posting_list_index_bits(), Eq(5));
}
TEST_F(IndexBlockTest, IndexBlockChangesPersistAcrossInstances) {
- constexpr int kPostingListBytes = 2000;
+ constexpr int kPostingListBytes = 2004;
std::vector<Hit> test_hits{
- Hit(/*section_id=*/2, /*document_id=*/0, Hit::kDefaultTermFrequency),
- Hit(/*section_id=*/1, /*document_id=*/0, Hit::kDefaultTermFrequency),
- Hit(/*section_id=*/5, /*document_id=*/1, /*term_frequency=*/99),
- Hit(/*section_id=*/3, /*document_id=*/3, /*term_frequency=*/17),
- Hit(/*section_id=*/10, /*document_id=*/10, Hit::kDefaultTermFrequency),
+ Hit(/*section_id=*/2, /*document_id=*/0, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/1, /*document_id=*/0, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/5, /*document_id=*/1, /*term_frequency=*/99,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/3, /*document_id=*/3, /*term_frequency=*/17,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/10, /*document_id=*/10, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
};
PostingListIndex allocated_index;
{
@@ -158,21 +168,31 @@ TEST_F(IndexBlockTest, IndexBlockChangesPersistAcrossInstances) {
}
TEST_F(IndexBlockTest, IndexBlockMultiplePostingLists) {
- constexpr int kPostingListBytes = 2000;
+ constexpr int kPostingListBytes = 2004;
std::vector<Hit> hits_in_posting_list1{
- Hit(/*section_id=*/2, /*document_id=*/0, Hit::kDefaultTermFrequency),
- Hit(/*section_id=*/1, /*document_id=*/0, Hit::kDefaultTermFrequency),
- Hit(/*section_id=*/5, /*document_id=*/1, /*term_frequency=*/99),
- Hit(/*section_id=*/3, /*document_id=*/3, /*term_frequency=*/17),
- Hit(/*section_id=*/10, /*document_id=*/10, Hit::kDefaultTermFrequency),
+ Hit(/*section_id=*/2, /*document_id=*/0, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/1, /*document_id=*/0, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/5, /*document_id=*/1, /*term_frequency=*/99,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/3, /*document_id=*/3, /*term_frequency=*/17,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/10, /*document_id=*/10, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
};
std::vector<Hit> hits_in_posting_list2{
- Hit(/*section_id=*/12, /*document_id=*/220, /*term_frequency=*/88),
- Hit(/*section_id=*/17, /*document_id=*/265, Hit::kDefaultTermFrequency),
- Hit(/*section_id=*/0, /*document_id=*/287, /*term_frequency=*/2),
- Hit(/*section_id=*/11, /*document_id=*/306, /*term_frequency=*/12),
- Hit(/*section_id=*/10, /*document_id=*/306, Hit::kDefaultTermFrequency),
+ Hit(/*section_id=*/12, /*document_id=*/220, /*term_frequency=*/88,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/17, /*document_id=*/265, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/0, /*document_id=*/287, /*term_frequency=*/2,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/11, /*document_id=*/306, /*term_frequency=*/12,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/10, /*document_id=*/306, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
};
PostingListIndex allocated_index_1;
PostingListIndex allocated_index_2;
@@ -242,7 +262,7 @@ TEST_F(IndexBlockTest, IndexBlockMultiplePostingLists) {
}
TEST_F(IndexBlockTest, IndexBlockReallocatingPostingLists) {
- constexpr int kPostingListBytes = 2000;
+ constexpr int kPostingListBytes = 2004;
// Create an IndexBlock from this newly allocated file block.
ICING_ASSERT_OK_AND_ASSIGN(IndexBlock block,
@@ -252,11 +272,16 @@ TEST_F(IndexBlockTest, IndexBlockReallocatingPostingLists) {
// Add hits to the first posting list.
std::vector<Hit> hits_in_posting_list1{
- Hit(/*section_id=*/2, /*document_id=*/0, Hit::kDefaultTermFrequency),
- Hit(/*section_id=*/1, /*document_id=*/0, Hit::kDefaultTermFrequency),
- Hit(/*section_id=*/5, /*document_id=*/1, /*term_frequency=*/99),
- Hit(/*section_id=*/3, /*document_id=*/3, /*term_frequency=*/17),
- Hit(/*section_id=*/10, /*document_id=*/10, Hit::kDefaultTermFrequency),
+ Hit(/*section_id=*/2, /*document_id=*/0, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/1, /*document_id=*/0, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/5, /*document_id=*/1, /*term_frequency=*/99,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/3, /*document_id=*/3, /*term_frequency=*/17,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/10, /*document_id=*/10, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
};
ICING_ASSERT_OK_AND_ASSIGN(IndexBlock::PostingListAndBlockInfo alloc_info_1,
block.AllocatePostingList());
@@ -270,11 +295,16 @@ TEST_F(IndexBlockTest, IndexBlockReallocatingPostingLists) {
// Add hits to the second posting list.
std::vector<Hit> hits_in_posting_list2{
- Hit(/*section_id=*/12, /*document_id=*/220, /*term_frequency=*/88),
- Hit(/*section_id=*/17, /*document_id=*/265, Hit::kDefaultTermFrequency),
- Hit(/*section_id=*/0, /*document_id=*/287, /*term_frequency=*/2),
- Hit(/*section_id=*/11, /*document_id=*/306, /*term_frequency=*/12),
- Hit(/*section_id=*/10, /*document_id=*/306, Hit::kDefaultTermFrequency),
+ Hit(/*section_id=*/12, /*document_id=*/220, /*term_frequency=*/88,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/17, /*document_id=*/265, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/0, /*document_id=*/287, /*term_frequency=*/2,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/11, /*document_id=*/306, /*term_frequency=*/12,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/10, /*document_id=*/306, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
};
ICING_ASSERT_OK_AND_ASSIGN(IndexBlock::PostingListAndBlockInfo alloc_info_2,
block.AllocatePostingList());
@@ -296,9 +326,12 @@ TEST_F(IndexBlockTest, IndexBlockReallocatingPostingLists) {
EXPECT_THAT(block.HasFreePostingLists(), IsOkAndHolds(IsTrue()));
std::vector<Hit> hits_in_posting_list3{
- Hit(/*section_id=*/12, /*document_id=*/0, /*term_frequency=*/88),
- Hit(/*section_id=*/17, /*document_id=*/1, Hit::kDefaultTermFrequency),
- Hit(/*section_id=*/0, /*document_id=*/2, /*term_frequency=*/2),
+ Hit(/*section_id=*/12, /*document_id=*/0, /*term_frequency=*/88,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/17, /*document_id=*/1, Hit::kDefaultTermFrequency,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
+ Hit(/*section_id=*/0, /*document_id=*/2, /*term_frequency=*/2,
+ /*is_in_prefix_section=*/false, /*is_prefix_hit=*/false),
};
ICING_ASSERT_OK_AND_ASSIGN(IndexBlock::PostingListAndBlockInfo alloc_info_3,
block.AllocatePostingList());
@@ -317,7 +350,7 @@ TEST_F(IndexBlockTest, IndexBlockReallocatingPostingLists) {
}
TEST_F(IndexBlockTest, IndexBlockNextBlockIndex) {
- constexpr int kPostingListBytes = 2000;
+ constexpr int kPostingListBytes = 2004;
constexpr int kSomeBlockIndex = 22;
{