diff options
Diffstat (limited to 'icing/file/posting_list/index-block_test.cc')
-rw-r--r-- | icing/file/posting_list/index-block_test.cc | 115 |
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; { |