53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
// Test for cloning a db from a replica set [SERVER-1643] -Tony
|
|
|
|
load('jstests/libs/grid.js')
|
|
|
|
doTest = function( signal ) {
|
|
|
|
var N = 2000
|
|
|
|
// ~1KB string
|
|
var Text = ''
|
|
for (var i = 0; i < 40; i++)
|
|
Text += 'abcdefghijklmnopqrstuvwxyz'
|
|
|
|
// Create replica set
|
|
var repset = new ReplicaSet ('testSet', 3) .begin()
|
|
var master = repset.getMaster()
|
|
var db1 = master.getDB('test')
|
|
|
|
// Insert data
|
|
for (var i = 0; i < N; i++) {
|
|
db1['foo'].insert({x: i, text: Text})
|
|
db1.getLastError(2) // wait to be copied to at least one secondary
|
|
}
|
|
|
|
// Create single server
|
|
var solo = new Server ('singleTarget')
|
|
var soloConn = solo.begin()
|
|
var db2 = soloConn.getDB('test')
|
|
|
|
// Clone db from replica set to single server
|
|
db2.cloneDatabase (repset.getURL())
|
|
|
|
// Confirm clone worked
|
|
assert.eq (Text, db2['foo'] .findOne({x: N-1}) ['text'], 'cloneDatabase failed (test1)')
|
|
|
|
// Now test the reverse direction
|
|
db1 = master.getDB('test2')
|
|
db2 = soloConn.getDB('test2')
|
|
for (var i = 0; i < N; i++) {
|
|
db2['foo'].insert({x: i, text: Text})
|
|
db2.getLastError()
|
|
}
|
|
db1.cloneDatabase (solo.host())
|
|
assert.eq (Text, db2['foo'] .findOne({x: N-1}) ['text'], 'cloneDatabase failed (test2)')
|
|
|
|
// Shut down replica set and single server
|
|
solo.end()
|
|
repset.stopSet( signal )
|
|
}
|
|
|
|
doTest( 15 );
|
|
print("replsets/cloneDb.js SUCCESS");
|