summaryrefslogtreecommitdiff
path: root/jstests/sharding/geo_near_random2.js
blob: 43b89b773922e9d473a887c51f3538290237f9d5 (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
47
48
49
50
51
52
53
54
55
56
57
58
/**
 * This tests 1% of all points using $near and $nearSphere.
 */

load("jstests/libs/geo_near_random.js");

(function() {
'use strict';

var testName = "geo_near_random2";
var s = new ShardingTest({shards: 3});

var db = s.getDB("test");

var test = new GeoNearRandomTest(testName, db);

assert.commandWorked(s.s0.adminCommand({enablesharding: 'test'}));
s.ensurePrimaryShard('test', s.shard1.shardName);
assert.commandWorked(s.s0.adminCommand({shardcollection: ('test.' + testName), key: {_id: 1}}));

test.insertPts(5000);
var shardList = [s.shard0.shardName, s.shard1.shardName, s.shard2.shardName];
for (var i = (test.nPts / 10); i < test.nPts; i += (test.nPts / 10)) {
    assert.commandWorked(s.s0.adminCommand({split: ('test.' + testName), middle: {_id: i}}));
    try {
        assert.commandWorked(s.s0.adminCommand({
            moveChunk: ('test.' + testName),
            find: {_id: i - 1},
            to: shardList[i % 3],
            _waitForDelete: true
        }));
    } catch (e) {
        // ignore this error
        if (!e.message.match(/that chunk is already on that shard/)) {
            throw e;
        }
    }
}

// Turn balancer back on, for actual tests
// s.startBalancer(); // SERVER-13365

var opts = {sphere: 0, nToTest: test.nPts * 0.01};
test.testPt([0, 0], opts);
test.testPt(test.mkPt(), opts);
test.testPt(test.mkPt(), opts);
test.testPt(test.mkPt(), opts);
test.testPt(test.mkPt(), opts);

opts.sphere = 1;
test.testPt([0, 0], opts);
test.testPt(test.mkPt(0.8), opts);
test.testPt(test.mkPt(0.8), opts);
test.testPt(test.mkPt(0.8), opts);
test.testPt(test.mkPt(0.8), opts);

s.stop();
})();