summaryrefslogtreecommitdiff
path: root/src/mongo/db/collection_index_usage_tracker_test.cpp
diff options
context:
space:
mode:
authorLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-18 17:02:53 -0300
committerLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-18 17:02:53 -0300
commit959575a5ca598bf5f37fb5cebe7ed1d80d3d71f7 (patch)
treeacc8d60aedb12b70048e676e8a7349deb0010db8 /src/mongo/db/collection_index_usage_tracker_test.cpp
parent76588293975fc059cf076779e4283e6ffaf8afff (diff)
New upstream version 6.0.20upstream
Diffstat (limited to 'src/mongo/db/collection_index_usage_tracker_test.cpp')
-rw-r--r--src/mongo/db/collection_index_usage_tracker_test.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/mongo/db/collection_index_usage_tracker_test.cpp b/src/mongo/db/collection_index_usage_tracker_test.cpp
index a532e91a152..ed428331208 100644
--- a/src/mongo/db/collection_index_usage_tracker_test.cpp
+++ b/src/mongo/db/collection_index_usage_tracker_test.cpp
@@ -237,12 +237,14 @@ TEST_F(CollectionIndexUsageTrackerTest, GlobalFeatureUsageBasic) {
ASSERT_EQ(1, getGlobalIndexUsage()->getCount());
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "unique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "unique"));
@@ -255,12 +257,14 @@ TEST_F(CollectionIndexUsageTrackerTest, GlobalFeatureUsageBasic) {
ASSERT_EQ(2, getGlobalIndexUsage()->getCount());
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "unique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "unique"));
@@ -271,12 +275,14 @@ TEST_F(CollectionIndexUsageTrackerTest, GlobalFeatureUsageBasic) {
ASSERT_EQ(2, getGlobalIndexUsage()->getCount());
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "unique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "unique"));
@@ -285,12 +291,14 @@ TEST_F(CollectionIndexUsageTrackerTest, GlobalFeatureUsageBasic) {
ASSERT_EQ(2, getGlobalIndexUsage()->getCount());
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "unique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "unique"));
@@ -299,12 +307,14 @@ TEST_F(CollectionIndexUsageTrackerTest, GlobalFeatureUsageBasic) {
ASSERT_EQ(1, getGlobalIndexUsage()->getCount());
ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "unique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "unique"));
@@ -313,16 +323,63 @@ TEST_F(CollectionIndexUsageTrackerTest, GlobalFeatureUsageBasic) {
ASSERT_EQ(0, getGlobalIndexUsage()->getCount());
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "unique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "id"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "prepareUnique"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "single"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "sparse"));
ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "unique"));
}
+// Unregister and re-register an index with prepareUnique
+TEST_F(CollectionIndexUsageTrackerTest, RegisterPrepareUnique) {
+ auto spec = BSON("key" << BSON("foo" << 1) << "v" << 2);
+ auto desc = IndexDescriptor("", spec);
+ getTracker()->registerIndex("foo", spec, IndexFeatures::make(&desc, false /* internal */));
+ getTracker()->recordIndexAccess("foo");
+
+ ASSERT_EQ(1, getGlobalIndexUsage()->getCount());
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "id"));
+ ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "prepareUnique"));
+ ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "single"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "sparse"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "unique"));
+
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "id"));
+ ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "prepareUnique"));
+ ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "single"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "sparse"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "unique"));
+
+ // Unregister an re-register with different options.
+ getTracker()->unregisterIndex("foo");
+ auto spec2 = BSON("key" << BSON("foo" << 1) << "prepareUnique" << true << "v" << 2);
+ auto desc2 = IndexDescriptor("", spec2);
+ getTracker()->registerIndex("foo", spec2, IndexFeatures::make(&desc2, false /* internal */));
+ getTracker()->recordIndexAccess("foo");
+
+ ASSERT_EQ(1, getGlobalIndexUsage()->getCount());
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "id"));
+ ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "prepareUnique"));
+ ASSERT_EQ(1, getFeatureUseCount(getGlobalIndexUsage(), "single"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "sparse"));
+ ASSERT_EQ(0, getFeatureUseCount(getGlobalIndexUsage(), "unique"));
+
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "id"));
+ ASSERT_EQ(2, getFeatureAccessCount(getGlobalIndexUsage(), "normal"));
+ ASSERT_EQ(1, getFeatureAccessCount(getGlobalIndexUsage(), "prepareUnique"));
+ ASSERT_EQ(2, getFeatureAccessCount(getGlobalIndexUsage(), "single"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "sparse"));
+ ASSERT_EQ(0, getFeatureAccessCount(getGlobalIndexUsage(), "unique"));
+}
+
} // namespace
} // namespace mongo