smktest-utils
Version:
External dependencies for use the library for generate the smoke test suite for kubernetes
218 lines (165 loc) • 4.69 kB
JavaScript
const shell = require('shelljs');
// const { sendToSmokeCollector } = require('../src/utils/sendReport');
const chalk = require('chalk');
require('dotenv').config();
const fs = require('fs');
const axios = require('axios');
const swaggerSmktest = require('swagger-smktest')
// Send data to Smoke Test collector.
const _ = require('lodash');
async function collectSmokeTestResults(
dateInit,
criterial = 'not-defined',
testName = 'undefined',
responseTest = '',
passTest = ''
) {
// Collect metrics
var dateFinish = await new Date();
let timeTestSeconds = (dateFinish.getTime() - dateInit.getTime()) / 1000;
// Print current folder content
let options = await fs.promises.readFile('../smktest.config.json', 'utf-8');
options = JSON.parse(options);
options.smokeCollector = {
data: {
projectName: options.projectName,
context: options.context,
namespace: options.customDictionary.generalOptions['--namespace'],
testName: testName,
criterial: criterial,
testResult: JSON.stringify(responseTest),
testId: options.testId,
testDuration: timeTestSeconds,
passTest: passTest,
},
};
//TODO Connect Function for collect the metrics.
}
module.exports.collectSmokeTestResults = collectSmokeTestResults;
// Smoke test check ingress
async function checkIngress(
testCommand,
assertValue,
reportCommand,
criterial,
consoleValue
) {
let passTest = false;
let response = await shell.exec(testCommand, { silent: true });
if (response.stderr.code !== 0 && response.stdout === ""){
passTest = true
}
// Eval command for print report
let responseReport = await shell.exec(reportCommand, {
silent: true,
}).stdout;
if (passTest == false) {
console.log(
chalk.red.bold(`👎 SMOKE TEST ERROR ${criterial}/ ${consoleValue}`)
);
console.log(
chalk.red.bold(
' 🛑 Communicate that your kubernetes cluster administrator'
)
);
console.log(chalk.red.bold('Your cluster is unstable.'));
console.log('@1Marker-No:_1403960922');
console.log(chalk.red.bold(responseReport));
} else {
console.log(
chalk.green.bold(
` 👍 SUCCESS SMOKE TEST, 🚀 ${criterial}/ ${consoleValue}`
)
);
console.log(chalk.green.bold(responseReport));
}
return passTest;
}
module.exports.checkIngress = checkIngress;
async function simpleCurlAssert(
curls,
assertValue,
criterial,
consoleValue,
reportCommand
) {
let passTest;
let responseReport = await shell.exec(curls, {
silent: true,
});
responseReport = responseReport.stdout.includes(assertValue);
if (responseReport == true) {
passTest = true;
console.log(
chalk.green.bold(
` 👍 SUCCESS SMOKE TEST, 🚀 ${criterial} / ${consoleValue} `
)
);
console.log(chalk.green.bold(responseReport));
} else {
passTest = false;
console.log(
chalk.red.bold(`👎 SMOKE TEST ERROR ${criterial} / ${consoleValue} `)
);
console.log(chalk.red.bold(' 🛑 The endpoint is not available'));
console.log(chalk.red.bold('Your cluster is unstable.'));
console.log(chalk.red.bold(responseReport));
}
return passTest;
}
module.exports.simpleCurlAssert = simpleCurlAssert;
async function preCommandTest(command) {
await shell.exec(command, { silent: false }).stdout;
}
module.exports.simpleCurlAssert = simpleCurlAssert;
async function getStatusCode(curl){
let response
try {
response = await axios.get(curl)
} catch (error) {
try {
response = error.response
} catch (error) {
response = {
status: "600"
}
console.log(error.message)
}
}
return response.status;
}
module.exports.getStatusCode = getStatusCode;
async function getNewToken(swaggerLoginCurlURL){
let options2 = await swaggerSmktest.getToken({
tokenConfig: {
curlRequest: swaggerLoginCurlURL,
},
});
return options2.tokenObj.tokenValue
}
module.exports.getNewToken = getNewToken;
async function getStatusCodeToken(options){
let response
try {
response = await axios(options)
} catch (error) {
try {
response = error.response
} catch (error) {
response = {
status: "600"
}
}
}
return response.status;
}
module.exports.getStatusCodeToken = getStatusCodeToken;
async function replaceAll(str, search, replacement) {
var newStr = '';
if (_.isString(str)) {
// maybe add a lodash test? Will not handle numbers now.
newStr = await str.split(search).join(replacement);
}
return newStr;
}
module.exports.replaceAll = replaceAll;