UNPKG

artillery-performance-mcp-server

Version:

MCP server for performance testing with Artillery.io

1 lines 9.96 kB
const a6_0x1b588c=a6_0x8d04;(function(_0x3cdea5,_0x467a53){const _0x39b8aa=a6_0x8d04,_0x3a98b2=_0x3cdea5();while(!![]){try{const _0x3475a7=parseInt(_0x39b8aa(0x1cb))/0x1+parseInt(_0x39b8aa(0x1c2))/0x2+parseInt(_0x39b8aa(0x1ed))/0x3+-parseInt(_0x39b8aa(0x1de))/0x4+parseInt(_0x39b8aa(0x1f5))/0x5+parseInt(_0x39b8aa(0x1f0))/0x6*(-parseInt(_0x39b8aa(0x1dc))/0x7)+-parseInt(_0x39b8aa(0x1f4))/0x8;if(_0x3475a7===_0x467a53)break;else _0x3a98b2['push'](_0x3a98b2['shift']());}catch(_0x40b5f9){_0x3a98b2['push'](_0x3a98b2['shift']());}}}(a6_0x3f02,0x7acff));import{z}from'zod';function a6_0x8d04(_0xe70336,_0x553cbc){const _0x3f02f5=a6_0x3f02();return a6_0x8d04=function(_0x8d043e,_0xa7e642){_0x8d043e=_0x8d043e-0x1b5;let _0x2d460e=_0x3f02f5[_0x8d043e];return _0x2d460e;},a6_0x8d04(_0xe70336,_0x553cbc);}import a6_0x352ddc from'path';import a6_0x2156f7 from'fs';function a6_0x3f02(){const _0x5b9434=['error','tool','Registering\x20Artillery\x20tools','\x0a\x0aTest\x20summary:\x0a```\x0a','\x0aAll\x20virtual\x20users\x20failed\x20due\x20to\x20the\x20above\x20errors.','json','text','\x0aNo\x20errors\x20detected.','info','artillery-test','413ozmDTj','boolean','794728vmNURL','\x0a\x0aTest\x20configuration:\x0a```yaml\x0a','default','Generates\x20an\x20Artillery\x20test\x20file\x20based\x20on\x20a\x20selected\x20template\x20and\x20parameters.','-\x20Ensure\x20the\x20target\x20server\x20is\x20reachable\x20and\x20the\x20endpoints\x20exist.\x0a','Analyze_Artillery_Test_Results','string','Analyzing\x20Artillery\x20test\x20results','resultsOutput','Artillery\x20tools\x20registered\x20successfully','peakRate','Test\x20file\x20not\x20found:\x20','**:\x20','Artillery\x20test\x20generated\x20successfully!\x0a\x0aTest\x20file:\x20','Analyzes\x20Artillery\x20test\x20results\x20and\x20suggests\x20improvements','2612220FmtqFC','message','\x0a```\x0a\x0aYou\x20can\x20run\x20this\x20test\x20using\x20the\x20\x27run-test\x27\x20tool\x20with\x20the\x20file\x20path.','80772TzNDeh','-\x20No\x20major\x20issues\x20detected.\x20Consider\x20increasing\x20load\x20or\x20duration\x20for\x20further\x20testing.\x0a','payload','\x0a\x0aHTML\x20report\x20generated\x20at:\x20','7185104nneRna','4557490SGyBfq','##\x20Summary\x0a\x0a','length','optional','tmpdir','join','summary','any','enum','Error\x20generating\x20Artillery\x20test:\x20','endpoint','errors','html','stringify','artillery-mcp','custom','duration','Creates\x20a\x20custom\x20Artillery\x20test\x20file\x20with\x20the\x20provided\x20name\x20and\x20content','additionalConfig','Generate_Artillery_Test','record','\x0a\x0a##\x20Suggestions\x0a','http-post','scenarioName','complex-flow','API\x20Test','number','\x0a\x0aYou\x20can\x20run\x20this\x20test\x20using\x20the\x20\x27run-test\x27\x20tool\x20with\x20the\x20file\x20path.','keys','\x0a```\x0a\x0aYou\x20can\x20analyze\x20these\x20results\x20with\x20the\x20\x27analyze-results\x27\x20tool.','name','-\x20**','232036JryGUt','artillery-results','arrivalRate','existsSync','customTemplate','artillery-report','Creating\x20custom\x20Artillery\x20test:\x20','target','entries','495861LnIcEh','.yml','templateType','Run_Artillery_Test','testFilePath','\x0a```\x0a\x0aParsed\x20results:\x0a```json\x0a','replace'];a6_0x3f02=function(){return _0x5b9434;};return a6_0x3f02();}import a6_0x29d2bb from'os';import a6_0x9b2bb0 from'../utils/logger.js';import{processTemplate,readTemplate,writeFile,generateUniqueFilename}from'../utils/file-utils.js';import{runArtilleryTest,generateArtilleryReport,parseArtilleryResults}from'../utils/artillery-utils.js';const TEMP_DIR=a6_0x352ddc['join'](a6_0x29d2bb[a6_0x1b588c(0x1f9)](),a6_0x1b588c(0x203));!a6_0x2156f7[a6_0x1b588c(0x1c5)](TEMP_DIR)&&a6_0x2156f7['mkdirSync'](TEMP_DIR,{'recursive':!![]});export async function registerTools(_0x3575c8){const _0x6a34d4=a6_0x1b588c;a6_0x9b2bb0[_0x6a34d4(0x1da)](_0x6a34d4(0x1d4)),_0x3575c8[_0x6a34d4(0x1d3)](_0x6a34d4(0x1b5),_0x6a34d4(0x1e1),{'templateType':z[_0x6a34d4(0x1fd)](['http-get',_0x6a34d4(0x1b8),_0x6a34d4(0x1ba),'custom']),'customTemplate':z[_0x6a34d4(0x1e4)]()['optional'](),'target':z[_0x6a34d4(0x1e4)](),'endpoint':z[_0x6a34d4(0x1e4)]()[_0x6a34d4(0x1f8)](),'duration':z[_0x6a34d4(0x1bc)]()[_0x6a34d4(0x1e0)](0x3c),'arrivalRate':z[_0x6a34d4(0x1bc)]()[_0x6a34d4(0x1e0)](0x5),'peakRate':z[_0x6a34d4(0x1bc)]()['optional'](),'timeout':z[_0x6a34d4(0x1bc)]()[_0x6a34d4(0x1e0)](0x1e),'scenarioName':z[_0x6a34d4(0x1e4)]()['default'](_0x6a34d4(0x1bb)),'payload':z['string']()['optional'](),'auth':z['string']()['optional'](),'additionalConfig':z[_0x6a34d4(0x1b6)](z[_0x6a34d4(0x1fc)]())[_0x6a34d4(0x1f8)]()},async _0x2b60cc=>{const _0x4eae25=_0x6a34d4;try{a6_0x9b2bb0['info']('Generating\x20Artillery\x20test\x20with\x20template:\x20'+_0x2b60cc['templateType']);let _0x312368;if(_0x2b60cc['templateType']===_0x4eae25(0x204)&&_0x2b60cc[_0x4eae25(0x1c6)])_0x312368=_0x2b60cc[_0x4eae25(0x1c6)];else{const _0x3c62d6=_0x2b60cc[_0x4eae25(0x1cd)]+'.yml';_0x312368=readTemplate(_0x3c62d6);}const _0x1e27e0=processTemplate(_0x312368,{'target':_0x2b60cc[_0x4eae25(0x1c9)],'endpoint':_0x2b60cc[_0x4eae25(0x1ff)]||'/','duration':_0x2b60cc[_0x4eae25(0x205)],'arrivalRate':_0x2b60cc[_0x4eae25(0x1c4)],'peakRate':_0x2b60cc[_0x4eae25(0x1e8)]||_0x2b60cc[_0x4eae25(0x1c4)]*0x2,'timeout':_0x2b60cc['timeout'],'scenarioName':_0x2b60cc[_0x4eae25(0x1b9)],'payload':_0x2b60cc[_0x4eae25(0x1f2)]||'{}','auth':_0x2b60cc['auth']||null,..._0x2b60cc[_0x4eae25(0x207)]}),_0x30bbed=generateUniqueFilename(_0x4eae25(0x1db)),_0x2f477b=a6_0x352ddc[_0x4eae25(0x1fa)](TEMP_DIR,_0x30bbed);return writeFile(_0x2f477b,_0x1e27e0),{'content':[{'type':_0x4eae25(0x1d8),'text':_0x4eae25(0x1eb)+_0x2f477b+_0x4eae25(0x1df)+_0x1e27e0+_0x4eae25(0x1ef)}]};}catch(_0xebaf4c){return a6_0x9b2bb0[_0x4eae25(0x1d2)](_0x4eae25(0x1fe)+_0xebaf4c['message']),{'content':[{'type':_0x4eae25(0x1d8),'text':_0x4eae25(0x1fe)+_0xebaf4c['message']}]};}}),_0x3575c8[_0x6a34d4(0x1d3)](_0x6a34d4(0x1ce),'Runs\x20an\x20Artillery\x20test\x20from\x20a\x20given\x20test\x20file',{'testFilePath':z[_0x6a34d4(0x1e4)](),'generateReport':z[_0x6a34d4(0x1dd)]()[_0x6a34d4(0x1e0)](!![])},async _0x4160a7=>{const _0xf67083=_0x6a34d4;try{a6_0x9b2bb0[_0xf67083(0x1da)]('Running\x20Artillery\x20test:\x20'+_0x4160a7[_0xf67083(0x1cf)]);if(!a6_0x2156f7['existsSync'](_0x4160a7['testFilePath']))throw new Error(_0xf67083(0x1e9)+_0x4160a7['testFilePath']);const _0x2a1a88=generateUniqueFilename(_0xf67083(0x1c3),_0xf67083(0x1d7)),_0x4398e7=a6_0x352ddc[_0xf67083(0x1fa)](TEMP_DIR,_0x2a1a88),_0x3d3c7a=await runArtilleryTest(_0x4160a7[_0xf67083(0x1cf)],_0x4398e7),_0x1b58e1=await parseArtilleryResults(_0x3d3c7a);let _0x399822='';if(_0x4160a7['generateReport']){const _0x1ba9fb=generateUniqueFilename(_0xf67083(0x1c7),_0xf67083(0x201)),_0x1bd2e4=a6_0x352ddc[_0xf67083(0x1fa)](TEMP_DIR,_0x1ba9fb);await generateArtilleryReport(_0x4398e7,_0x1bd2e4),_0x399822=_0xf67083(0x1f3)+_0x1bd2e4;}const _0x5de090=JSON[_0xf67083(0x202)](_0x1b58e1,null,0x2);return{'content':[{'type':'text','text':'Artillery\x20test\x20completed\x20successfully!\x0a\x0aResults\x20file:\x20'+_0x4398e7+_0x399822+_0xf67083(0x1d5)+_0x3d3c7a+_0xf67083(0x1d0)+_0x5de090+_0xf67083(0x1bf)}]};}catch(_0x3726a1){return a6_0x9b2bb0[_0xf67083(0x1d2)]('Error\x20running\x20Artillery\x20test:\x20'+_0x3726a1[_0xf67083(0x1ee)]),{'content':[{'type':_0xf67083(0x1d8),'text':'Error\x20running\x20Artillery\x20test:\x20'+_0x3726a1[_0xf67083(0x1ee)]}]};}}),_0x3575c8[_0x6a34d4(0x1d3)](_0x6a34d4(0x1e3),_0x6a34d4(0x1ec),{'resultsOutput':z[_0x6a34d4(0x1e4)](),'suggestImprovements':z[_0x6a34d4(0x1dd)]()[_0x6a34d4(0x1e0)](!![])},async _0x185484=>{const _0x5e7497=_0x6a34d4;try{a6_0x9b2bb0[_0x5e7497(0x1da)](_0x5e7497(0x1e5));const _0x22693b=await parseArtilleryResults(_0x185484[_0x5e7497(0x1e6)]);let _0x126421='#\x20Artillery\x20Test\x20Results\x20Analysis\x0a\x0a';_0x126421+=_0x5e7497(0x1f6)+_0x22693b[_0x5e7497(0x1fb)]+'\x0a';if(_0x22693b[_0x5e7497(0x200)]&&Object[_0x5e7497(0x1be)](_0x22693b[_0x5e7497(0x200)])[_0x5e7497(0x1f7)]>0x0){_0x126421+='\x0a##\x20Error\x20Analysis\x0a';for(const [_0x4303da,_0x32d3a4]of Object[_0x5e7497(0x1ca)](_0x22693b[_0x5e7497(0x200)])){_0x126421+=_0x5e7497(0x1c1)+_0x4303da+_0x5e7497(0x1ea)+_0x32d3a4+'\x0a';}_0x126421+=_0x5e7497(0x1d6);}else _0x126421+=_0x5e7497(0x1d9);return _0x185484['suggestImprovements']&&(_0x126421+=_0x5e7497(0x1b7),_0x22693b[_0x5e7497(0x200)]&&Object['keys'](_0x22693b[_0x5e7497(0x200)])['length']>0x0?(_0x126421+='-\x20Review\x20the\x20error\x20messages\x20above.\x20For\x20\x22Invalid\x20URL\x22,\x20check\x20your\x20test\x20scenario\x20URLs\x20(they\x20should\x20start\x20with\x20a\x20slash,\x20e.g.,\x20`/v1/getData`).\x0a',_0x126421+=_0x5e7497(0x1e2)):_0x126421+=_0x5e7497(0x1f1)),{'content':[{'type':_0x5e7497(0x1d8),'text':_0x126421}]};}catch(_0x137290){return a6_0x9b2bb0['error']('Error\x20analyzing\x20Artillery\x20results:\x20'+_0x137290[_0x5e7497(0x1ee)]),{'content':[{'type':_0x5e7497(0x1d8),'text':'Error\x20analyzing\x20Artillery\x20results:\x20'+_0x137290['message']}]};}}),_0x3575c8[_0x6a34d4(0x1d3)]('Create_Custom_Artillery_Test',_0x6a34d4(0x206),{'name':z[_0x6a34d4(0x1e4)](),'content':z[_0x6a34d4(0x1e4)]()},async _0x4914d0=>{const _0x46522b=_0x6a34d4;try{a6_0x9b2bb0[_0x46522b(0x1da)](_0x46522b(0x1c8)+_0x4914d0['name']);const _0x4594a1=_0x4914d0[_0x46522b(0x1c0)][_0x46522b(0x1d1)](/[^a-z0-9-_]/gi,'-')['toLowerCase'](),_0x2750e3=_0x4594a1+_0x46522b(0x1cc),_0x15d76c=a6_0x352ddc[_0x46522b(0x1fa)](TEMP_DIR,_0x2750e3);return writeFile(_0x15d76c,_0x4914d0['content']),{'content':[{'type':'text','text':'Custom\x20Artillery\x20test\x20created\x20successfully!\x0a\x0aTest\x20file:\x20'+_0x15d76c+_0x46522b(0x1bd)}]};}catch(_0x336a17){return a6_0x9b2bb0[_0x46522b(0x1d2)]('Error\x20creating\x20custom\x20Artillery\x20test:\x20'+_0x336a17[_0x46522b(0x1ee)]),{'content':[{'type':_0x46522b(0x1d8),'text':'Error\x20creating\x20custom\x20Artillery\x20test:\x20'+_0x336a17[_0x46522b(0x1ee)]}]};}}),a6_0x9b2bb0[_0x6a34d4(0x1da)](_0x6a34d4(0x1e7));}