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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
(function() {
load("jstests/configs/replset_28.config.js");
var name = 'import_write_concern';
var toolTest = new ToolTest(name, null);
var dbName = "foo";
var colName = "bar";
var fileTarget = "wc_mongos.csv";
var st = new ShardingTest({
shards: {
rs0: {
nodes: 3,
useHostName: true,
settings: {chainingAllowed: false},
},
},
mongos: 1,
config: 1,
configReplSetTestOptions: {
settings: {chainingAllowed: false},
},
});
var rs = st.rs0;
rs.awaitReplication();
toolTest.port = st.s.port;
var commonToolArgs = getCommonToolArguments();
var db = st.s.getDB(dbName);
var col = db.getCollection(colName);
function writeConcernTestFunc(exitCode, writeConcern, name) {
jsTest.log(name);
var ret = toolTest.runTool.apply(toolTest, ['import',
'--file', fileTarget,
'-d', dbName,
'-c', colName]
.concat(writeConcern)
.concat(commonToolArgs));
assert.eq(exitCode, ret, name);
db.dropDatabase();
}
function startProgramNoConnect() {
return startMongoProgramNoConnect.apply(null, ['mongoimport',
'--writeConcern={w:3}',
'--host', st.s.host,
'--file', fileTarget]
.concat(commonToolArgs));
}
// create a test collection
for (var i=0; i<=100; i++) {
col.insert({_id: i, x: i*i});
}
rs.awaitReplication();
// setup: export the data that we'll use
var ret = toolTest.runTool.apply(toolTest, ['export',
'--out', fileTarget,
'-d', dbName,
'-c', colName]
.concat(commonToolArgs));
assert.eq(0, ret);
// drop the database so it's empty
db.dropDatabase();
// load and run the write concern suite
load('jstests/libs/wc_framework.js');
runWCTest("mongoimport", rs, toolTest, writeConcernTestFunc, startProgramNoConnect);
db.dropDatabase();
rs.stopSet();
toolTest.stop();
}());
|