mirror of
https://github.com/mongodb/mongo.git
synced 2024-12-01 09:32:32 +01:00
66 lines
2.0 KiB
JavaScript
66 lines
2.0 KiB
JavaScript
// tests gridfs with a sharded fs.chunks collection.
|
|
|
|
var test = new ShardingTest({shards: 3,
|
|
mongos: 1,
|
|
config: 1,
|
|
verbose: 2,
|
|
other: {chunksize:1, separateConfig:true}})
|
|
|
|
var mongos = test.s0
|
|
|
|
|
|
var filename = "mongod" // A large file we are guaranteed to have
|
|
if (_isWindows())
|
|
filename += ".exe"
|
|
|
|
function testGridFS(name) {
|
|
var d = mongos.getDB(name)
|
|
|
|
// this function should be called on a clean db
|
|
assert.eq(d.name.files.count(), 0)
|
|
assert.eq(d.fs.chunks.count(), 0)
|
|
|
|
var rawmd5 = md5sumFile(filename)
|
|
|
|
// upload file (currently calls filemd5 internally)
|
|
runMongoProgram.apply(null, ["mongofiles", "--port", mongos.port, "put", filename, '--db', name]);
|
|
|
|
assert.eq(d.fs.files.count(), 1)
|
|
var fileObj = d.fs.files.findOne()
|
|
print("fileObj: " + tojson(fileObj))
|
|
assert.eq(rawmd5, fileObj.md5) //check that mongofiles inserted the correct md5
|
|
|
|
// Call filemd5 ourself and check results.
|
|
var res = d.runCommand({filemd5: fileObj._id})
|
|
print("filemd5 output: " + tojson(res))
|
|
assert(res.ok)
|
|
assert.eq(rawmd5, res.md5)
|
|
|
|
var numChunks = d.fs.chunks.find({files_id: fileObj._id}).itcount()
|
|
//var numChunks = d.fs.chunks.count({files_id: fileObj._id}) // this is broken for now
|
|
assert.eq(numChunks, res.numChunks)
|
|
}
|
|
|
|
print('\n\n\t**** unsharded ****\n\n')
|
|
name = 'unsharded'
|
|
testGridFS(name)
|
|
|
|
print('\n\n\t**** sharded db, unsharded collection ****\n\n')
|
|
name = 'sharded_db'
|
|
test.adminCommand({enablesharding: name})
|
|
testGridFS(name)
|
|
|
|
print('\n\n\t**** sharded collection on files_id ****\n\n')
|
|
name = 'sharded_files_id'
|
|
test.adminCommand({enablesharding: name})
|
|
test.adminCommand({shardcollection: name+'.fs.chunks', key: {files_id:1}})
|
|
testGridFS(name)
|
|
|
|
print('\n\n\t**** sharded collection on files_id,n ****\n\n')
|
|
name = 'sharded_files_id_n'
|
|
test.adminCommand({enablesharding: name})
|
|
test.adminCommand({shardcollection: name+'.fs.chunks', key: {files_id:1, n:1}})
|
|
testGridFS(name)
|
|
|
|
test.stop()
|