8000 Switch commandline argument handling to the new object structure. · ezhangle/arangodb@ca95acc · GitHub
[go: up one dir, main page]

Skip to content

Commit ca95acc

Browse files
committed
Switch commandline argument handling to the new object structure.
1 parent e5fd202 commit ca95acc

File tree

1 file changed

+86
-89
lines changed

1 file changed

+86
-89
lines changed

js/server/modules/org/arangodb/testing.js

Lines changed: 86 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*jshint strict: false */
1+
/*jshint strict: false, sub: true */
22
/*global require, exports */
33

44
////////////////////////////////////////////////////////////////////////////////
@@ -228,27 +228,27 @@ function findTopDir () {
228228
function makeTestingArgs (appDir) {
229229
var topDir = findTopDir();
230230
fs.makeDirectoryRecursive(appDir, true);
231-
return [ "--configuration", "none",
232-
"--server.keyfile", fs.join(topDir, "UnitTests", "server.pem"),
233-
"--database.maximal-journal-size", "1048576",
234-
"--database.force-sync-properties", "false",
235-
"--javascript.app-path", appDir,
236-
"--javascript.startup-directory", fs.join(topDir, "js"),
237-
"--ruby.modules-path", fs.join(topDir,"mr", "common", "modules"),
238-
"--server.threads", "20",
239-
"--javascript.v8-contexts", "5",
240-
"--server.disable-authentication", "true",
241-
"--server.allow-use-database", "true" ];
231+
return { "configuration": "none",
232+
"server.keyfile": fs.join(topDir, "UnitTests", "server.pem"),
233+
"database.maximal-journal-size": "1048576",
234+
"database.force-sync-properties": "false",
235+
"javascript.app-path": appDir,
236+
"javascript.startup-directory": fs.join(topDir, "js"),
237+
"ruby.modules-path": fs.join(topDir,"mr", "common", "modules"),
238+
"server.threads": "20",
239+
"javascript.v8-contexts": "5",
240+
"server.disable-authentication": "true",
241+
"server.allow-use-database": "true" };
242242
}
243243

244244
function makeTestingArgsClient (options) {
245245
var topDir = findTopDir();
246-
return [ "--configuration", "none",
247-
"--javascript.startup-directory", fs.join(topDir, "js"),
248-
"--no-colors",
249-
"--quiet",
250-
"--server.username", options.username,
251-
"--server.password", options.password ];
246+
return { "configuration": "none",
247+
"javascript.startup-directory": fs.join(topDir, "js"),
248+
"no-colors": "true",
249+
"quiet": "true",
250+
"server.username": options.username,
251+
"server.password": options.password };
252252
}
253253

254254
function makeAuthorisationHeaders (options) {
@@ -284,25 +284,25 @@ function startInstance (protocol, options, addArgs, testname) {
284284

285285
var endpoint;
286286
var pos;
287-
var valgrindopts = [];
287+
var valgrindopts = {};
288288
if (typeof(options.valgrindargs) === 'object') {
289289
if (_.isArray(options.valgrindargs)) {
290290
valgrindopts = options.valgrindargs;
291291
}
292292
else {
293-
valgrindopts = valgrindopts.concat(toArgv(options.valgrindargs, true));
293+
valgrindopts = _.extend(valgrindopts, options.valgrindargs);
294294
}
295295
}
296296

297297
var dispatcher;
298298
if (options.cluster) {
299299
var extraargs = makeTestingArgs(appDir);
300-
extraargs = extraargs.concat(optionsExtraArgs);
300+
extraargs = _.extend(extraargs, optionsExtraArgs);
301301
if (addArgs !== undefined) {
302-
extraargs = extraargs.concat(addArgs);
302+
extraargs = _.extend(extraargs, addArgs);
303303
}
304304
dispatcher = {"endpoint":"tcp://127.0.0.1:",
305-
"arangodExtraArgs": extraargs,
305+
"arangodExtraArgs": toArgv(extraargs),
306306
"username": "root",
307307
"password": ""};
308308
print("Temporary cluster data and logs are in",tmpDataDir);
@@ -321,7 +321,7 @@ function startInstance (protocol, options, addArgs, testname) {
321321
"logPath" : tmpDataDir,
322322
"useSSLonCoordinators" : protocol === "ssl",
323323
"valgrind" : runInValgrind,
324-
"valgrindopts" : valgrindopts,
324+
"valgrindopts" : toArgv(valgrindopts, true),
325325
"valgrindXmlFileBase" : valgrindXmlFileBase,
326326
"valgrindTestname" : testname
327327
});
@@ -356,35 +356,38 @@ function startInstance (protocol, options, addArgs, testname) {
356356
var pf = new PortFinder([8529 + options.portOffset],dispatcher);
357357
var port = pf.next();
358358
instanceInfo.port = port;
359-
var args = makeTestingArgs(appDir);
360-
args.push("--server.endpoint");
361359
endpoint = protocol+"://127.0.0.1:"+port;
362-
args.push(endpoint);
363-
args.push("--database.directory");
364-
args.push(fs.join(tmpDataDir,"data"));
360+
361+
var args = makeTestingArgs(appDir);
362+
args["server.endpoint"] = endpoint;
363+
args["database.directory"] = fs.join(tmpDataDir,"data");
365364
fs.makeDirectoryRecursive(fs.join(tmpDataDir,"data"));
366-
args.push("--log.file");
367-
args.push(fs.join(tmpDataDir,"log"));
365+
args["log.file"] = fs.join(tmpDataDir,"log");
368366
if (protocol === "ssl") {
369-
args.push("--server.keyfile");
370-
args.push(fs.join("UnitTests","server.pem"));
367+
args["server.keyfile"] = fs.join("UnitTests","server.pem");
371368
}
372-
args = args.concat(optionsExtraArgs);
369+
args = _.extend(args, optionsExtraArgs);
373370

374371
if (addArgs !== undefined) {
375-
args = args.concat(addArgs);
372+
args = _.extend(args, addArgs);
376373
}
377374
if (typeof(options.valgrind) === 'string') {
378375
var run = fs.join("bin","arangod");
379-
valgrindopts = valgrindopts.concat(
380-
["--xml-file="+options.valgrindXmlFileBase + '_' + testname + '.%p.xml',
381-
"--log-file="+options.valgrindXmlFileBase + '_' + testname + '.%p.valgrind.log']);
382-
var newargs=valgrindopts.concat([run]).concat(args);
376+
var testfn = options.valgrindXmlFileBase;
377+
if (testfn.length > 0 ) {
378+
testfn += '_' ;
379+
}
380+
testfn += testname;
381+
382+
valgrindopts["xml-file"] = testfn + '.%p.xml';
383+
valgrindopts["log-file"] = testfn + '.%p.valgrind.log';
384+
// Sequence: Valgrind arguments; binary to run; options to binary:
385+
var newargs=toArgv(valgrindopts, true).concat([run]).concat(toArgv(args)); EED3
383386
var cmdline = options.valgrind;
384387
instanceInfo.pid = executeExternal(cmdline, newargs);
385388
}
386389
else {
387-
instanceInfo.pid = executeExternal(fs.join("bin","arangod"), args);
390+
instanceInfo.pid = executeExternal(fs.join("bin","arangod"), toArgv(args));
388391
}
389392
}
390393

@@ -831,16 +834,14 @@ function executeAndWait (cmd, args) {
831834
function runInArangosh (options, instanceInfo, file, addArgs) {
832835
var args = makeTestingArgsClient(options);
833836
var topDir = findTopDir();
834-
args.push("--server.endpoint");
835-
args.push(instanceInfo.endpoint);
836-
args.push("--javascript.unit-tests");
837-
args.push(fs.join(topDir,file));
837+
args["server.endpoint"] = instanceInfo.endpoint;
838+
args["javascript.unit-tests"] = fs.join(topDir, file);
838839
if (addArgs !== undefined) {
839-
args = args.concat(addArgs);
840+
args = _.extend(args, addArgs);
840841
}
841842
var arangosh = fs.join("bin","arangosh");
842843
var result;
843-
var rc = executeAndWait(arangosh, args);
844+
var rc = executeAndWait(arangosh, toArgv(args));
844845
try {
845846
result = JSON.parse(fs.read("testresult.json"));
846847
}
@@ -859,11 +860,10 @@ function runInArangosh (options, instanceInfo, file, addArgs) {
859860

860861
function runArangoshCmd (options, instanceInfo, cmds) {
861862
var args = makeTestingArgsClient(options);
862-
args.push("--server.endpoint");
863-
args.push(instanceInfo.endpoint);
864-
args = args.concat(cmds);
863+
args["server.endpoint"] = instanceInfo.endpoint;
864+
var argv = toArgv(args).concat(cmds);
865865
var arangosh = fs.join("bin","arangosh");
866-
return executeAndWait(arangosh, args);
866+
return executeAndWait(arangosh, argv);
867867
}
868868

869869
function performTests(options, testList, testname, remote) {
@@ -1325,46 +1325,45 @@ testFuncs.ssl_server = function (options) {
13251325

13261326
function runArangoImp (options, instanceInfo, what) {
13271327
var topDir = findTopDir();
1328-
var args = ["--server.username", options.username,
1329-
"--server.password", options.password,
1330-
"--server.endpoint", instanceInfo.endpoint,
1331-
"--file", fs.join(topDir,what.data),
1332-
"--collection", what.coll,
1333-
"--type", what.type];
1328+
var args = {
1329+
"server.username": options.username,
1330+
"server.password": options.password,
1331+
"server.endpoint": instanceInfo.endpoint,
1332+
"file": fs.join(topDir,what.data),
1333+
"collection": what.coll,
1334+
"type": what.type
1335+
};
13341336
if (what.create !== undefined) {
1335-
args.push("--create-collection");
1336-
args.push(what.create);
1337+
args["create-collection"] = what.create;
13371338
}
13381339
if (what.backslash !== undefined) {
1339-
args.push("--backslash-escape");
1340-
args.push(what.backslash);
1340+
args["backslash-escape"] = what.backslash;
13411341
}
13421342
if (what.separator !== undefined) {
1343-
args.push("--separator");
1344-
args.push(what.separator);
1343+
args["separator"] = what.separator;
13451344
}
13461345
var arangoimp = fs.join("bin","arangoimp");
1347-
return executeAndWait(arangoimp, args);
1346+
return executeAndWait(arangoimp, toArgv(args));
13481347
}
1349 10000 1348

13501349
function runArangoDumpRestore (options, instanceInfo, which, database) {
1351-
var args = ["--configuration", "none",
1352-
"--server.username", options.username,
1353-
"--server.password", options.password,
1354-
"--server.endpoint", instanceInfo.endpoint,
1355-
"--server.database", database];
1350+
var args = {
1351+
"configuration": "none",
1352+
"server.username": options.username,
1353+
"server.password": options.password,
1354+
"server.endpoint": instanceInfo.endpoint,
1355+
"server.database": database
1356+
};
13561357
var exe;
13571358
if (which === "dump") {
1358-
args.push("--output-directory");
1359-
args.push(fs.join(instanceInfo.tmpDataDir,"dump"));
1359+
args["output-directory"] = fs.join(instanceInfo.tmpDataDir,"dump");
13601360
exe = fs.join("bin","arangodump");
13611361
}
13621362
else {
1363-
args.push("--input-directory");
1364-
args.push(fs.join(instanceInfo.tmpDataDir,"dump"));
1363+
args["input-directory"] = fs.join(instanceInfo.tmpDataDir,"dump");
13651364
exe = fs.join("bin","arangorestore");
13661365
}
1367-
return executeAndWait(exe, args);
1366+
return executeAndWait(exe, toArgv(args));
13681367
}
13691368

13701369
function runArangoBenchmark (options, instanceInfo, cmds) {
@@ -1485,20 +1484,18 @@ testFuncs.upgrade = function (options) {
14851484
var pf = new PortFinder([8529],dispatcher);
14861485
var port = pf.next();
14871486
var args = makeTestingArgs(appDir);
1488-
args.push("--server.endpoint");
14891487
var endpoint = "tcp://127.0.0.1:"+port;
1490-
args.push(endpoint);
1491-
args.push("--database.directory");
1492-
args.push(fs.join(tmpDataDir,"data"));
1488+
args["server.endpoint"] = endpoint;
1489+
args["database.directory"] = fs.join(tmpDataDir,"data");
14931490
fs.makeDirectoryRecursive(fs.join(tmpDataDir,"data"));
1494-
args.push("--upgrade");
1495-
result.first = executeAndWait(fs.join("bin","arangod"), args);
1491+
var argv = toArgv(args).concat(["--upgrade"]);
1492+
result.first = executeAndWait(fs.join("bin","arangod"), argv);
14961493

14971494
if (result.first !== 0 && !options.force) {
14981495
print("not removing " + tmpDataDir);
14991496
return result;
15001497
}
1501-
result.second = executeAndWait(fs.join("bin","arangod"), args);
1498+
result.second = executeAndWait(fs.join("bin","arangod"), argv);
15021499

15031500
cleanupDirectories.push(tmpDataDir);
15041501

@@ -1566,7 +1563,7 @@ testFuncs.dump = function (options) {
15661563
print(Date() + ": Dump and Restore - dump 2");
15671564
results.test = runInArangosh(options, instanceInfo,
15681565
makePathUnix("js/server/tests/dump"+cluster+".js"),
1569-
[ "--server.database", "UnitTestsDumpDst" ]);
1566+
{ "server.database": "UnitTestsDumpDst"});
15701567
if (checkInstanceAlive(instanceInfo, options)) {
15711568
print(Date() + ": Dump and Restore - teardown");
15721569
results.tearDown = runInArangosh(options, instanceInfo,
@@ -1656,7 +1653,7 @@ testFuncs.arangob = function (options) {
16561653
testFuncs.authentication = function (options) {
16571654
print("Authentication tests...");
16581655
var instanceInfo = startInstance("tcp", options,
1659-
["--server.disable-authentication", "false"],
1656+
{"server.disable-authentication": "false"},
16601657
"authentication");
16611658
if (instanceInfo === false) {
16621659
return {status: false, message: "failed to start server!"};
@@ -1686,12 +1683,12 @@ var urlsTodo = [
16861683
];
16871684

16881685
var authTestServerParams = [
1689-
["--server.disable-authentication", "false",
C886
1690-
"--server.authenticate-system-only", "false"],
1691-
["--server.disable-authentication", "false",
1692-
"--server.authenticate-system-only", "true"],
1693-
["--server.disable-authentication", "true",
1694-
"--server.authenticate-system-only", "true"]
1686+
{"server.disable-authentication": "false",
1687+
"server.authenticate-system-only": "false"},
1688+
{"server.disable-authentication": "false",
1689+
"server.authenticate-system-only": "true"},
1690+
{"server.disable-authentication": "true",
1691+
"server.authenticate-system-only": "true"}
16951692
];
16961693
var authTestNames = ["Full",
16971694
"SystemAuth",
@@ -1721,7 +1718,7 @@ testFuncs.authentication_parameters = function (options) {
17211718
var all_ok = true;
17221719
var instanceInfo = startInstance("tcp", options,
17231720
authTestServerParams[test],
1724-
"authentication_parameters_" + test);
1721+
"authentication_parameters_" + authTestNames[test]);
17251722
if (instanceInfo === false) {
17261723
return {status: false, message: authTestNames[test] + ": failed to start server!"};
17271724
}

0 commit comments

Comments
 (0)
0