Business errors differenciated from technical errors in the Lambda runner
This commit is contained in:
+5
-1
@@ -1 +1,5 @@
|
||||
node_modules/
|
||||
node_modules/
|
||||
results/
|
||||
test/
|
||||
doc/
|
||||
front/
|
||||
+29
-5
@@ -6,18 +6,42 @@ const ylt = require('..');
|
||||
async function runner({id, url, options = {}}, context) {
|
||||
console.log(`Processing run #${id} on ${url}`);
|
||||
|
||||
// AWS S3 bucket and path
|
||||
const bucket = process.env.RESULT_BUCKET_NAME;
|
||||
const keyPrefix = `results/${id}`;
|
||||
|
||||
// Function that can save any file on S3 (JSON, screenshot,...)
|
||||
const saveFile = async (path, content) => s3.putObject({Bucket: bucket, Key: `${keyPrefix}/${path}`, Body: content})
|
||||
.promise();
|
||||
|
||||
const results = JSON.stringify(await ylt(url, {...options, saveFile}));
|
||||
results.runId = id;
|
||||
// Let's launch ylt
|
||||
const result = await ylt(url, {...options, saveScreenshotFn: saveFile})
|
||||
|
||||
await saveFile('results.json', results);
|
||||
.then(async data => {
|
||||
console.log(`Run succeeded`);
|
||||
|
||||
data.runId = id;
|
||||
await saveFile('results.json', JSON.stringify(data));
|
||||
|
||||
return {
|
||||
status: 'processed',
|
||||
id,
|
||||
bucket,
|
||||
keyPrefix
|
||||
};
|
||||
})
|
||||
|
||||
return {status: 'processed', id, bucket, keyPrefix};
|
||||
.fail(error => {
|
||||
console.log(`Run failed with error: ${error}`);
|
||||
return {
|
||||
status: 'failed',
|
||||
id,
|
||||
bucket,
|
||||
errorMessage: error
|
||||
};
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = {runner}
|
||||
module.exports = {runner};
|
||||
+2
-2
@@ -30,7 +30,7 @@ var yellowLabTools = function(url, options) {
|
||||
.then(function(data) {
|
||||
|
||||
// If a screenshot saveFunction was provided in the options
|
||||
if (typeof options.saveFile === 'function') {
|
||||
if (typeof options.saveScreenshotFn === 'function') {
|
||||
debug('Now optimizing screenshot...');
|
||||
|
||||
// Remove uneeded temp screenshot path
|
||||
@@ -42,7 +42,7 @@ var yellowLabTools = function(url, options) {
|
||||
.then(function(screenshotBuffer) {
|
||||
debug('Screenshot optimized, now saving...');
|
||||
|
||||
return options.saveFile('screenshot.jpg', screenshotBuffer);
|
||||
return options.saveScreenshotFn('screenshot.jpg', screenshotBuffer);
|
||||
})
|
||||
|
||||
.then(function(response) {
|
||||
|
||||
@@ -94,15 +94,15 @@ var screenshotHandler = function() {
|
||||
this.deleteTmpFile = function(tmpFilePath) {
|
||||
var deferred = Q.defer();
|
||||
|
||||
fs.unlink(this.getTmpFileRelativePath(), function (err) {
|
||||
if (err) {
|
||||
debug('Screenshot temporary file not found, could not be deleted. But it is not a problem.');
|
||||
} else {
|
||||
debug('Screenshot temporary file deleted.');
|
||||
}
|
||||
//fs.unlink(this.getTmpFileRelativePath(), function (err) {
|
||||
// if (err) {
|
||||
// debug('Screenshot temporary file not found, could not be deleted. But it is not a problem.');
|
||||
// } else {
|
||||
// debug('Screenshot temporary file deleted.');
|
||||
// }
|
||||
|
||||
deferred.resolve();
|
||||
});
|
||||
//});
|
||||
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
@@ -102,7 +102,8 @@ var ApiController = function(app) {
|
||||
|
||||
if (response.StatusCode === 200 && response.Payload && response.Payload !== 'null') {
|
||||
const payload = JSON.parse(response.Payload);
|
||||
if (payload.errorType) {
|
||||
if (payload.status === 'failed') {
|
||||
debug('Failed with error %s', payload.errorMessage);
|
||||
runsDatastore.markAsFailed(run.runId, payload.errorMessage);
|
||||
} else {
|
||||
debug('Success!');
|
||||
|
||||
Reference in New Issue
Block a user