diff options
| author | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-18 17:02:53 -0300 |
|---|---|---|
| committer | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-18 17:02:53 -0300 |
| commit | 959575a5ca598bf5f37fb5cebe7ed1d80d3d71f7 (patch) | |
| tree | acc8d60aedb12b70048e676e8a7349deb0010db8 /src/mongo/db/collection_index_usage_tracker_test.cpp | |
| parent | 76588293975fc059cf076779e4283e6ffaf8afff (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.cpp | 57 |
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 |
