@artilleryio/platform-fargate
Version:
Fargate support for Artillery
79 lines (68 loc) • 1.93 kB
JavaScript
;
const A = require('async');
const debug = require('debug')('commands:list-tests');
const { getBucketName } = require('../util');
const util = require('../util');
const setDefaultAWSCredentials = require('../utils/aws-set-default-credentials');
function tryListTests(options) {
listTests(options);
}
async function listTests(options) {
await setDefaultAWSCredentials();
A.waterfall(
[
A.constant({}),
async function(context) {
context.s3Bucket = await getBucketName();
return context;
},
listBucket
],
function(err, context) {
if (err) {
console.error(`Error: ${err.message}`);
debug(err);
process.exit(1);
} else {
if (context.testNames.length > 0) {
if (options.json) {
console.log(JSON.stringify({tests: context.testNames}));
} else {
console.log('Tests:');
context.testNames.forEach((name, idx) => {
console.log(`${idx+1}. ${name}`);
});
}
} else {
if (options.json) {
console.log(JSON.stringify({tests: [] }));
} else {
console.log('No existing tests found');
}
}
}
});
}
function listBucket(context, callback) {
util.listAllObjectsWithPrefix(context.s3Bucket, 'tests', (err, objects) => {
if (err) {
return callback(err, context);
}
const testNames = [];
objects.forEach((entry) => {
const testName = entry.Key.split('/')[1];
// TODO: This prefix is used in several places and MUST be a constant defined somewhere
if (testName.startsWith('aht__')) {
return;
}
if (testNames.indexOf(testName) === -1) {
testNames.push(testName);
}
});
context.testNames = testNames;
return callback(null, context);
});
}
module.exports = {
tryListTests
};