diff options
Diffstat (limited to 'icing/store/document-store_test.cc')
-rw-r--r-- | icing/store/document-store_test.cc | 282 |
1 files changed, 185 insertions, 97 deletions
diff --git a/icing/store/document-store_test.cc b/icing/store/document-store_test.cc index 146191f..9a1f4a6 100644 --- a/icing/store/document-store_test.cc +++ b/icing/store/document-store_test.cc @@ -71,7 +71,6 @@ using ::testing::Ge; using ::testing::Gt; using ::testing::HasSubstr; using ::testing::IsEmpty; -using ::testing::IsFalse; using ::testing::IsTrue; using ::testing::Not; using ::testing::Return; @@ -373,22 +372,27 @@ TEST_F(DocumentStoreTest, IsDocumentExistingWithoutStatus) { ICING_ASSERT_OK_AND_ASSIGN(DocumentId document_id2, doc_store->Put(DocumentProto(test_document2_))); - EXPECT_TRUE(doc_store->GetAliveDocumentFilterData(document_id1)); - EXPECT_TRUE(doc_store->GetAliveDocumentFilterData(document_id2)); + EXPECT_TRUE(doc_store->GetAliveDocumentFilterData( + document_id1, fake_clock_.GetSystemTimeMilliseconds())); + EXPECT_TRUE(doc_store->GetAliveDocumentFilterData( + document_id2, fake_clock_.GetSystemTimeMilliseconds())); DocumentId invalid_document_id_negative = -1; - EXPECT_FALSE( - doc_store->GetAliveDocumentFilterData(invalid_document_id_negative)); + EXPECT_FALSE(doc_store->GetAliveDocumentFilterData( + invalid_document_id_negative, fake_clock_.GetSystemTimeMilliseconds())); DocumentId invalid_document_id_greater_than_max = kMaxDocumentId + 2; EXPECT_FALSE(doc_store->GetAliveDocumentFilterData( - invalid_document_id_greater_than_max)); + invalid_document_id_greater_than_max, + fake_clock_.GetSystemTimeMilliseconds())); - EXPECT_FALSE(doc_store->GetAliveDocumentFilterData(kInvalidDocumentId)); + EXPECT_FALSE(doc_store->GetAliveDocumentFilterData( + kInvalidDocumentId, fake_clock_.GetSystemTimeMilliseconds())); DocumentId invalid_document_id_out_of_range = document_id2 + 1; - EXPECT_FALSE( - doc_store->GetAliveDocumentFilterData(invalid_document_id_out_of_range)); + EXPECT_FALSE(doc_store->GetAliveDocumentFilterData( + invalid_document_id_out_of_range, + fake_clock_.GetSystemTimeMilliseconds())); } TEST_F(DocumentStoreTest, GetDeletedDocumentNotFound) { @@ -404,8 +408,9 @@ TEST_F(DocumentStoreTest, GetDeletedDocumentNotFound) { document_store->Get(test_document1_.namespace_(), test_document1_.uri()), IsOkAndHolds(EqualsProto(test_document1_))); - ICING_EXPECT_OK(document_store->Delete(test_document1_.namespace_(), - test_document1_.uri())); + ICING_EXPECT_OK(document_store->Delete( + test_document1_.namespace_(), test_document1_.uri(), + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT( document_store->Get(test_document1_.namespace_(), test_document1_.uri()), StatusIs(libtextclassifier3::StatusCode::NOT_FOUND)); @@ -488,9 +493,9 @@ TEST_F(DocumentStoreTest, DeleteNonexistentDocumentNotFound) { DocumentLogCreator::GetDocumentLogFilename()) .c_str()); - EXPECT_THAT( - document_store->Delete("nonexistent_namespace", "nonexistent_uri"), - StatusIs(libtextclassifier3::StatusCode::NOT_FOUND)); + EXPECT_THAT(document_store->Delete("nonexistent_namespace", "nonexistent_uri", + fake_clock_.GetSystemTimeMilliseconds()), + StatusIs(libtextclassifier3::StatusCode::NOT_FOUND)); int64_t document_log_size_after = filesystem_.GetFileSize( absl_ports::StrCat(document_store_dir_, "/", @@ -514,8 +519,8 @@ TEST_F(DocumentStoreTest, DeleteNonexistentDocumentPrintableErrorMessage) { DocumentLogCreator::GetDocumentLogFilename()) .c_str()); - libtextclassifier3::Status status = - document_store->Delete("android$contacts/", "661"); + libtextclassifier3::Status status = document_store->Delete( + "android$contacts/", "661", fake_clock_.GetSystemTimeMilliseconds()); EXPECT_THAT(status, StatusIs(libtextclassifier3::StatusCode::NOT_FOUND)); for (char c : status.error_message()) { EXPECT_THAT(std::isprint(c), IsTrue()); @@ -539,12 +544,14 @@ TEST_F(DocumentStoreTest, DeleteAlreadyDeletedDocumentNotFound) { ICING_EXPECT_OK(document_store->Put(test_document1_)); // First time is OK - ICING_EXPECT_OK(document_store->Delete(test_document1_.namespace_(), - test_document1_.uri())); + ICING_EXPECT_OK(document_store->Delete( + test_document1_.namespace_(), test_document1_.uri(), + fake_clock_.GetSystemTimeMilliseconds())); // Deleting it again is NOT_FOUND EXPECT_THAT(document_store->Delete(test_document1_.namespace_(), - test_document1_.uri()), + test_document1_.uri(), + fake_clock_.GetSystemTimeMilliseconds()), StatusIs(libtextclassifier3::StatusCode::NOT_FOUND)); } @@ -626,8 +633,9 @@ TEST_F(DocumentStoreTest, DeleteByNamespaceNoExistingDocumentsNotFound) { std::move(create_result.document_store); ICING_EXPECT_OK(document_store->Put(test_document1_)); - ICING_EXPECT_OK(document_store->Delete(test_document1_.namespace_(), - test_document1_.uri())); + ICING_EXPECT_OK(document_store->Delete( + test_document1_.namespace_(), test_document1_.uri(), + fake_clock_.GetSystemTimeMilliseconds())); // At this point, there are no existing documents with the namespace, even // though Icing's derived files know about this namespace. We should still @@ -829,8 +837,9 @@ TEST_F(DocumentStoreTest, DeleteBySchemaTypeNoExistingDocumentsNotFound) { std::move(create_result.document_store); ICING_EXPECT_OK(document_store->Put(test_document1_)); - ICING_EXPECT_OK(document_store->Delete(test_document1_.namespace_(), - test_document1_.uri())); + ICING_EXPECT_OK(document_store->Delete( + test_document1_.namespace_(), test_document1_.uri(), + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT( document_store->DeleteBySchemaType(test_document1_.schema()).status, @@ -925,8 +934,9 @@ TEST_F(DocumentStoreTest, PutDeleteThenPut) { std::unique_ptr<DocumentStore> doc_store = std::move(create_result.document_store); ICING_EXPECT_OK(doc_store->Put(test_document1_)); - ICING_EXPECT_OK( - doc_store->Delete(test_document1_.namespace_(), test_document1_.uri())); + ICING_EXPECT_OK(doc_store->Delete(test_document1_.namespace_(), + test_document1_.uri(), + fake_clock_.GetSystemTimeMilliseconds())); ICING_EXPECT_OK(doc_store->Put(test_document1_)); } @@ -1092,7 +1102,8 @@ TEST_F(DocumentStoreTest, OptimizeInto) { // is deleted ASSERT_TRUE(filesystem_.DeleteDirectoryRecursively(optimized_dir.c_str())); ASSERT_TRUE(filesystem_.CreateDirectoryRecursively(optimized_dir.c_str())); - ICING_ASSERT_OK(doc_store->Delete("namespace", "uri1")); + ICING_ASSERT_OK(doc_store->Delete("namespace", "uri1", + fake_clock_.GetSystemTimeMilliseconds())); // DocumentId 0 is removed. EXPECT_THAT(doc_store->OptimizeInto(optimized_dir, lang_segmenter_.get(), /*namespace_id_fingerprint=*/false), @@ -1121,7 +1132,8 @@ TEST_F(DocumentStoreTest, OptimizeInto) { // Delete the last document ASSERT_TRUE(filesystem_.DeleteDirectoryRecursively(optimized_dir.c_str())); ASSERT_TRUE(filesystem_.CreateDirectoryRecursively(optimized_dir.c_str())); - ICING_ASSERT_OK(doc_store->Delete("namespace", "uri2")); + ICING_ASSERT_OK(doc_store->Delete("namespace", "uri2", + fake_clock_.GetSystemTimeMilliseconds())); // DocumentId 0 and 1 is removed, and DocumentId 2 is expired. EXPECT_THAT(doc_store->OptimizeInto(optimized_dir, lang_segmenter_.get(), /*namespace_id_fingerprint=*/false), @@ -1184,7 +1196,9 @@ TEST_F(DocumentStoreTest, ShouldRecoverFromDataLoss) { /*num_docs=*/2, /*sum_length_in_tokens=*/8))); // Delete document 1 - EXPECT_THAT(doc_store->Delete("icing", "email/1"), IsOk()); + EXPECT_THAT(doc_store->Delete("icing", "email/1", + fake_clock_.GetSystemTimeMilliseconds()), + IsOk()); EXPECT_THAT(doc_store->Get(document_id1), StatusIs(libtextclassifier3::StatusCode::NOT_FOUND)); EXPECT_THAT(doc_store->Get(document_id2), @@ -1218,7 +1232,8 @@ TEST_F(DocumentStoreTest, ShouldRecoverFromDataLoss) { // Checks derived filter cache ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData doc_filter_data, - doc_store->GetAliveDocumentFilterData(document_id2)); + doc_store->GetAliveDocumentFilterData( + document_id2, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(doc_filter_data, Eq(DocumentFilterData( /*namespace_id=*/0, @@ -1271,7 +1286,9 @@ TEST_F(DocumentStoreTest, ShouldRecoverFromCorruptDerivedFile) { IsOkAndHolds(CorpusAssociatedScoreData( /*num_docs=*/2, /*sum_length_in_tokens=*/8))); // Delete document 1 - EXPECT_THAT(doc_store->Delete("icing", "email/1"), IsOk()); + EXPECT_THAT(doc_store->Delete("icing", "email/1", + fake_clock_.GetSystemTimeMilliseconds()), + IsOk()); EXPECT_THAT(doc_store->Get(document_id1), StatusIs(libtextclassifier3::StatusCode::NOT_FOUND)); EXPECT_THAT(doc_store->Get(document_id2), @@ -1316,7 +1333,8 @@ TEST_F(DocumentStoreTest, ShouldRecoverFromCorruptDerivedFile) { // Checks derived filter cache ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData doc_filter_data, - doc_store->GetAliveDocumentFilterData(document_id2)); + doc_store->GetAliveDocumentFilterData( + document_id2, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(doc_filter_data, Eq(DocumentFilterData( /*namespace_id=*/0, @@ -1336,8 +1354,10 @@ TEST_F(DocumentStoreTest, ShouldRecoverFromCorruptDerivedFile) { // scratch. UsageStore::UsageScores expected_scores; expected_scores.usage_type1_count = 1; - ICING_ASSERT_HAS_VALUE_AND_ASSIGN(UsageStore::UsageScores actual_scores, - doc_store->GetUsageScores(document_id2)); + ICING_ASSERT_HAS_VALUE_AND_ASSIGN( + UsageStore::UsageScores actual_scores, + doc_store->GetUsageScores(document_id2, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); } @@ -1377,7 +1397,9 @@ TEST_F(DocumentStoreTest, ShouldRecoverFromDiscardDerivedFiles) { IsOkAndHolds(CorpusAssociatedScoreData( /*num_docs=*/2, /*sum_length_in_tokens=*/8))); // Delete document 1 - EXPECT_THAT(doc_store->Delete("icing", "email/1"), IsOk()); + EXPECT_THAT(doc_store->Delete("icing", "email/1", + fake_clock_.GetSystemTimeMilliseconds()), + IsOk()); EXPECT_THAT(doc_store->Get(document_id1), StatusIs(libtextclassifier3::StatusCode::NOT_FOUND)); EXPECT_THAT(doc_store->Get(document_id2), @@ -1409,7 +1431,8 @@ TEST_F(DocumentStoreTest, ShouldRecoverFromDiscardDerivedFiles) { // Checks derived filter cache ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData doc_filter_data, - doc_store->GetAliveDocumentFilterData(document_id2)); + doc_store->GetAliveDocumentFilterData( + document_id2, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(doc_filter_data, Eq(DocumentFilterData( /*namespace_id=*/0, @@ -1429,8 +1452,10 @@ TEST_F(DocumentStoreTest, ShouldRecoverFromDiscardDerivedFiles) { // scratch. UsageStore::UsageScores expected_scores; expected_scores.usage_type1_count = 1; - ICING_ASSERT_HAS_VALUE_AND_ASSIGN(UsageStore::UsageScores actual_scores, - doc_store->GetUsageScores(document_id2)); + ICING_ASSERT_HAS_VALUE_AND_ASSIGN( + UsageStore::UsageScores actual_scores, + doc_store->GetUsageScores(document_id2, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); } @@ -1469,7 +1494,9 @@ TEST_F(DocumentStoreTest, ShouldRecoverFromBadChecksum) { EXPECT_THAT(doc_store->GetCorpusAssociatedScoreData(/*corpus_id=*/0), IsOkAndHolds(CorpusAssociatedScoreData( /*num_docs=*/2, /*sum_length_in_tokens=*/8))); - EXPECT_THAT(doc_store->Delete("icing", "email/1"), IsOk()); + EXPECT_THAT(doc_store->Delete("icing", "email/1", + fake_clock_.GetSystemTimeMilliseconds()), + IsOk()); EXPECT_THAT(doc_store->Get(document_id1), StatusIs(libtextclassifier3::StatusCode::NOT_FOUND)); EXPECT_THAT(doc_store->Get(document_id2), @@ -1493,7 +1520,8 @@ TEST_F(DocumentStoreTest, ShouldRecoverFromBadChecksum) { // Checks derived filter cache ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData doc_filter_data, - doc_store->GetAliveDocumentFilterData(document_id2)); + doc_store->GetAliveDocumentFilterData( + document_id2, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(doc_filter_data, Eq(DocumentFilterData( /*namespace_id=*/0, @@ -1568,7 +1596,8 @@ TEST_F(DocumentStoreTest, MaxDocumentId) { EXPECT_THAT(doc_store->last_added_document_id(), Eq(document_id1)); // Still returns the last DocumentId even if it was deleted - ICING_ASSERT_OK(doc_store->Delete("icing", "email/1")); + ICING_ASSERT_OK(doc_store->Delete("icing", "email/1", + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(doc_store->last_added_document_id(), Eq(document_id1)); ICING_ASSERT_OK_AND_ASSIGN(DocumentId document_id2, @@ -1904,7 +1933,8 @@ TEST_F(DocumentStoreTest, NonexistentDocumentFilterDataNotFound) { std::unique_ptr<DocumentStore> doc_store = std::move(create_result.document_store); - EXPECT_FALSE(doc_store->GetAliveDocumentFilterData(/*document_id=*/0)); + EXPECT_FALSE(doc_store->GetAliveDocumentFilterData( + /*document_id=*/0, fake_clock_.GetSystemTimeMilliseconds())); } TEST_F(DocumentStoreTest, DeleteClearsFilterCache) { @@ -1920,15 +1950,18 @@ TEST_F(DocumentStoreTest, DeleteClearsFilterCache) { ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData doc_filter_data, - doc_store->GetAliveDocumentFilterData(document_id)); + doc_store->GetAliveDocumentFilterData( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(doc_filter_data, Eq(DocumentFilterData( /*namespace_id=*/0, /*schema_type_id=*/0, document1_expiration_timestamp_))); - ICING_ASSERT_OK(doc_store->Delete("icing", "email/1")); + ICING_ASSERT_OK(doc_store->Delete("icing", "email/1", + fake_clock_.GetSystemTimeMilliseconds())); // Associated entry of the deleted document is removed. - EXPECT_FALSE(doc_store->GetAliveDocumentFilterData(document_id)); + EXPECT_FALSE(doc_store->GetAliveDocumentFilterData( + document_id, fake_clock_.GetSystemTimeMilliseconds())); } TEST_F(DocumentStoreTest, DeleteClearsScoreCache) { @@ -1949,10 +1982,15 @@ TEST_F(DocumentStoreTest, DeleteClearsScoreCache) { /*creation_timestamp_ms=*/document1_creation_timestamp_, /*length_in_tokens=*/4))); - ICING_ASSERT_OK(doc_store->Delete("icing", "email/1")); + ICING_ASSERT_OK(doc_store->Delete("icing", "email/1", + fake_clock_.GetSystemTimeMilliseconds())); // Associated entry of the deleted document is removed. - EXPECT_THAT(doc_store->GetDocumentAssociatedScoreData(document_id), - StatusIs(libtextclassifier3::StatusCode::NOT_FOUND)); + EXPECT_THAT( + doc_store->GetDocumentAssociatedScoreData(document_id), + IsOkAndHolds(DocumentAssociatedScoreData(kInvalidCorpusId, + /*document_score=*/-1, + /*creation_timestamp_ms=*/-1, + /*length_in_tokens=*/0))); } TEST_F(DocumentStoreTest, DeleteShouldPreventUsageScores) { @@ -1974,12 +2012,15 @@ TEST_F(DocumentStoreTest, DeleteShouldPreventUsageScores) { UsageStore::UsageScores expected_scores; expected_scores.usage_type1_count = 1; - ICING_ASSERT_HAS_VALUE_AND_ASSIGN(UsageStore::UsageScores actual_scores, - doc_store->GetUsageScores(document_id)); + ICING_ASSERT_HAS_VALUE_AND_ASSIGN( + UsageStore::UsageScores actual_scores, + doc_store->GetUsageScores(document_id, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Delete the document. - ICING_ASSERT_OK(doc_store->Delete("icing", "email/1")); + ICING_ASSERT_OK(doc_store->Delete("icing", "email/1", + fake_clock_.GetSystemTimeMilliseconds())); // Can't report or get usage scores on the deleted document ASSERT_THAT( @@ -1987,7 +2028,8 @@ TEST_F(DocumentStoreTest, DeleteShouldPreventUsageScores) { StatusIs(libtextclassifier3::StatusCode::NOT_FOUND, HasSubstr("Couldn't report usage on a nonexistent document"))); - EXPECT_FALSE(doc_store->GetUsageScores(document_id)); + EXPECT_FALSE(doc_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); } TEST_F(DocumentStoreTest, ExpirationShouldPreventUsageScores) { @@ -2021,8 +2063,10 @@ TEST_F(DocumentStoreTest, ExpirationShouldPreventUsageScores) { UsageStore::UsageScores expected_scores; expected_scores.usage_type1_count = 1; - ICING_ASSERT_HAS_VALUE_AND_ASSIGN(UsageStore::UsageScores actual_scores, - doc_store->GetUsageScores(document_id)); + ICING_ASSERT_HAS_VALUE_AND_ASSIGN( + UsageStore::UsageScores actual_scores, + doc_store->GetUsageScores(document_id, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Some arbitrary time past the document's creation time (10) + ttl (100) @@ -2034,7 +2078,8 @@ TEST_F(DocumentStoreTest, ExpirationShouldPreventUsageScores) { StatusIs(libtextclassifier3::StatusCode::NOT_FOUND, HasSubstr("Couldn't report usage on a nonexistent document"))); - EXPECT_FALSE(doc_store->GetUsageScores(document_id)); + EXPECT_FALSE(doc_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); } TEST_F(DocumentStoreTest, @@ -2056,7 +2101,8 @@ TEST_F(DocumentStoreTest, ICING_ASSERT_OK_AND_ASSIGN(DocumentId document_id, doc_store->Put(document)); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData doc_filter_data, - doc_store->GetAliveDocumentFilterData(document_id)); + doc_store->GetAliveDocumentFilterData( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(doc_filter_data, Eq(DocumentFilterData( /*namespace_id=*/0, /*schema_type_id=*/0, @@ -2082,7 +2128,8 @@ TEST_F(DocumentStoreTest, ExpirationTimestampIsInt64MaxIfTtlIsZero) { ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData doc_filter_data, - doc_store->GetAliveDocumentFilterData(document_id)); + doc_store->GetAliveDocumentFilterData( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT( doc_filter_data, @@ -2112,7 +2159,8 @@ TEST_F(DocumentStoreTest, ExpirationTimestampIsInt64MaxOnOverflow) { ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData doc_filter_data, - doc_store->GetAliveDocumentFilterData(document_id)); + doc_store->GetAliveDocumentFilterData( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT( doc_filter_data, @@ -2318,7 +2366,8 @@ TEST_F(DocumentStoreTest, RegenerateDerivedFilesSkipsUnknownSchemaTypeIds) { IsOkAndHolds(EqualsProto(email_document))); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData email_data, - document_store->GetAliveDocumentFilterData(email_document_id)); + document_store->GetAliveDocumentFilterData( + email_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(email_data.schema_type_id(), Eq(email_schema_type_id)); email_namespace_id = email_data.namespace_id(); email_expiration_timestamp = email_data.expiration_timestamp_ms(); @@ -2331,7 +2380,8 @@ TEST_F(DocumentStoreTest, RegenerateDerivedFilesSkipsUnknownSchemaTypeIds) { IsOkAndHolds(EqualsProto(message_document))); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData message_data, - document_store->GetAliveDocumentFilterData(message_document_id)); + document_store->GetAliveDocumentFilterData( + message_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(message_data.schema_type_id(), Eq(message_schema_type_id)); message_namespace_id = message_data.namespace_id(); message_expiration_timestamp = message_data.expiration_timestamp_ms(); @@ -2373,7 +2423,8 @@ TEST_F(DocumentStoreTest, RegenerateDerivedFilesSkipsUnknownSchemaTypeIds) { IsOkAndHolds(EqualsProto(email_document))); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData email_data, - document_store->GetAliveDocumentFilterData(email_document_id)); + document_store->GetAliveDocumentFilterData( + email_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(email_data.schema_type_id(), Eq(email_schema_type_id)); // Make sure that all the other fields are stll valid/the same EXPECT_THAT(email_data.namespace_id(), Eq(email_namespace_id)); @@ -2385,7 +2436,8 @@ TEST_F(DocumentStoreTest, RegenerateDerivedFilesSkipsUnknownSchemaTypeIds) { IsOkAndHolds(EqualsProto(message_document))); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData message_data, - document_store->GetAliveDocumentFilterData(message_document_id)); + document_store->GetAliveDocumentFilterData( + message_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(message_data.schema_type_id(), Eq(-1)); // Make sure that all the other fields are stll valid/the same EXPECT_THAT(message_data.namespace_id(), Eq(message_namespace_id)); @@ -2441,14 +2493,16 @@ TEST_F(DocumentStoreTest, UpdateSchemaStoreUpdatesSchemaTypeIds) { document_store->Put(email_document)); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData email_data, - document_store->GetAliveDocumentFilterData(email_document_id)); + document_store->GetAliveDocumentFilterData( + email_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(email_data.schema_type_id(), Eq(old_email_schema_type_id)); ICING_ASSERT_OK_AND_ASSIGN(DocumentId message_document_id, document_store->Put(message_document)); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData message_data, - document_store->GetAliveDocumentFilterData(message_document_id)); + document_store->GetAliveDocumentFilterData( + message_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(message_data.schema_type_id(), Eq(old_message_schema_type_id)); // Rearrange the schema types. Since SchemaTypeId is assigned based on order, @@ -2476,12 +2530,14 @@ TEST_F(DocumentStoreTest, UpdateSchemaStoreUpdatesSchemaTypeIds) { // Check that the FilterCache holds the new SchemaTypeIds ICING_ASSERT_HAS_VALUE_AND_ASSIGN( email_data, - document_store->GetAliveDocumentFilterData(email_document_id)); + document_store->GetAliveDocumentFilterData( + email_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(email_data.schema_type_id(), Eq(new_email_schema_type_id)); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( message_data, - document_store->GetAliveDocumentFilterData(message_document_id)); + document_store->GetAliveDocumentFilterData( + message_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(message_data.schema_type_id(), Eq(new_message_schema_type_id)); } @@ -2683,14 +2739,16 @@ TEST_F(DocumentStoreTest, OptimizedUpdateSchemaStoreUpdatesSchemaTypeIds) { document_store->Put(email_document)); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData email_data, - document_store->GetAliveDocumentFilterData(email_document_id)); + document_store->GetAliveDocumentFilterData( + email_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(email_data.schema_type_id(), Eq(old_email_schema_type_id)); ICING_ASSERT_OK_AND_ASSIGN(DocumentId message_document_id, document_store->Put(message_document)); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData message_data, - document_store->GetAliveDocumentFilterData(message_document_id)); + document_store->GetAliveDocumentFilterData( + message_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(message_data.schema_type_id(), Eq(old_message_schema_type_id)); // Rearrange the schema types. Since SchemaTypeId is assigned based on order, @@ -2721,12 +2779,14 @@ TEST_F(DocumentStoreTest, OptimizedUpdateSchemaStoreUpdatesSchemaTypeIds) { // Check that the FilterCache holds the new SchemaTypeIds ICING_ASSERT_HAS_VALUE_AND_ASSIGN( email_data, - document_store->GetAliveDocumentFilterData(email_document_id)); + document_store->GetAliveDocumentFilterData( + email_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(email_data.schema_type_id(), Eq(new_email_schema_type_id)); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( message_data, - document_store->GetAliveDocumentFilterData(message_document_id)); + document_store->GetAliveDocumentFilterData( + message_document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(message_data.schema_type_id(), Eq(new_message_schema_type_id)); } @@ -2909,8 +2969,9 @@ TEST_F(DocumentStoreTest, GetOptimizeInfo) { EXPECT_THAT(optimize_info.estimated_optimizable_bytes, Eq(0)); // Delete a document. Now something is optimizable - ICING_EXPECT_OK(document_store->Delete(test_document1_.namespace_(), - test_document1_.uri())); + ICING_EXPECT_OK(document_store->Delete( + test_document1_.namespace_(), test_document1_.uri(), + fake_clock_.GetSystemTimeMilliseconds())); ICING_ASSERT_OK_AND_ASSIGN(optimize_info, document_store->GetOptimizeInfo()); EXPECT_THAT(optimize_info.total_docs, Eq(1)); EXPECT_THAT(optimize_info.optimizable_docs, Eq(1)); @@ -2990,13 +3051,15 @@ TEST_F(DocumentStoreTest, GetAllNamespaces) { // After deleting namespace2_uri1, there's still namespace2_uri2, so // "namespace2" still shows up in results - ICING_EXPECT_OK(document_store->Delete("namespace2", "uri1")); + ICING_EXPECT_OK(document_store->Delete( + "namespace2", "uri1", fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(document_store->GetAllNamespaces(), UnorderedElementsAre("namespace1", "namespace2", "namespace3")); // After deleting namespace2_uri2, there's no more documents in "namespace2" - ICING_EXPECT_OK(document_store->Delete("namespace2", "uri2")); + ICING_EXPECT_OK(document_store->Delete( + "namespace2", "uri2", fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(document_store->GetAllNamespaces(), UnorderedElementsAre("namespace1", "namespace3")); @@ -3030,7 +3093,8 @@ TEST_F(DocumentStoreTest, ReportUsageWithDifferentTimestampsAndGetUsageScores) { ++expected_scores.usage_type1_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( UsageStore::UsageScores actual_scores, - document_store->GetUsageScores(document_id)); + document_store->GetUsageScores(document_id, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Report usage with type 1 and time 5, time should be updated. @@ -3042,7 +3106,8 @@ TEST_F(DocumentStoreTest, ReportUsageWithDifferentTimestampsAndGetUsageScores) { expected_scores.usage_type1_last_used_timestamp_s = 5; ++expected_scores.usage_type1_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( - actual_scores, document_store->GetUsageScores(document_id)); + actual_scores, document_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Report usage with type 2 and time 1. @@ -3054,7 +3119,8 @@ TEST_F(DocumentStoreTest, ReportUsageWithDifferentTimestampsAndGetUsageScores) { expected_scores.usage_type2_last_used_timestamp_s = 1; ++expected_scores.usage_type2_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( - actual_scores, document_store->GetUsageScores(document_id)); + actual_scores, document_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Report usage with type 2 and time 5. @@ -3066,7 +3132,8 @@ TEST_F(DocumentStoreTest, ReportUsageWithDifferentTimestampsAndGetUsageScores) { expected_scores.usage_type2_last_used_timestamp_s = 5; ++expected_scores.usage_type2_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( - actual_scores, document_store->GetUsageScores(document_id)); + actual_scores, document_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Report usage with type 3 and time 1. @@ -3078,7 +3145,8 @@ TEST_F(DocumentStoreTest, ReportUsageWithDifferentTimestampsAndGetUsageScores) { expected_scores.usage_type3_last_used_timestamp_s = 1; ++expected_scores.usage_type3_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( - actual_scores, document_store->GetUsageScores(document_id)); + actual_scores, document_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Report usage with type 3 and time 5. @@ -3090,7 +3158,8 @@ TEST_F(DocumentStoreTest, ReportUsageWithDifferentTimestampsAndGetUsageScores) { expected_scores.usage_type3_last_used_timestamp_s = 5; ++expected_scores.usage_type3_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( - actual_scores, document_store->GetUsageScores(document_id)); + actual_scores, document_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); } @@ -3115,7 +3184,8 @@ TEST_F(DocumentStoreTest, ReportUsageWithDifferentTypesAndGetUsageScores) { ++expected_scores.usage_type1_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( UsageStore::UsageScores actual_scores, - document_store->GetUsageScores(document_id)); + document_store->GetUsageScores(document_id, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Report usage with type 2. @@ -3126,7 +3196,8 @@ TEST_F(DocumentStoreTest, ReportUsageWithDifferentTypesAndGetUsageScores) { ++expected_scores.usage_type2_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( - actual_scores, document_store->GetUsageScores(document_id)); + actual_scores, document_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Report usage with type 3. @@ -3137,7 +3208,8 @@ TEST_F(DocumentStoreTest, ReportUsageWithDifferentTypesAndGetUsageScores) { ++expected_scores.usage_type3_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( - actual_scores, document_store->GetUsageScores(document_id)); + actual_scores, document_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); } @@ -3164,7 +3236,8 @@ TEST_F(DocumentStoreTest, UsageScoresShouldNotBeClearedOnChecksumMismatch) { ++expected_scores.usage_type1_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( UsageStore::UsageScores actual_scores, - document_store->GetUsageScores(document_id)); + document_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); } @@ -3180,7 +3253,8 @@ TEST_F(DocumentStoreTest, UsageScoresShouldNotBeClearedOnChecksumMismatch) { // Usage scores should be the same. ICING_ASSERT_HAS_VALUE_AND_ASSIGN( UsageStore::UsageScores actual_scores, - document_store->GetUsageScores(document_id)); + document_store->GetUsageScores(document_id, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); } @@ -3207,7 +3281,8 @@ TEST_F(DocumentStoreTest, UsageScoresShouldBeAvailableAfterDataLoss) { ++expected_scores.usage_type1_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( UsageStore::UsageScores actual_scores, - document_store->GetUsageScores(document_id)); + document_store->GetUsageScores( + document_id, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); } @@ -3234,7 +3309,8 @@ TEST_F(DocumentStoreTest, UsageScoresShouldBeAvailableAfterDataLoss) { // Usage scores should still be available. ICING_ASSERT_HAS_VALUE_AND_ASSIGN( UsageStore::UsageScores actual_scores, - document_store->GetUsageScores(document_id)); + document_store->GetUsageScores(document_id, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); } @@ -3260,7 +3336,8 @@ TEST_F(DocumentStoreTest, UsageScoresShouldBeCopiedOverToUpdatedDocument) { ++expected_scores.usage_type1_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( UsageStore::UsageScores actual_scores, - document_store->GetUsageScores(document_id)); + document_store->GetUsageScores(document_id, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Update the document. @@ -3272,7 +3349,9 @@ TEST_F(DocumentStoreTest, UsageScoresShouldBeCopiedOverToUpdatedDocument) { // Usage scores should be the same. ICING_ASSERT_HAS_VALUE_AND_ASSIGN( - actual_scores, document_store->GetUsageScores(updated_document_id)); + actual_scores, + document_store->GetUsageScores(updated_document_id, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); } @@ -3290,7 +3369,8 @@ TEST_F(DocumentStoreTest, UsageScoresShouldPersistOnOptimize) { ICING_ASSERT_OK_AND_ASSIGN( DocumentId document_id2, document_store->Put(DocumentProto(test_document2_))); - ICING_ASSERT_OK(document_store->Delete(document_id1)); + ICING_ASSERT_OK(document_store->Delete( + document_id1, fake_clock_.GetSystemTimeMilliseconds())); // Report usage of document 2. UsageReport usage_report = CreateUsageReport( @@ -3302,7 +3382,8 @@ TEST_F(DocumentStoreTest, UsageScoresShouldPersistOnOptimize) { ++expected_scores.usage_type1_count; ICING_ASSERT_HAS_VALUE_AND_ASSIGN( UsageStore::UsageScores actual_scores, - document_store->GetUsageScores(document_id2)); + document_store->GetUsageScores(document_id2, + fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); // Run optimize @@ -3323,7 +3404,8 @@ TEST_F(DocumentStoreTest, UsageScoresShouldPersistOnOptimize) { // The original document_id2 should have become document_id2 - 1. ICING_ASSERT_HAS_VALUE_AND_ASSIGN( actual_scores, - optimized_document_store->GetUsageScores(document_id2 - 1)); + optimized_document_store->GetUsageScores( + document_id2 - 1, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(actual_scores, Eq(expected_scores)); } @@ -3542,7 +3624,8 @@ TEST_F(DocumentStoreTest, DocumentStoreStorageInfo) { ICING_ASSERT_OK(doc_store->ReportUsage(usage_report_type1)); // Delete the first doc. - ICING_ASSERT_OK(doc_store->Delete(document1.namespace_(), document1.uri())); + ICING_ASSERT_OK(doc_store->Delete(document1.namespace_(), document1.uri(), + fake_clock_.GetSystemTimeMilliseconds())); // Expire the second doc. fake_clock_.SetSystemTimeMilliseconds(document2.creation_timestamp_ms() + @@ -3649,7 +3732,8 @@ TEST_F(DocumentStoreTest, InitializeForceRecoveryUpdatesTypeIds) { ICING_ASSERT_OK_AND_ASSIGN(docid, doc_store->Put(doc)); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData filter_data, - doc_store->GetAliveDocumentFilterData(docid)); + doc_store->GetAliveDocumentFilterData( + docid, fake_clock_.GetSystemTimeMilliseconds())); ASSERT_THAT(filter_data.schema_type_id(), Eq(0)); } @@ -3697,7 +3781,8 @@ TEST_F(DocumentStoreTest, InitializeForceRecoveryUpdatesTypeIds) { // Ensure that the type id of the email document has been correctly updated. ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData filter_data, - doc_store->GetAliveDocumentFilterData(docid)); + doc_store->GetAliveDocumentFilterData( + docid, fake_clock_.GetSystemTimeMilliseconds())); EXPECT_THAT(filter_data.schema_type_id(), Eq(1)); EXPECT_THAT(initialize_stats.document_store_recovery_cause(), Eq(InitializeStatsProto::SCHEMA_CHANGES_OUT_OF_SYNC)); @@ -3758,7 +3843,8 @@ TEST_F(DocumentStoreTest, InitializeDontForceRecoveryDoesntUpdateTypeIds) { ICING_ASSERT_OK_AND_ASSIGN(docid, doc_store->Put(doc)); ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData filter_data, - doc_store->GetAliveDocumentFilterData(docid)); + doc_store->GetAliveDocumentFilterData( + docid, fake_clock_.GetSystemTimeMilliseconds())); ASSERT_THAT(filter_data.schema_type_id(), Eq(0)); } @@ -3800,7 +3886,8 @@ TEST_F(DocumentStoreTest, InitializeDontForceRecoveryDoesntUpdateTypeIds) { // Check that the type id of the email document has not been updated. ICING_ASSERT_HAS_VALUE_AND_ASSIGN( DocumentFilterData filter_data, - doc_store->GetAliveDocumentFilterData(docid)); + doc_store->GetAliveDocumentFilterData( + docid, fake_clock_.GetSystemTimeMilliseconds())); ASSERT_THAT(filter_data.schema_type_id(), Eq(0)); } } @@ -4256,7 +4343,8 @@ TEST_F(DocumentStoreTest, GetDebugInfo) { EqualsProto(info3))); // Delete document3. - ICING_ASSERT_OK(document_store->Delete("namespace2", "email/3")); + ICING_ASSERT_OK(document_store->Delete( + "namespace2", "email/3", fake_clock_.GetSystemTimeMilliseconds())); ICING_ASSERT_OK_AND_ASSIGN( DocumentDebugInfoProto out2, document_store->GetDebugInfo(DebugInfoVerbosity::DETAILED)); |