summaryrefslogtreecommitdiff
path: root/jstests/core/cursora.js
blob: 6a314c22c8fb1147d602f2bb8bf7534d176fd667 (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// @tags: [requires_getmore, requires_non_retryable_writes]
(function() {
    "use strict";

    const t = db.cursora;

    function run(n) {
        if (!isNumber(n)) {
            assert(isNumber(n), "cursora.js isNumber");
        }
        t.drop();

        let bulk = t.initializeUnorderedBulkOp();
        for (let i = 0; i < n; i++)
            bulk.insert({_id: i});
        assert.writeOK(bulk.execute());

        const join = startParallelShell("sleep(50);" + "db.cursora.remove({});");

        let num;
        try {
            let start = new Date();
            num = t.find(function() {
                       let num = 2;
                       for (let x = 0; x < 1000; x++)
                           num += 2;
                       return num > 0;
                   })
                      .sort({_id: -1})
                      .itcount();
        } catch (e) {
            print("cursora.js FAIL " + e);
            join();
            throw e;
        }

        join();

        assert.eq(0, t.count());
        if (n == num)
            print("cursora.js warning: shouldn't have counted all  n: " + n + " num: " + num);
    }

    run(1500);
    run(5000);
})();