summaryrefslogtreecommitdiff
path: root/src/mongo/db/keys_collection_cache_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/keys_collection_cache_test.cpp')
-rw-r--r--src/mongo/db/keys_collection_cache_test.cpp198
1 files changed, 72 insertions, 126 deletions
diff --git a/src/mongo/db/keys_collection_cache_test.cpp b/src/mongo/db/keys_collection_cache_test.cpp
index 73d3e6bd78d..625a138e313 100644
--- a/src/mongo/db/keys_collection_cache_test.cpp
+++ b/src/mongo/db/keys_collection_cache_test.cpp
@@ -117,27 +117,6 @@ protected:
ASSERT_OK(getStatusFromWriteCommandReply(result));
}
- void testRefreshDoesNotErrorIfExternalKeysCacheIsEmpty(KeysCollectionClient* client);
-
- void testGetKeyShouldReturnCorrectKeysAfterRefresh(KeysCollectionClient* client);
-
- void testGetInternalKeyShouldReturnErrorIfNoKeyIsValidForGivenTime(
- KeysCollectionClient* client);
-
- void testGetInternalKeyShouldReturnOldestKeyPossible(KeysCollectionClient* client);
-
- void testRefreshShouldNotGetInternalKeysForOtherPurpose(KeysCollectionClient* client);
-
- void testRefreshShouldNotGetExternalKeysForOtherPurpose(KeysCollectionClient* client);
-
- void testGetRefreshCanIncrementallyGetNewKeys(KeysCollectionClient* client);
-
- void testCacheExternalKeyBasic(KeysCollectionClient* client);
-
- void testRefreshClearsRemovedExternalKeys(KeysCollectionClient* client);
-
- void testRefreshHandlesKeysReceivingTTLValue(KeysCollectionClient* client);
-
private:
std::unique_ptr<KeysCollectionClient> _catalogClient;
std::unique_ptr<KeysCollectionClient> _directClient;
@@ -171,8 +150,8 @@ TEST_F(CacheTest, RefreshErrorsIfInternalCacheIsEmpty) {
ASSERT_FALSE(status.reason().empty());
}
-void CacheTest::testRefreshDoesNotErrorIfExternalKeysCacheIsEmpty(KeysCollectionClient* client) {
- KeysCollectionCache cache("test", client);
+TEST_F(CacheTest, RefreshDoesNotErrorIfExternalKeysCacheIsEmpty) {
+ KeysCollectionCache cache("test", catalogClient());
KeysCollectionDocument origKey1(1);
origKey1.setKeysCollectionDocumentBase(
@@ -184,16 +163,56 @@ void CacheTest::testRefreshDoesNotErrorIfExternalKeysCacheIsEmpty(KeysCollection
ASSERT_OK(status);
}
-TEST_F(CacheTest, RefreshDoesNotErrorIfExternalKeysCacheIsEmptyShardedClient) {
- testRefreshDoesNotErrorIfExternalKeysCacheIsEmpty(catalogClient());
-}
-TEST_F(CacheTest, RefreshDoesNotErrorIfExternalKeysCacheIsEmptyDirectClient) {
- testRefreshDoesNotErrorIfExternalKeysCacheIsEmpty(directClient());
+TEST_F(CacheTest, GetKeyShouldReturnCorrectKeyAfterRefreshSharded) {
+ KeysCollectionCache cache("test", catalogClient());
+
+ KeysCollectionDocument origKey1(1);
+ origKey1.setKeysCollectionDocumentBase(
+ {"test", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(105, 0))});
+ ASSERT_OK(insertToConfigCollection(
+ operationContext(), NamespaceString::kKeysCollectionNamespace, origKey1.toBSON()));
+
+ auto refreshStatus = cache.refresh(operationContext());
+ ASSERT_OK(refreshStatus.getStatus());
+
+ {
+ auto key = refreshStatus.getValue();
+ ASSERT_EQ(1, key.getKeyId());
+ ASSERT_EQ(origKey1.getKey(), key.getKey());
+ ASSERT_EQ("test", key.getPurpose());
+ ASSERT_EQ(Timestamp(105, 0), key.getExpiresAt().asTimestamp());
+ }
+
+ auto swInternalKey = cache.getInternalKey(LogicalTime(Timestamp(1, 0)));
+ ASSERT_OK(swInternalKey.getStatus());
+
+ {
+ auto key = swInternalKey.getValue();
+ ASSERT_EQ(1, key.getKeyId());
+ ASSERT_EQ(origKey1.getKey(), key.getKey());
+ ASSERT_EQ("test", key.getPurpose());
+ ASSERT_EQ(Timestamp(105, 0), key.getExpiresAt().asTimestamp());
+ }
+
+ swInternalKey = cache.getInternalKeyById(1, LogicalTime(Timestamp(1, 0)));
+ ASSERT_OK(swInternalKey.getStatus());
+
+ {
+ auto key = swInternalKey.getValue();
+ ASSERT_EQ(1, key.getKeyId());
+ ASSERT_EQ(origKey1.getKey(), key.getKey());
+ ASSERT_EQ("test", key.getPurpose());
+ ASSERT_EQ(Timestamp(105, 0), key.getExpiresAt().asTimestamp());
+ }
+
+ auto swExternalKeys = cache.getExternalKeysById(1, LogicalTime(Timestamp(1, 0)));
+ ASSERT_EQ(ErrorCodes::KeyNotFound, swExternalKeys.getStatus());
}
-void CacheTest::testGetKeyShouldReturnCorrectKeysAfterRefresh(KeysCollectionClient* client) {
- KeysCollectionCache cache("test", client);
+TEST_F(CacheTest, GetKeyShouldReturnCorrectKeysAfterRefreshDirectClient) {
+ KeysCollectionCache cache("test", directClient());
+
KeysCollectionDocument origKey0(1);
origKey0.setKeysCollectionDocumentBase(
{"test", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(105, 0))});
@@ -202,16 +221,14 @@ void CacheTest::testGetKeyShouldReturnCorrectKeysAfterRefresh(KeysCollectionClie
// Use external keys with the same keyId and expiresAt as the internal key to test that the
// cache correctly tackles key collisions.
- ExternalKeysCollectionDocument origKey1(OID::gen(), 1);
- origKey1.setMigrationId(kMigrationId1);
+ ExternalKeysCollectionDocument origKey1(OID::gen(), 1, kMigrationId1);
origKey1.setKeysCollectionDocumentBase(
{"test", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(105, 0))});
origKey1.setTTLExpiresAt(getServiceContext()->getFastClockSource()->now() + Seconds(30));
insertDocument(
operationContext(), NamespaceString::kExternalKeysCollectionNamespace, origKey1.toBSON());
- ExternalKeysCollectionDocument origKey2(OID::gen(), 1);
- origKey2.setMigrationId(kMigrationId2);
+ ExternalKeysCollectionDocument origKey2(OID::gen(), 1, kMigrationId2);
origKey2.setKeysCollectionDocumentBase(
{"test", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(205, 0))});
insertDocument(
@@ -298,17 +315,8 @@ void CacheTest::testGetKeyShouldReturnCorrectKeysAfterRefresh(KeysCollectionClie
ASSERT_EQ(ErrorCodes::KeyNotFound, swExternalKeys.getStatus());
}
-TEST_F(CacheTest, GetKeyShouldReturnCorrectKeyAfterRefreshShardedClient) {
- testGetKeyShouldReturnCorrectKeysAfterRefresh(catalogClient());
-}
-
-TEST_F(CacheTest, GetKeyShouldReturnCorrectKeysAfterRefreshDirectClient) {
- testGetKeyShouldReturnCorrectKeysAfterRefresh(directClient());
-}
-
-void CacheTest::testGetInternalKeyShouldReturnErrorIfNoKeyIsValidForGivenTime(
- KeysCollectionClient* client) {
- KeysCollectionCache cache("test", client);
+TEST_F(CacheTest, GetInternalKeyShouldReturnErrorIfNoKeyIsValidForGivenTime) {
+ KeysCollectionCache cache("test", catalogClient());
KeysCollectionDocument origKey1(1);
origKey1.setKeysCollectionDocumentBase(
@@ -331,16 +339,8 @@ void CacheTest::testGetInternalKeyShouldReturnErrorIfNoKeyIsValidForGivenTime(
ASSERT_EQ(ErrorCodes::KeyNotFound, swKey.getStatus());
}
-TEST_F(CacheTest, GetInternalKeyShouldReturnErrorIfNoKeyIsValidForGivenTimeShardedClient) {
- testGetInternalKeyShouldReturnErrorIfNoKeyIsValidForGivenTime(catalogClient());
-}
-
-TEST_F(CacheTest, GetInternalKeyShouldReturnErrorIfNoKeyIsValidForGivenTimeDirectClient) {
- testGetInternalKeyShouldReturnErrorIfNoKeyIsValidForGivenTime(directClient());
-}
-
-void CacheTest::testGetInternalKeyShouldReturnOldestKeyPossible(KeysCollectionClient* client) {
- KeysCollectionCache cache("test", client);
+TEST_F(CacheTest, GetInternalKeyShouldReturnOldestKeyPossible) {
+ KeysCollectionCache cache("test", catalogClient());
KeysCollectionDocument origKey0(0);
origKey0.setKeysCollectionDocumentBase(
@@ -383,16 +383,8 @@ void CacheTest::testGetInternalKeyShouldReturnOldestKeyPossible(KeysCollectionCl
}
}
-TEST_F(CacheTest, GetInternalKeyShouldReturnOldestKeyPossibleShardedClient) {
- testGetInternalKeyShouldReturnOldestKeyPossible(catalogClient());
-}
-
-TEST_F(CacheTest, GetInternalKeyShouldReturnOldestKeyPossibleDirectClient) {
- testGetInternalKeyShouldReturnOldestKeyPossible(directClient());
-}
-
-void CacheTest::testRefreshShouldNotGetInternalKeysForOtherPurpose(KeysCollectionClient* client) {
- KeysCollectionCache cache("test", client);
+TEST_F(CacheTest, RefreshShouldNotGetInternalKeysForOtherPurpose) {
+ KeysCollectionCache cache("test", catalogClient());
KeysCollectionDocument origKey0(0);
origKey0.setKeysCollectionDocumentBase(
@@ -437,16 +429,8 @@ void CacheTest::testRefreshShouldNotGetInternalKeysForOtherPurpose(KeysCollectio
}
}
-TEST_F(CacheTest, RefreshShouldNotGetInternalKeysForOtherPurposeShardedClient) {
- testRefreshShouldNotGetInternalKeysForOtherPurpose(catalogClient());
-}
-
-TEST_F(CacheTest, RefreshShouldNotGetInternalKeysForOtherPurposeDirectClient) {
- testRefreshShouldNotGetInternalKeysForOtherPurpose(directClient());
-}
-
-void CacheTest::testRefreshShouldNotGetExternalKeysForOtherPurpose(KeysCollectionClient* client) {
- KeysCollectionCache cache("test", client);
+TEST_F(CacheTest, RefreshShouldNotGetExternalKeysForOtherPurpose) {
+ KeysCollectionCache cache("test", directClient());
KeysCollectionDocument origKey0(0);
origKey0.setKeysCollectionDocumentBase(
@@ -454,8 +438,7 @@ void CacheTest::testRefreshShouldNotGetExternalKeysForOtherPurpose(KeysCollectio
insertDocument(
operationContext(), NamespaceString::kKeysCollectionNamespace, origKey0.toBSON());
- ExternalKeysCollectionDocument origKey1(OID::gen(), 1);
- origKey1.setMigrationId(kMigrationId1);
+ ExternalKeysCollectionDocument origKey1(OID::gen(), 1, kMigrationId1);
origKey1.setKeysCollectionDocumentBase(
{"dummy", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(105, 0))});
insertDocument(
@@ -469,8 +452,7 @@ void CacheTest::testRefreshShouldNotGetExternalKeysForOtherPurpose(KeysCollectio
ASSERT_EQ(ErrorCodes::KeyNotFound, swKey.getStatus());
}
- ExternalKeysCollectionDocument origKey2(OID::gen(), 2);
- origKey2.setMigrationId(kMigrationId2);
+ ExternalKeysCollectionDocument origKey2(OID::gen(), 2, kMigrationId1);
origKey2.setKeysCollectionDocumentBase(
{"test", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(110, 0))});
insertDocument(
@@ -495,16 +477,8 @@ void CacheTest::testRefreshShouldNotGetExternalKeysForOtherPurpose(KeysCollectio
}
}
-TEST_F(CacheTest, RefreshShouldNotGetExternalKeysForOtherPurposeShardedClient) {
- testRefreshShouldNotGetExternalKeysForOtherPurpose(catalogClient());
-}
-
-TEST_F(CacheTest, RefreshShouldNotGetExternalKeysForOtherPurposeDirectClient) {
- testRefreshShouldNotGetExternalKeysForOtherPurpose(directClient());
-}
-
-void CacheTest::testGetRefreshCanIncrementallyGetNewKeys(KeysCollectionClient* client) {
- KeysCollectionCache cache("test", client);
+TEST_F(CacheTest, RefreshCanIncrementallyGetNewKeys) {
+ KeysCollectionCache cache("test", catalogClient());
KeysCollectionDocument origKey0(0);
origKey0.setKeysCollectionDocumentBase(
@@ -562,22 +536,13 @@ void CacheTest::testGetRefreshCanIncrementallyGetNewKeys(KeysCollectionClient* c
}
}
-TEST_F(CacheTest, RefreshCanIncrementallyGetNewKeysShardedClient) {
- testGetRefreshCanIncrementallyGetNewKeys(catalogClient());
-}
-
-TEST_F(CacheTest, RefreshCanIncrementallyGetNewKeysDirectClient) {
- testGetRefreshCanIncrementallyGetNewKeys(directClient());
-}
-
-void CacheTest::testCacheExternalKeyBasic(KeysCollectionClient* client) {
- KeysCollectionCache cache("test", client);
+TEST_F(CacheTest, CacheExternalKeyBasic) {
+ KeysCollectionCache cache("test", catalogClient());
auto swExternalKeys = cache.getExternalKeysById(5, LogicalTime(Timestamp(10, 1)));
ASSERT_EQ(ErrorCodes::KeyNotFound, swExternalKeys.getStatus());
- ExternalKeysCollectionDocument externalKey(OID::gen(), 5);
- externalKey.setMigrationId(kMigrationId1);
+ ExternalKeysCollectionDocument externalKey(OID::gen(), 5, kMigrationId1);
externalKey.setTTLExpiresAt(getServiceContext()->getFastClockSource()->now() + Seconds(30));
externalKey.setKeysCollectionDocumentBase(
{"test", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(100, 0))});
@@ -595,15 +560,7 @@ void CacheTest::testCacheExternalKeyBasic(KeysCollectionClient* client) {
ASSERT_EQ(*externalKey.getTTLExpiresAt(), *cachedKey.getTTLExpiresAt());
}
-TEST_F(CacheTest, CacheExternalKeyBasicShardedClient) {
- testCacheExternalKeyBasic(catalogClient());
-}
-
-TEST_F(CacheTest, CacheExternalKeyBasicDirectClient) {
- testCacheExternalKeyBasic(directClient());
-}
-
-void CacheTest::testRefreshClearsRemovedExternalKeys(KeysCollectionClient* client) {
+TEST_F(CacheTest, RefreshClearsRemovedExternalKeys) {
KeysCollectionCache cache("test", directClient());
KeysCollectionDocument origKey0(1);
@@ -612,16 +569,14 @@ void CacheTest::testRefreshClearsRemovedExternalKeys(KeysCollectionClient* clien
insertDocument(
operationContext(), NamespaceString::kKeysCollectionNamespace, origKey0.toBSON());
- ExternalKeysCollectionDocument origKey1(OID::gen(), 1);
- origKey1.setMigrationId(kMigrationId1);
+ ExternalKeysCollectionDocument origKey1(OID::gen(), 1, kMigrationId1);
origKey1.setKeysCollectionDocumentBase(
{"test", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(105, 0))});
origKey1.setTTLExpiresAt(getServiceContext()->getFastClockSource()->now() + Seconds(30));
insertDocument(
operationContext(), NamespaceString::kExternalKeysCollectionNamespace, origKey1.toBSON());
- ExternalKeysCollectionDocument origKey2(OID::gen(), 1);
- origKey2.setMigrationId(kMigrationId2);
+ ExternalKeysCollectionDocument origKey2(OID::gen(), 1, kMigrationId2);
origKey2.setKeysCollectionDocumentBase(
{"test", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(205, 0))});
insertDocument(
@@ -678,16 +633,8 @@ void CacheTest::testRefreshClearsRemovedExternalKeys(KeysCollectionClient* clien
}
}
-TEST_F(CacheTest, RefreshClearsRemovedExternalKeysShardedClient) {
- testRefreshClearsRemovedExternalKeys(catalogClient());
-}
-
-TEST_F(CacheTest, RefreshClearsRemovedExternalKeysDirectClient) {
- testRefreshClearsRemovedExternalKeys(directClient());
-}
-
-void CacheTest::testRefreshHandlesKeysReceivingTTLValue(KeysCollectionClient* client) {
- KeysCollectionCache cache("test", client);
+TEST_F(CacheTest, RefreshHandlesKeysReceivingTTLValue) {
+ KeysCollectionCache cache("test", directClient());
KeysCollectionDocument origKey0(1);
origKey0.setKeysCollectionDocumentBase(
@@ -695,8 +642,7 @@ void CacheTest::testRefreshHandlesKeysReceivingTTLValue(KeysCollectionClient* cl
insertDocument(
operationContext(), NamespaceString::kKeysCollectionNamespace, origKey0.toBSON());
- ExternalKeysCollectionDocument origKey1(OID::gen(), 1);
- origKey1.setMigrationId(kMigrationId1);
+ ExternalKeysCollectionDocument origKey1(OID::gen(), 1, kMigrationId1);
origKey1.setKeysCollectionDocumentBase(
{"test", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(105, 0))});
insertDocument(