diff options
author | Jiayu Hu <hujiayu@google.com> | 2023-04-19 12:31:23 -0700 |
---|---|---|
committer | Jiayu Hu <hujiayu@google.com> | 2023-04-19 12:33:32 -0700 |
commit | a7d57e98ea7168d66cf01ace85598e33d5e9e5db (patch) | |
tree | 6685971fd4a027f52d674ee646a79ab41d4ce24f /icing/icing-search-engine_optimize_test.cc | |
parent | b59049b030cc330b6c8ae1d03ea4c1a34235ac9b (diff) | |
download | icing-a7d57e98ea7168d66cf01ace85598e33d5e9e5db.tar.gz |
Update Icing from upstream.
Descriptions:
========================================================================
Adds join info to QueryStatsProto
========================================================================
[Join][cleanup][1/x] Add Icing benchmark for qualified id join
========================================================================
[NumericSearch][benchmark][2/x] Modify run-benchmarks.py to onboard numeric search benchmark
========================================================================
[NumericSearch][benchmark][1/x] Add numeric search icing search engine benchmark
========================================================================
Switch Iterator access type used in SnippetRetriever back to kForwardIterator.
========================================================================
Fix `DocumentStore::OptimizeInto` by passing `options_.document_store_namespace_id_fingerprint()`
========================================================================
Add file size check when initializing mmap for existing metadata file.
========================================================================
Add compression level option to Icing and propagate down to PortableFileBackedProtoLog
========================================================================
Add portable_equals_proto namespace for EqualsProto in tokenized-document_test.
========================================================================
Refactor schema to check consistency of polymorphism by dependency map
========================================================================
Support the `this.propertyWeights()` function in advanced scoring
========================================================================
Randomly set optimize_rebuild_index_threshold in monkey test
========================================================================
Change benchmark batch query latency to average
========================================================================
Performance improvements to SnippetRetriever.
========================================================================
Bug: 270102295
Bug: 260625837
Bug: 269295094
Bug: 193244409
Bug: 269513147
Bug: 276345448
Bug: 259744228
Bug: 272145329
Bug: 276349029
Change-Id: Ief1cb2c21f67aac420d6b79d9b946bbecdc39a5c
Diffstat (limited to 'icing/icing-search-engine_optimize_test.cc')
-rw-r--r-- | icing/icing-search-engine_optimize_test.cc | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/icing/icing-search-engine_optimize_test.cc b/icing/icing-search-engine_optimize_test.cc index 0c5cb7a..48fae13 100644 --- a/icing/icing-search-engine_optimize_test.cc +++ b/icing/icing-search-engine_optimize_test.cc @@ -1753,6 +1753,87 @@ TEST_F(IcingSearchEngineOptimizeTest, OptimizeStatsProtoTest) { EXPECT_THAT(result.optimize_stats(), EqualsProto(expected)); } +TEST_F(IcingSearchEngineOptimizeTest, + OptimizationRewritesDocsWithNewCompressionLevel) { + SchemaProto schema = + SchemaBuilder() + .AddType(SchemaTypeConfigBuilder().SetType("Message").AddProperty( + PropertyConfigBuilder() + .SetName("body") + .SetDataTypeString(TERM_MATCH_PREFIX, TOKENIZER_PLAIN) + .SetCardinality(CARDINALITY_REQUIRED))) + .Build(); + DocumentProto document1 = + DocumentBuilder() + .SetKey("namespace", "uri1") + .SetSchema("Message") + .AddStringProperty("body", "message body one") + .SetCreationTimestampMs(kDefaultCreationTimestampMs) + .Build(); + DocumentProto document2 = + DocumentBuilder() + .SetKey("namespace", "uri2") + .SetSchema("Message") + .AddStringProperty("body", "message body two") + .SetCreationTimestampMs(kDefaultCreationTimestampMs) + .Build(); + IcingSearchEngineOptions icing_options = GetDefaultIcingOptions(); + icing_options.set_compression_level(3); + int64_t document_log_size_compression_3; + int64_t document_log_size_after_opti_no_compression; + int64_t document_log_size_after_opti_compression_3; + const std::string document_log_path = + icing_options.base_dir() + "/document_dir/" + + DocumentLogCreator::GetDocumentLogFilename(); + { + IcingSearchEngine icing(icing_options, GetTestJniCache()); + ASSERT_THAT(icing.Initialize().status(), ProtoIsOk()); + ASSERT_THAT(icing.SetSchema(schema).status(), ProtoIsOk()); + ASSERT_THAT(icing.Put(document1).status(), ProtoIsOk()); + ASSERT_THAT(icing.Put(document2).status(), ProtoIsOk()); + ASSERT_THAT(icing.PersistToDisk(PersistType::FULL).status(), ProtoIsOk()); + document_log_size_compression_3 = + filesystem()->GetFileSize(document_log_path.c_str()); + } // Destroys IcingSearchEngine to make sure nothing is cached. + + // Turn off compression + icing_options.set_compression_level(0); + + { + IcingSearchEngine icing(icing_options, GetTestJniCache()); + ASSERT_THAT(icing.Initialize().status(), ProtoIsOk()); + // Document log size is the same even after reopening with a different + // compression level + ASSERT_EQ(document_log_size_compression_3, + filesystem()->GetFileSize(document_log_path.c_str())); + ASSERT_THAT(icing.Optimize().status(), ProtoIsOk()); + document_log_size_after_opti_no_compression = + filesystem()->GetFileSize(document_log_path.c_str()); + // Document log size is larger after optimizing since optimizing rewrites + // with the new compression level which is 0 or none + ASSERT_GT(document_log_size_after_opti_no_compression, + document_log_size_compression_3); + } + + // Restore the original compression level + icing_options.set_compression_level(3); + + { + IcingSearchEngine icing(icing_options, GetTestJniCache()); + ASSERT_THAT(icing.Initialize().status(), ProtoIsOk()); + // Document log size is the same even after reopening with a different + // compression level + ASSERT_EQ(document_log_size_after_opti_no_compression, + filesystem()->GetFileSize(document_log_path.c_str())); + ASSERT_THAT(icing.Optimize().status(), ProtoIsOk()); + document_log_size_after_opti_compression_3 = + filesystem()->GetFileSize(document_log_path.c_str()); + // Document log size should be the same as it was originally + ASSERT_EQ(document_log_size_after_opti_compression_3, + document_log_size_compression_3); + } +} + } // namespace } // namespace lib } // namespace icing |