mirror of https://gitee.com/bigwinds/arangodb
Added queue legacy test.
This commit is contained in:
parent
e79088c528
commit
53dff0b2d1
|
@ -0,0 +1,27 @@
|
||||||
|
'use strict';
|
||||||
|
var Foxx = require('org/arangodb/foxx');
|
||||||
|
var queue = Foxx.queues.get('default');
|
||||||
|
var ctrl = new Foxx.Controller(applicationContext);
|
||||||
|
|
||||||
|
ctrl.post('/', function (req, res) {
|
||||||
|
try {
|
||||||
|
var jobId = queue.push('queue-legacy-test', req.body(), {
|
||||||
|
allowUnknown: req.parameters.allowUnknown,
|
||||||
|
success: function (id, data) {
|
||||||
|
var collectionName = 'test__queue_test_data';
|
||||||
|
var db = require('org/arangodb').db;
|
||||||
|
db._collection(collectionName).save(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
res.json({success: true, job: jobId});
|
||||||
|
} catch (e) {
|
||||||
|
res.status = 418;
|
||||||
|
res.json({success: false, error: e.name, stacktrace: e.stack});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ctrl.get('/', function (req, res) {
|
||||||
|
var db = require('org/arangodb').db;
|
||||||
|
var collectionName = 'test__queue_test_data';
|
||||||
|
res.json(db._collection(collectionName).all().toArray());
|
||||||
|
});
|
|
@ -0,0 +1,15 @@
|
||||||
|
'use strict';
|
||||||
|
var joi = require('joi');
|
||||||
|
var schema = joi.object().required();
|
||||||
|
var queues = require('org/arangodb/foxx').queues;
|
||||||
|
|
||||||
|
queues.registerJobType('queue-legacy-test', {
|
||||||
|
schema: schema,
|
||||||
|
execute: function (data) {
|
||||||
|
var result = schema.validate(data);
|
||||||
|
if (result.error) {
|
||||||
|
throw result.error;
|
||||||
|
}
|
||||||
|
return result.data;
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"name": "queue-legacy-test",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"defaultDocument": "",
|
||||||
|
"controllers": {
|
||||||
|
"/": "controller.js"
|
||||||
|
},
|
||||||
|
"exports": {
|
||||||
|
"legacyJobType": "exports.js"
|
||||||
|
},
|
||||||
|
"setup": "setup.js",
|
||||||
|
"teardown": "teardown.js"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
'use strict';
|
||||||
|
var db = require('org/arangodb').db;
|
||||||
|
var collectionName = 'test__queue_test_data';
|
||||||
|
if (db._collection(collectionName)) {
|
||||||
|
require('console').warn('Collection already exists:', collectionName);
|
||||||
|
db._collection(collectionName).truncate();
|
||||||
|
} else {
|
||||||
|
db._createDocumentCollection(collectionName);
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
'use strict';
|
||||||
|
var db = require('org/arangodb').db;
|
||||||
|
var collectionName = 'test__queue_test_data';
|
||||||
|
if (db._collection(collectionName)) {
|
||||||
|
db._collection(collectionName).drop();
|
||||||
|
}
|
|
@ -149,7 +149,8 @@ var allTests =
|
||||||
"importing",
|
"importing",
|
||||||
"upgrade",
|
"upgrade",
|
||||||
"authentication",
|
"authentication",
|
||||||
"authentication_parameters"
|
"authentication_parameters",
|
||||||
|
"queue_legacy"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
@ -1631,6 +1632,108 @@ testFuncs.foxx_manager = function (options) {
|
||||||
return results;
|
return results;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
testFuncs.queue_legacy = function (options) {
|
||||||
|
// TODO
|
||||||
|
var startTime;
|
||||||
|
var queueAppMountPath = '/test-queue-legacy'
|
||||||
|
print("Testing legacy queue job types");
|
||||||
|
var instanceInfo = startInstance("tcp", options, [], "queue_legacy");
|
||||||
|
if (instanceInfo === false) {
|
||||||
|
return {status: false, message: "failed to start server!"};
|
||||||
|
}
|
||||||
|
var data = {
|
||||||
|
naive: {_key: 'potato', hello: 'world'},
|
||||||
|
forced: {_key: 'tomato', hello: 'world'},
|
||||||
|
plain: {_key: 'banana', hello: 'world'}
|
||||||
|
};
|
||||||
|
var results = {};
|
||||||
|
results.install = runArangoshCmd(options, instanceInfo, {"configuration": "etc/relative/foxx-manager.conf"}, [
|
||||||
|
"install",
|
||||||
|
"js/common/test-data/apps/queue-legacy-test",
|
||||||
|
queueAppMountPath
|
||||||
|
]);
|
||||||
|
|
||||||
|
print("Restarting without foxx-queues-warmup-exports...");
|
||||||
|
shutdownInstance(instanceInfo, options);
|
||||||
|
instanceInfo = startInstance("tcp", options, {
|
||||||
|
"server.foxx-queues-warmup-exports": "false"
|
||||||
|
}, "queue_legacy", instanceInfo.flatTmpDataDir);
|
||||||
|
if (instanceInfo === false) {
|
||||||
|
return {status: false, message: "failed to restart server!"};
|
||||||
|
}
|
||||||
|
print("done.");
|
||||||
|
|
||||||
|
var res, body;
|
||||||
|
startTime = time();
|
||||||
|
try {
|
||||||
|
res = download(instanceInfo.url + queueAppMountPath + '/', JSON.stringify(data.naive), {method: 'POST'});
|
||||||
|
body = JSON.parse(res.body);
|
||||||
|
results.naive = {status: body.success === false, message: JSON.stringify({body: res.body, code: res.code})};
|
||||||
|
} catch (e) {
|
||||||
|
results.naive = {status: true, message: JSON.stringify({body: res.body, code: res.code})};
|
||||||
|
}
|
||||||
|
results.naive.duration = time() - startTime;
|
||||||
|
|
||||||
|
startTime = time();
|
||||||
|
try {
|
||||||
|
res = download(instanceInfo.url + queueAppMountPath + '/?allowUnknown=true', JSON.stringify(data.forced), {method: 'POST'});
|
||||||
|
body = JSON.parse(res.body);
|
||||||
|
results.forced = body.success ? {status: true} : {status: false, message: body.error, stacktrace: body.stacktrace};
|
||||||
|
} catch (e) {
|
||||||
|
results.forced = {status: false, message: JSON.stringify({body: res.body, code: res.code})};
|
||||||
|
}
|
||||||
|
results.forced.duration = time() - startTime;
|
||||||
|
|
||||||
|
print("Restarting with foxx-queues-warmup-exports...");
|
||||||
|
shutdownInstance(instanceInfo, options);
|
||||||
|
instanceInfo = startInstance("tcp", options, {
|
||||||
|
"server.foxx-queues-warmup-exports": "true"
|
||||||
|
}, "queue_legacy", instanceInfo.flatTmpDataDir);
|
||||||
|
if (instanceInfo === false) {
|
||||||
|
return {status: false, message: "failed to restart server!"};
|
||||||
|
}
|
||||||
|
print("done.");
|
||||||
|
|
||||||
|
startTime = time();
|
||||||
|
try {
|
||||||
|
res = download(instanceInfo.url + queueAppMountPath + '/', JSON.stringify(data.plain), {method: 'POST'});
|
||||||
|
body = JSON.parse(res.body);
|
||||||
|
results.plain = body.success ? {status: true} : {status: false, message: JSON.stringify({body: res.body, code: res.code})};
|
||||||
|
} catch (e) {
|
||||||
|
results.plain = {status: false, message: JSON.stringify({body: res.body, code: res.code})};
|
||||||
|
}
|
||||||
|
results.plain.duration = time() - startTime;
|
||||||
|
|
||||||
|
startTime = time();
|
||||||
|
try {
|
||||||
|
for (var i = 0; i < 60; i++) {
|
||||||
|
wait(1);
|
||||||
|
res = download(instanceInfo.url + queueAppMountPath + '/');
|
||||||
|
body = JSON.parse(res.body);
|
||||||
|
if (body.length === 2) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
results.final = (
|
||||||
|
body.length === 2 && body[0]._key === data.forced._key && body[1]._key === data.plain._key
|
||||||
|
? {status: true}
|
||||||
|
: {status: false, message: JSON.stringify({body: res.body, code: res.code})}
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
results.final = {status: false, message: JSON.stringify({body: res.body, code: res.code})};
|
||||||
|
}
|
||||||
|
results.final.duration = time() - startTime;
|
||||||
|
|
||||||
|
results.uninstall = runArangoshCmd(options, instanceInfo, {"configuration": "etc/relative/foxx-manager.conf"}, [
|
||||||
|
"uninstall",
|
||||||
|
queueAppMountPath
|
||||||
|
]);
|
||||||
|
print("Shutting down...");
|
||||||
|
shutdownInstance(instanceInfo, options);
|
||||||
|
print("done.");
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
testFuncs.dump = function (options) {
|
testFuncs.dump = function (options) {
|
||||||
var cluster;
|
var cluster;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue