Integrare API pentru testare de încărcare
Acest ghid explică cum să utilizați clientul API LoadFocus, atât prin interfața de linie de comandă (CLI), cât și prin utilizarea directă a bibliotecii JavaScript în aplicațiile dumneavoastră.
Cuprins
- Instalare
- Configurare
- Interfața de linie de comandă (CLI)
- Utilizare bibliotecă JavaScript
- Utilizare avansată
- Depanare
Instalare
Instalare globală
npm install -g @loadfocus/loadfocus-api-client
Instalare în proiect local
npm install @loadfocus/loadfocus-api-client
Configurare
Înainte de a utiliza clientul API LoadFocus, trebuie să configurați credențialele API.
Configurare CLI
# Setare cheie API și ID echipăloadfocus-api config set apikey YOUR_API_KEYloadfocus-api config set teamid YOUR_TEAM_ID# Verificare configurareloadfocus-api config show
Configurare JavaScript
const { configManager } = require('@loadfocus/loadfocus-api-client');// Setare configurareconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Verificare configurareconsole.log(configManager.get('apikey')); // Ar trebui să afișeze cheia APIconsole.log(configManager.isConfigured()); // Ar trebui să afișeze true dacă toată configurarea necesară este setată
Interfața de linie de comandă (CLI)
Clientul API LoadFocus oferă un CLI complet pentru interacțiunea cu API-ul LoadFocus.
Executare test JMeter
Executarea unui test
# Executare test după numeloadfocus-api jmeter execute --name "My JMeter Test"# Executare test cu parametri specificiloadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300
Rularea unui test și așteptarea finalizării
# Rulare test și așteptare finalizareloadfocus-api jmeter run-test --name "My JMeter Test"# Rulare test cu praguriloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"# Rulare test cu timeout și interval de verificare personalizateloadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15
Monitorizare stare test
# Verificare stare test după nume și IDloadfocus-api jmeter status --name "My JMeter Test" --id 12345# Obținere listă rulări recente ale testelorloadfocus-api jmeter runs --limit 10
Obținere rezultate
# Obținere rezultate pentru un test specificloadfocus-api jmeter results --name "My JMeter Test" --id 12345# Obținere rezultate cu metrici specificeloadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors
Lucrul cu praguri
Comanda run-test suportă evaluarea pragurilor pentru a determina automat dacă un test trece sau eșuează pe baza metricilor de performanță.
# Rulare test cu praguri multipleloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"
Operatori de prag suportați:
<=- Mai mic sau egal cu<- Mai mic decât>=- Mai mare sau egal cu>- Mai mare decât==- Egal cu!=- Diferit de
Formate de ieșire
# Obținere rezultate în format JSONloadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json# Ieșire formatată implicitloadfocus-api jmeter run-test --name "My JMeter Test"
Utilizare bibliotecă JavaScript
Clientul API LoadFocus poate fi utilizat și direct ca bibliotecă JavaScript în aplicațiile dumneavoastră.
Configurare de bază
// Import clientul API LoadFocusconst loadfocus = require('@loadfocus/loadfocus-api-client');// Accesare componente specificeconst { JMeterClient, configManager } = loadfocus;
Client JMeter
// Creare client JMeterconst jmeterClient = new loadfocus.JMeterClient();// Sau cu configurare explicităconst jmeterClient = new loadfocus.JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID'});
Executarea testelor
async function executeTest() {try {const result = await jmeterClient.execute({testrunname: 'My JMeter Test',threads: 50,rampup: 30,duration: 300});console.log('Test execution started:', result);return result.testrunid; // Returnează ID-ul testului pentru utilizare ulterioară} catch (error) {console.error('Error executing test:', error);}}
Monitorizarea stării testului
async function checkTestStatus(testName, testId) {try {const status = await jmeterClient.getStatus({testrunname: testName,testrunid: testId});console.log('Test status:', status);return status.state; // Returnează starea curentă} catch (error) {console.error('Error checking test status:', error);}}
Obținerea rezultatelor
async function getTestResults(testName, testId) {try {// Obținere etichete disponibile pentru testconst labels = await jmeterClient.getLabels({testrunname: testName,testrunid: testId});console.log('Test labels:', labels);// Obținere rezultate pentru fiecare etichetăconst allResults = [];for (const label of labels) {const labelResults = await jmeterClient.getResults({testrunname: testName,testrunid: testId,filter: label});allResults.push({label,results: labelResults});}console.log('Test results:', allResults);return allResults;} catch (error) {console.error('Error retrieving test results:', error);}}
Exemplu complet
Iată un exemplu complet care execută un test, așteaptă finalizarea și obține rezultatele:
const { JMeterClient, configManager } = require('@loadfocus/loadfocus-api-client');// ConfigurareconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Creare clientconst jmeterClient = new JMeterClient();async function runCompleteTest() {try {// Executare testconsole.log('Executing test...');const executeResult = await jmeterClient.execute({testrunname: 'My JMeter Test'});const testId = executeResult.testrunid;console.log(`Test execution started with ID: ${testId}`);// Așteptare finalizareconsole.log('Waiting for test to complete...');let completed = false;while (!completed) {const status = await jmeterClient.getStatus({testrunname: 'My JMeter Test',testrunid: testId});console.log(`Current state: ${status.state}`);if (status.state === 'finished') {completed = true;} else if (status.state === 'failed' || status.state === 'error') {throw new Error(`Test failed with state: ${status.state}`);} else {// Așteptare înainte de verificare din nouawait new Promise(resolve => setTimeout(resolve, 10000));}}// Obținere rezultateconsole.log('Getting test results...');const labels = await jmeterClient.getLabels({testrunname: 'My JMeter Test',testrunid: testId});const allResults = [];for (const label of labels) {const labelResults = await jmeterClient.getResults({testrunname: 'My JMeter Test',testrunid: testId,filter: label});allResults.push({label,results: labelResults});}console.log('Test results:', JSON.stringify(allResults, null, 2));return allResults;} catch (error) {console.error('Error running test:', error);}}// Rulare testrunCompleteTest();
Utilizare avansată
Configurare HTTP personalizată
Puteți personaliza clientul HTTP utilizat de clientul API LoadFocus:
const { JMeterClient } = require('@loadfocus/loadfocus-api-client');// Creare client cu opțiuni HTTP personalizateconst jmeterClient = new JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID',httpOptions: {timeout: 30000, // 30 secunderetries: 3,headers: {'User-Agent': 'My Custom Application'}}});
Gestionarea erorilor
Clientul API LoadFocus oferă informații detaliate despre erori:
try {const result = await jmeterClient.execute({testrunname: 'My JMeter Test'});} catch (error) {if (error.response) {// Cererea a fost făcută și serverul a răspuns cu un cod de stare// în afara intervalului 2xxconsole.error('API Error:', error.response.status, error.response.data);} else if (error.request) {// Cererea a fost făcută dar nu s-a primit niciun răspunsconsole.error('Network Error:', error.request);} else {// Ceva s-a întâmplat la configurarea cererii care a declanșat o eroareconsole.error('Request Error:', error.message);}}
Depanare
Probleme frecvente
Erori de autentificare:
- Asigurați-vă că cheia API și ID-ul echipei sunt configurate corect
- Verificați că cheia API are permisiunile necesare
Eșuări la executarea testelor:
- Verificați că numele testului există în contul LoadFocus
- Verificați dacă ați atins limita de teste concurente a contului
Probleme de timeout:
- Pentru teste de lungă durată, creșteți parametrul
waitTimeout - Luați în considerare implementarea unui mecanism de verificare periodică în loc de așteptare sincronă
- Pentru teste de lungă durată, creșteți parametrul
Probleme la obținerea rezultatelor:
- Asigurați-vă că testul s-a finalizat înainte de a obține rezultatele
- Verificați dacă ID-ul testului este corect
Depanare
Activați jurnalizarea de depanare pentru informații mai detaliate:
// În codul JavaScriptprocess.env.DEBUG = 'true';// Sau când utilizați CLIDEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"
Pentru ajutor suplimentar, consultați documentația API LoadFocus sau contactați suportul.