Files
mongo/jstests/noPassthrough/query_yield1.js
2016-03-09 12:18:14 -05:00

92 lines
2.1 KiB
JavaScript

if (0) { // Test disabled until SERVER-8579 is finished. Reminder ticket: SERVER-8342
load("jstests/libs/slow_weekly_util.js");
testServer = new SlowWeeklyMongod("query_yield1");
db = testServer.getDB("test");
t = db.query_yield1;
t.drop();
N = 20000;
i = 0;
q = function() {
var x = this.n;
for (var i = 0; i < 250; i++) {
x = x * 2;
}
return false;
};
while (true) {
function fill() {
var bulk = t.initializeUnorderedBulkOp();
for (; i < N; i++) {
bulk.insert({_id: i, n: 1});
}
assert.writeOK(bulk.execute());
}
function timeQuery() {
return Date.timeFunc(function() {
assert.eq(0, t.find(q).itcount());
});
}
fill();
timeQuery();
timeQuery();
time = timeQuery();
print(N + "\t" + time);
if (time > 2000)
break;
N *= 2;
}
// --- test 1
assert.eq(0, db.currentOp().inprog.length, "setup broken");
join = startParallelShell(
"print( 0 == db.query_yield1.find( function(){ var x=this.n; for ( var i=0; i<500; i++ ){ x = x * 2; } return false; } ).itcount() ); ");
assert.soon(function() {
var x = db.currentOp().inprog;
return x.length > 0;
}, "never doing query", 2000, 1);
print("start query");
num = 0;
start = new Date();
biggestMe = 0;
while (((new Date()).getTime() - start) < (time * 2)) {
var me = Date.timeFunc(function() {
t.insert({x: 1});
});
var x = db.currentOp();
if (num++ == 0) {
assert.eq(1, x.inprog.length, "nothing in prog");
}
if (me > biggestMe) {
biggestMe = me;
print("biggestMe: " + biggestMe);
}
assert.gt(200, me, "took too long for me to run");
if (x.inprog.length == 0)
break;
}
join();
var x = db.currentOp();
assert.eq(0, x.inprog.length, "weird 2");
testServer.stop();
}