summaryrefslogtreecommitdiff
path: root/src/mongo/db/catalog/collection_validation_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/catalog/collection_validation_test.cpp')
-rw-r--r--src/mongo/db/catalog/collection_validation_test.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/mongo/db/catalog/collection_validation_test.cpp b/src/mongo/db/catalog/collection_validation_test.cpp
index 4ffff4f653b..c5313599053 100644
--- a/src/mongo/db/catalog/collection_validation_test.cpp
+++ b/src/mongo/db/catalog/collection_validation_test.cpp
@@ -47,6 +47,9 @@ namespace {
const NamespaceString kNss = NamespaceString("test.t");
class CollectionValidationTest : public CatalogTestFixture {
+protected:
+ CollectionValidationTest(Options options = {}) : CatalogTestFixture(std::move(options)) {}
+
private:
void setUp() override {
CatalogTestFixture::setUp();
@@ -58,6 +61,11 @@ private:
};
};
+class CollectionValidationDiskTest : public CollectionValidationTest {
+protected:
+ CollectionValidationDiskTest() : CollectionValidationTest(Options{}.ephemeral(false)) {}
+};
+
/**
* Calls validate on collection kNss with both kValidateFull and kValidateNormal validation levels
* and verifies the results.
@@ -270,6 +278,19 @@ TEST_F(CollectionValidationTest, ValidateEnforceFastCount) {
{CollectionValidation::ValidateMode::kForegroundFullEnforceFastCount});
}
+TEST_F(CollectionValidationDiskTest, ValidateIndexDetailResultsSurfaceVerifyErrors) {
+ FailPointEnableBlock fp{"WTValidateIndexStructuralDamage"};
+ auto opCtx = operationContext();
+ insertDataRange(opCtx, 0, 5); // initialize collection
+ foregroundValidate(
+ opCtx,
+ /*valid*/ false,
+ /*numRecords*/ std::numeric_limits<int32_t>::min(), // uninitialized
+ /*numInvalidDocuments*/ std::numeric_limits<int32_t>::min(), // uninitialized
+ /*numErrors*/ 1,
+ {CollectionValidation::ValidateMode::kForegroundFull});
+}
+
/**
* Waits for a parallel running collection validation operation to start and then hang at a
* failpoint.