aboutsummaryrefslogtreecommitdiff
path: root/icing/icing-search-engine_optimize_test.cc
diff options
context:
space:
mode:
authorJiayu Hu <hujiayu@google.com>2023-04-19 12:31:23 -0700
committerJiayu Hu <hujiayu@google.com>2023-04-19 12:33:32 -0700
commita7d57e98ea7168d66cf01ace85598e33d5e9e5db (patch)
tree6685971fd4a027f52d674ee646a79ab41d4ce24f /icing/icing-search-engine_optimize_test.cc
parentb59049b030cc330b6c8ae1d03ea4c1a34235ac9b (diff)
downloadicing-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.cc81
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