summaryrefslogtreecommitdiff
path: root/jstests/disk
diff options
context:
space:
mode:
authorRichard Hausman <richard.hausman@mongodb.com>2022-08-19 17:55:53 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-08-19 19:31:00 +0000
commitd3ea0605477301d4055034dde5153267a61eb5ab (patch)
treebc1fcfa4b804ce2b713ed69f3bbc13eab897a515 /jstests/disk
parent9a07ecfd7e91d330fc4cf8ea8b08e2f2e75ec04e (diff)
downloadmongo-d3ea0605477301d4055034dde5153267a61eb5ab.tar.gz
SERVER-67880 : Check BSON column is decompressible in the validate command.
Diffstat (limited to 'jstests/disk')
-rw-r--r--jstests/disk/validate_bson_inconsistency.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/jstests/disk/validate_bson_inconsistency.js b/jstests/disk/validate_bson_inconsistency.js
index ac68977d13a..e2d7675da90 100644
--- a/jstests/disk/validate_bson_inconsistency.js
+++ b/jstests/disk/validate_bson_inconsistency.js
@@ -179,6 +179,35 @@ resetDbpath(dbpath);
MongoRunner.stopMongod(mongod, null, {skipValidation: true});
})();
+(function validateDocumentsCorruptedBinDataColumn() {
+ jsTestLog("Validate documents with corrupted or misformed BinData Columns.");
+
+ let mongod = startMongodOnExistingPath(dbpath);
+ let db = mongod.getDB(baseName);
+ const collName = collNamePrefix + count++;
+ db.createCollection(collName);
+ let testColl = db[collName];
+
+ // Inserts a rubbish (random string) BSON Column.
+ testColl.insert({a: BinData(7, "O2FkZmdqYWtsamhnJ2xhamhkZzthaCdmZGphZ2hkYQ==")});
+ // Inserts one valid BSON Column to check that it doesn't cause a false positive.
+ testColl.insert(
+ {a: BinData(7, "AQAAAAAAAAAAQJN/AAAAAAAAAAIAAAAAAAAABwAAAAAAAAAOAAAAAAAAAAA=")});
+
+ // Calling validate without 'checkBSONConsistency' should not return any warnings.
+ let res = assert.commandWorked(testColl.validate());
+ assert(res.valid, tojson(res));
+ assert.eq(res.warnings.length, 0);
+ assert.eq(res.nNonCompliantDocuments, 0);
+
+ res = assert.commandWorked(testColl.validate({checkBSONConsistency: true}));
+ assert(res.valid, tojson(res));
+ assert.eq(res.warnings.length, 1);
+ assert.eq(res.nNonCompliantDocuments, 1);
+
+ MongoRunner.stopMongod(mongod, null, {skipValidation: true});
+})();
+
(function validateDocumentsNonSequentialArrayIndexes() {
jsTestLog("Validate documents with array indices that are not sequential");