1
// pairing cases where oplogs run out of space
3
var baseName = "jstests_pair6test";
5
debug = function( p ) {
9
ismaster = function( n ) {
10
var im = n.getDB( "admin" ).runCommand( { "ismaster" : 1 } );
11
print( "ismaster: " + tojson( im ) );
12
assert( im, "command ismaster failed" );
16
connect = function() {
17
startMongoProgram( "mongobridge", "--port", lpPort, "--dest", "localhost:" + lPort );
18
startMongoProgram( "mongobridge", "--port", rpPort, "--dest", "localhost:" + rPort );
21
disconnect = function() {
22
stopMongoProgram( lpPort );
23
stopMongoProgram( rpPort );
26
checkCount = function( m, c ) {
28
assert.soon( function() {
29
actual = m.getDB( baseName ).getCollection( baseName ).find().count();
31
return c == actual; },
32
"expected count " + c + " for " + m );
35
resetSlave = function( s ) {
37
assert.soon( function() {
38
ret = s.getDB( "admin" ).runCommand( { "resync" : 1 } );
44
big = new Array( 2000 ).toString();
47
ports = allocatePorts( 5 );
56
a = new MongodRunner( aPort, "/data/db/" + baseName + "-arbiter" );
57
l = new MongodRunner( lPort, "/data/db/" + baseName + "-left", "127.0.0.1:" + rpPort, "127.0.0.1:" + aPort );
58
r = new MongodRunner( rPort, "/data/db/" + baseName + "-right", "127.0.0.1:" + lpPort, "127.0.0.1:" + aPort );
59
pair = new ReplPair( l, r, a );
61
pair.waitForSteadyState();
64
pair.waitForSteadyState( [ 1, 1 ], null, true );
68
// fill new slave oplog
69
for( i = 0; i < 1000; ++i ) {
70
pair.left().getDB( baseName ).getCollection( baseName ).save( {b:big} );
72
pair.left().getDB( baseName ).getCollection( baseName ).findOne();
74
// write single to new master
75
pair.right().getDB( baseName ).getCollection( baseName ).save( {} );
78
pair.waitForSteadyState( [ 1, 0 ], pair.right().host, true );
80
resetSlave( pair.left() );
82
checkCount( pair.left(), 1 );
83
checkCount( pair.right(), 1 );
85
pair.right().getDB( baseName ).getCollection( baseName ).remove( {} );
86
checkCount( pair.left(), 0 );
89
pair.waitForSteadyState( [ 1, 1 ], null, true );
93
// fill new master oplog
94
for( i = 0; i < 1000; ++i ) {
95
pair.right().getDB( baseName ).getCollection( baseName ).save( {b:big} );
98
pair.left().getDB( baseName ).getCollection( baseName ).save( {_id:"abcde"} );
101
pair.waitForSteadyState( [ 1, 0 ], pair.right().host, true );
105
resetSlave( pair.left() );
107
checkCount( pair.left(), 1000 );
108
checkCount( pair.right(), 1000 );
109
assert.eq( 0, pair.left().getDB( baseName ).getCollection( baseName ).find( {_id:"abcde"} ).count() );
111
ports.forEach( function( x ) { stopMongoProgram( x ); } );
b'\\ No newline at end of file'