UNPKG

smktest-utils

Version:

External dependencies for use the library for generate the smoke test suite for kubernetes

218 lines (165 loc) 4.69 kB
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;