~ubuntu-branches/ubuntu/trusty/mongodb/trusty-proposed

« back to all changes in this revision

Viewing changes to jstests/repl/pair6.js

  • Committer: Bazaar Package Importer
  • Author(s): Antonin Kral
  • Date: 2010-01-29 19:48:45 UTC
  • Revision ID: james.westby@ubuntu.com-20100129194845-8wbmkf626fwcavc9
Tags: upstream-1.3.1
ImportĀ upstreamĀ versionĀ 1.3.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// pairing cases where oplogs run out of space
 
2
 
 
3
var baseName = "jstests_pair6test";
 
4
 
 
5
debug = function( p ) {
 
6
    print( p );
 
7
}
 
8
 
 
9
ismaster = function( n ) {
 
10
    var im = n.getDB( "admin" ).runCommand( { "ismaster" : 1 } );
 
11
    print( "ismaster: " + tojson( im ) );
 
12
    assert( im, "command ismaster failed" );
 
13
    return im.ismaster;
 
14
}
 
15
 
 
16
connect = function() {
 
17
    startMongoProgram( "mongobridge", "--port", lpPort, "--dest", "localhost:" + lPort );
 
18
    startMongoProgram( "mongobridge", "--port", rpPort, "--dest", "localhost:" + rPort );
 
19
}
 
20
 
 
21
disconnect = function() {
 
22
    stopMongoProgram( lpPort );
 
23
    stopMongoProgram( rpPort );
 
24
}
 
25
 
 
26
checkCount = function( m, c ) {
 
27
    m.setSlaveOk();
 
28
    assert.soon( function() {
 
29
                actual = m.getDB( baseName ).getCollection( baseName ).find().count();
 
30
                print( actual );
 
31
                return c == actual; },
 
32
                "expected count " + c + " for " + m );
 
33
}
 
34
 
 
35
resetSlave = function( s ) {
 
36
    s.setSlaveOk();
 
37
    assert.soon( function() {
 
38
                ret = s.getDB( "admin" ).runCommand( { "resync" : 1 } );
 
39
                //                printjson( ret );
 
40
                return 1 == ret.ok;
 
41
                } );    
 
42
}
 
43
 
 
44
big = new Array( 2000 ).toString();
 
45
 
 
46
doTest = function() {
 
47
    ports = allocatePorts( 5 );
 
48
    aPort = ports[ 0 ];
 
49
    lPort = ports[ 1 ];
 
50
    lpPort = ports[ 2 ];
 
51
    rPort = ports[ 3 ];
 
52
    rpPort = ports[ 4 ];
 
53
    
 
54
    // start normally
 
55
    connect();
 
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 );
 
60
    pair.start();
 
61
    pair.waitForSteadyState();
 
62
 
 
63
    disconnect();    
 
64
    pair.waitForSteadyState( [ 1, 1 ], null, true );
 
65
 
 
66
    print( "test one" );
 
67
    
 
68
    // fill new slave oplog
 
69
    for( i = 0; i < 1000; ++i ) {
 
70
        pair.left().getDB( baseName ).getCollection( baseName ).save( {b:big} );
 
71
    }
 
72
    pair.left().getDB( baseName ).getCollection( baseName ).findOne();
 
73
    
 
74
    // write single to new master
 
75
    pair.right().getDB( baseName ).getCollection( baseName ).save( {} );
 
76
    
 
77
    connect();
 
78
    pair.waitForSteadyState( [ 1, 0 ], pair.right().host, true );
 
79
 
 
80
    resetSlave( pair.left() );
 
81
    
 
82
    checkCount( pair.left(), 1 );
 
83
    checkCount( pair.right(), 1 );
 
84
    
 
85
    pair.right().getDB( baseName ).getCollection( baseName ).remove( {} );
 
86
    checkCount( pair.left(), 0 );
 
87
    
 
88
    disconnect();    
 
89
    pair.waitForSteadyState( [ 1, 1 ], null, true );
 
90
 
 
91
    print( "test two" );
 
92
    
 
93
    // fill new master oplog
 
94
    for( i = 0; i < 1000; ++i ) {
 
95
        pair.right().getDB( baseName ).getCollection( baseName ).save( {b:big} );
 
96
    }
 
97
 
 
98
    pair.left().getDB( baseName ).getCollection( baseName ).save( {_id:"abcde"} );
 
99
 
 
100
    connect();
 
101
    pair.waitForSteadyState( [ 1, 0 ], pair.right().host, true );
 
102
    
 
103
    sleep( 15000 );
 
104
    
 
105
    resetSlave( pair.left() );
 
106
    
 
107
    checkCount( pair.left(), 1000 );
 
108
    checkCount( pair.right(), 1000 );
 
109
    assert.eq( 0, pair.left().getDB( baseName ).getCollection( baseName ).find( {_id:"abcde"} ).count() );
 
110
    
 
111
    ports.forEach( function( x ) { stopMongoProgram( x ); } );
 
112
    
 
113
}
 
114
 
 
115
doTest();
 
 
b'\\ No newline at end of file'