diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-11-02 22:13:41 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-11-02 22:13:41 +0000 |
commit | 067aaed60b8b74fd03044ae614ad95e4c3b80f80 (patch) | |
tree | 155e68e900a1f37adf113e6f91090dfb41f63c84 | |
parent | 8fbaef6e5584fa1f850e9fe8ce4f8ef88a2597d4 (diff) | |
parent | a7a951e46e76865b3f82d7538177290c99d6f8ea (diff) | |
download | icing-android14-mainline-tethering-release.tar.gz |
Snap for 11041982 from a7a951e46e76865b3f82d7538177290c99d6f8ea to mainline-tethering-releaseaml_tet_341411060aml_tet_341310230android14-mainline-tethering-release
Change-Id: I6f993dca9472956f691c3286ea9c7fa450b37534
-rw-r--r-- | icing/icing-search-engine_schema_test.cc | 20 | ||||
-rw-r--r-- | icing/jni/icing-search-engine-jni.cc | 14 | ||||
-rw-r--r-- | icing/schema/schema-store.cc | 6 | ||||
-rw-r--r-- | java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java | 75 |
4 files changed, 112 insertions, 3 deletions
diff --git a/icing/icing-search-engine_schema_test.cc b/icing/icing-search-engine_schema_test.cc index 0e88c5a..d665673 100644 --- a/icing/icing-search-engine_schema_test.cc +++ b/icing/icing-search-engine_schema_test.cc @@ -3131,6 +3131,26 @@ TEST_F(IcingSearchEngineSchemaTest, IcingShouldWorkFor64Sections) { EqualsSearchResultIgnoreStatsAndScores(expected_no_documents)); } +TEST_F(IcingSearchEngineSchemaTest, IcingShouldReturnErrorForExtraSections) { + // Create a schema with more sections than allowed. + SchemaTypeConfigBuilder schema_type_config_builder = + SchemaTypeConfigBuilder().SetType("type"); + for (int i = 0; i <= kMaxSectionId + 1; ++i) { + schema_type_config_builder.AddProperty( + PropertyConfigBuilder() + .SetName("prop" + std::to_string(i)) + .SetDataTypeString(TERM_MATCH_PREFIX, TOKENIZER_PLAIN) + .SetCardinality(CARDINALITY_OPTIONAL)); + } + SchemaProto schema = + SchemaBuilder().AddType(schema_type_config_builder).Build(); + + IcingSearchEngine icing(GetDefaultIcingOptions(), GetTestJniCache()); + ASSERT_THAT(icing.Initialize().status(), ProtoIsOk()); + ASSERT_THAT(icing.SetSchema(schema).status().message(), + HasSubstr("Too many properties to be indexed")); +} + } // namespace } // namespace lib } // namespace icing diff --git a/icing/jni/icing-search-engine-jni.cc b/icing/jni/icing-search-engine-jni.cc index f551054..a0883fa 100644 --- a/icing/jni/icing-search-engine-jni.cc +++ b/icing/jni/icing-search-engine-jni.cc @@ -499,6 +499,9 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { {"nativeGetSchema", "(Lcom/google/android/icing/IcingSearchEngineImpl;)[B", reinterpret_cast<void*>(nativeGetSchema)}, + {"nativeGetSchemaType", + "(Lcom/google/android/icing/IcingSearchEngineImpl;Ljava/lang/String;)[B", + reinterpret_cast<void*>(nativeGetSchemaType)}, {"nativePut", "(Lcom/google/android/icing/IcingSearchEngineImpl;[B)[B", reinterpret_cast<void*>(nativePut)}, {"nativeGet", @@ -524,6 +527,12 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { "(Lcom/google/android/icing/IcingSearchEngineImpl;Ljava/lang/" "String;Ljava/lang/String;)[B", reinterpret_cast<void*>(nativeDelete)}, + {"nativeDeleteByNamespace", + "(Lcom/google/android/icing/IcingSearchEngineImpl;Ljava/lang/String;)[B", + reinterpret_cast<void*>(nativeDeleteByNamespace)}, + {"nativeDeleteBySchemaType", + "(Lcom/google/android/icing/IcingSearchEngineImpl;Ljava/lang/String;)[B", + reinterpret_cast<void*>(nativeDeleteBySchemaType)}, {"nativeDeleteByQuery", "(Lcom/google/android/icing/IcingSearchEngineImpl;[BZ)[B", reinterpret_cast<void*>(nativeDeleteByQuery)}, @@ -546,6 +555,11 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { {"nativeGetDebugInfo", "(Lcom/google/android/icing/IcingSearchEngineImpl;I)[B", reinterpret_cast<void*>(nativeGetDebugInfo)}, + {"nativeShouldLog", "(SS)Z", reinterpret_cast<void*>(nativeShouldLog)}, + {"nativeSetLoggingLevel", "(SS)Z", + reinterpret_cast<void*>(nativeSetLoggingLevel)}, + {"nativeGetLoggingTag", "()Ljava/lang/String;", + reinterpret_cast<void*>(nativeGetLoggingTag)}, }; int register_natives_success = env->RegisterNatives( java_class, methods, sizeof(methods) / sizeof(JNINativeMethod)); diff --git a/icing/schema/schema-store.cc b/icing/schema/schema-store.cc index a389d13..85ee6b6 100644 --- a/icing/schema/schema-store.cc +++ b/icing/schema/schema-store.cc @@ -448,7 +448,7 @@ libtextclassifier3::Status SchemaStore::InitializeDerivedFiles() { "Combined checksum of SchemaStore was inconsistent"); } - BuildInMemoryCache(); + ICING_RETURN_IF_ERROR(BuildInMemoryCache()); return libtextclassifier3::Status::OK; } @@ -463,7 +463,7 @@ libtextclassifier3::Status SchemaStore::RegenerateDerivedFiles( ICING_RETURN_IF_ERROR(schema_type_mapper_->Put( type_config.schema_type(), schema_type_mapper_->num_keys())); } - BuildInMemoryCache(); + ICING_RETURN_IF_ERROR(BuildInMemoryCache()); if (create_overlay_if_necessary) { ICING_ASSIGN_OR_RETURN( @@ -494,7 +494,7 @@ libtextclassifier3::Status SchemaStore::RegenerateDerivedFiles( /*overlay_created=*/true, min_overlay_version_compatibility); // Rebuild in memory data - references to the old schema will be invalid // now. - BuildInMemoryCache(); + ICING_RETURN_IF_ERROR(BuildInMemoryCache()); } } diff --git a/java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java b/java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java index d243f87..2bbd621 100644 --- a/java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java +++ b/java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java @@ -296,6 +296,56 @@ public final class IcingSearchEngineTest { } @Test + public void testDeleteByNamespace() throws Exception { + assertStatusOk(icingSearchEngine.initialize().getStatus()); + + SchemaTypeConfigProto emailTypeConfig = createEmailTypeConfig(); + SchemaProto schema = SchemaProto.newBuilder().addTypes(emailTypeConfig).build(); + assertThat( + icingSearchEngine + .setSchema(schema, /*ignoreErrorsAndDeleteDocuments=*/ false) + .getStatus() + .getCode()) + .isEqualTo(StatusProto.Code.OK); + + DocumentProto emailDocument = createEmailDocument("namespace", "uri"); + assertStatusOk(icingSearchEngine.put(emailDocument).getStatus()); + + DeleteByNamespaceResultProto deleteByNamespaceResultProto = + icingSearchEngine.deleteByNamespace("namespace"); + assertStatusOk(deleteByNamespaceResultProto.getStatus()); + + GetResultProto getResultProto = + icingSearchEngine.get("namespace", "uri", GetResultSpecProto.getDefaultInstance()); + assertThat(getResultProto.getStatus().getCode()).isEqualTo(StatusProto.Code.NOT_FOUND); + } + + @Test + public void testDeleteBySchemaType() throws Exception { + assertStatusOk(icingSearchEngine.initialize().getStatus()); + + SchemaTypeConfigProto emailTypeConfig = createEmailTypeConfig(); + SchemaProto schema = SchemaProto.newBuilder().addTypes(emailTypeConfig).build(); + assertThat( + icingSearchEngine + .setSchema(schema, /*ignoreErrorsAndDeleteDocuments=*/ false) + .getStatus() + .getCode()) + .isEqualTo(StatusProto.Code.OK); + + DocumentProto emailDocument = createEmailDocument("namespace", "uri"); + assertStatusOk(icingSearchEngine.put(emailDocument).getStatus()); + + DeleteBySchemaTypeResultProto deleteBySchemaTypeResultProto = + icingSearchEngine.deleteBySchemaType(EMAIL_TYPE); + assertStatusOk(deleteBySchemaTypeResultProto.getStatus()); + + GetResultProto getResultProto = + icingSearchEngine.get("namespace", "uri", GetResultSpecProto.getDefaultInstance()); + assertThat(getResultProto.getStatus().getCode()).isEqualTo(StatusProto.Code.NOT_FOUND); + } + + @Test public void testDeleteByQuery() throws Exception { assertStatusOk(icingSearchEngine.initialize().getStatus()); @@ -700,6 +750,31 @@ public final class IcingSearchEngineTest { assertThat(response.getSuggestions(1).getQuery()).isEqualTo("fo"); } + @Test + public void testLogging() throws Exception { + // Set to INFO + assertThat(IcingSearchEngine.setLoggingLevel(LogSeverity.Code.INFO)).isTrue(); + assertThat(IcingSearchEngine.shouldLog(LogSeverity.Code.INFO)).isTrue(); + assertThat(IcingSearchEngine.shouldLog(LogSeverity.Code.DBG)).isFalse(); + + // Set to WARNING + assertThat(IcingSearchEngine.setLoggingLevel(LogSeverity.Code.WARNING)).isTrue(); + assertThat(IcingSearchEngine.shouldLog(LogSeverity.Code.WARNING)).isTrue(); + assertThat(IcingSearchEngine.shouldLog(LogSeverity.Code.INFO)).isFalse(); + + // Set to DEBUG + assertThat(IcingSearchEngine.setLoggingLevel(LogSeverity.Code.DBG)).isTrue(); + assertThat(IcingSearchEngine.shouldLog(LogSeverity.Code.DBG)).isTrue(); + assertThat(IcingSearchEngine.shouldLog(LogSeverity.Code.VERBOSE)).isFalse(); + + // Set to VERBOSE + assertThat(IcingSearchEngine.setLoggingLevel(LogSeverity.Code.VERBOSE, (short) 1)).isTrue(); + assertThat(IcingSearchEngine.shouldLog(LogSeverity.Code.VERBOSE, (short) 1)).isTrue(); + assertThat(IcingSearchEngine.shouldLog(LogSeverity.Code.VERBOSE, (short) 2)).isFalse(); + + assertThat(IcingSearchEngine.getLoggingTag()).isNotEmpty(); + } + private static void assertStatusOk(StatusProto status) { assertWithMessage(status.getMessage()).that(status.getCode()).isEqualTo(StatusProto.Code.OK); } |