summaryrefslogtreecommitdiff
path: root/jstests/parallel/update_serializability2.js
blob: c99eafea9efaa2ed550c6dea12c99e873bb7052e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function test() {
    "use strict";
    var t = db.update_serializability1;
    t.drop();

    var N = 100000;

    var bulk = t.initializeUnorderedBulkOp();
    for ( var i = 0; i < N; i++ ) {
        bulk.insert( { _id : i, a : i, b: N-i, x : 1, y : 1 } );
    }
    bulk.execute();

    t.ensureIndex( { a : 1 } );
    t.ensureIndex( { b : 1 } );

    var s1 = startParallelShell( "db.update_serializability1.update( { a : { $gte : 0 } }, { $set : { x : 2 } }, false, true );" );
    var s2 = startParallelShell( "db.update_serializability1.update( { b : { $lte : " + N + " } }, { $set : { y : 2 } }, false, true );" );

    s1();
    s2();

    // both operations should happen on every document
    assert.eq( N, t.find( { x : 2, y : 2 } ).count() );
}

if (db.serverStatus().storageEngine.name == 'mmapv1') {
    jsTest.log('skipping test on mmapv1'); // This is only guaranteed on other engines.
}
else {
    test();
}