diff options
author | Aaron <aaron@10gen.com> | 2010-01-26 14:40:06 -0800 |
---|---|---|
committer | Aaron <aaron@10gen.com> | 2010-01-26 14:40:06 -0800 |
commit | d0847c99123bc5d2362a90ec11316724256b85e2 (patch) | |
tree | a582f7309433692f19a2f397b8198134a6367fb7 /jstests/disk/directoryperdb.js | |
parent | a13d0b88c23e553a278244490613a13292027979 (diff) | |
download | mongo-d0847c99123bc5d2362a90ec11316724256b85e2.tar.gz |
SERVER-308 add support for --directoryperdb option
Diffstat (limited to 'jstests/disk/directoryperdb.js')
-rw-r--r-- | jstests/disk/directoryperdb.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/jstests/disk/directoryperdb.js b/jstests/disk/directoryperdb.js new file mode 100644 index 00000000000..d4f3140131d --- /dev/null +++ b/jstests/disk/directoryperdb.js @@ -0,0 +1,61 @@ +var baseDir = "jstests_disk_directoryper"; +var baseName = "directoryperdb" +port = allocatePorts( 1 )[ 0 ]; +dbpath = "/data/db/" + baseDir + "/"; + +var m = startMongod( "--directoryperdb", "--port", port, "--dbpath", dbpath, "--nohttpinterface", "--bind_ip", "127.0.0.1" ); +db = m.getDB( baseName ); +db[ baseName ].save( {} ); +assert.eq( 1, db[ baseName ].count() ); + +checkDir = function( dir ) { + files = listFiles( dir ); + found = false; + for( f in files ) { + if ( new RegExp( baseName ).test( files[ f ].name ) ) { + found = true; + assert( files[ f ].isDirectory, "file not directory" ); + } + } + assert( found, "no directory" ); + + files = listFiles( dir + baseName ); + for( f in files ) { + assert( new RegExp( baseName + "/" + baseName + "." ).test( files[ f ].name ) ); + } +} +checkDir( dbpath ); + +// file iterator +assert( m.getDBs().totalSize > 0, "bad size calc" ); + +// repair +db.runCommand( {repairDatabase:1, backupOriginalFiles:true} ); +checkDir( dbpath ); +files = listFiles( dbpath ); +for( f in files ) { + if ( new RegExp( "^" + dbpath + "backup_" ).test( files[ f ].name ) ) { + backupDir = files[ f ].name + "/"; + } +} +checkDir( backupDir ); +assert.eq( 1, db[ baseName ].count() ); + +// tool test +stopMongod( port ); + +externalPath = "/data/db/" + baseDir + "_external/"; + +runMongoProgram( "mongodump", "--dbpath", dbpath, "--directoryperdb", "--out", externalPath ); +resetDbpath( dbpath ); +runMongoProgram( "mongorestore", "--dbpath", dbpath, "--directoryperdb", "--dir", externalPath ); +m = startMongoProgram( "mongod", "--directoryperdb", "--port", port, "--dbpath", dbpath, "--nohttpinterface", "--bind_ip", "127.0.0.1" ); +db = m.getDB( baseName ); +checkDir( dbpath ); +assert.eq( 1, db[ baseName ].count() ); +assert( m.getDBs().totalSize > 0, "bad size calc" ); + +// drop db test +db.dropDatabase(); +files = listFiles( dbpath ); +files.forEach( function( f ) { assert( !new RegExp( baseName ).test( f.name ), "drop database - dir not cleared" ); } ); |