Integracija API-ja za testiranje opterećenja
Ovaj vodič objašnjava kako koristiti LoadFocus API klijent, i putem sučelja naredbenog retka (CLI) i izravnim korištenjem JavaScript biblioteke u vašim aplikacijama.
Sadržaj
- Instalacija
- Konfiguracija
- Sučelje naredbenog retka (CLI)
- Korištenje JavaScript biblioteke
- Napredna upotreba
- Rješavanje problema
Instalacija
Globalna instalacija
npm install -g @loadfocus/loadfocus-api-client
Lokalna instalacija u projekt
npm install @loadfocus/loadfocus-api-client
Konfiguracija
Prije korištenja LoadFocus API klijenta, trebate konfigurirati svoje API vjerodajnice.
CLI konfiguracija
# Postavljanje API ključa i ID-a timaloadfocus-api config set apikey YOUR_API_KEYloadfocus-api config set teamid YOUR_TEAM_ID# Provjera konfiguracijeloadfocus-api config show
JavaScript konfiguracija
const { configManager } = require('@loadfocus/loadfocus-api-client');// Postavljanje konfiguracijeconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Provjera konfiguracijeconsole.log(configManager.get('apikey')); // Trebao bi ispisati vaš API ključconsole.log(configManager.isConfigured()); // Trebao bi ispisati true ako je sva potrebna konfiguracija postavljena
Sučelje naredbenog retka (CLI)
LoadFocus API klijent pruža sveobuhvatni CLI za interakciju s LoadFocus API-jem.
Izvršavanje JMeter testova
Izvršavanje testa
# Izvršavanje testa po nazivuloadfocus-api jmeter execute --name "My JMeter Test"# Izvršavanje testa s određenim parametrimaloadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300
Pokretanje testa i čekanje na dovršetak
# Pokretanje testa i čekanje na dovršetakloadfocus-api jmeter run-test --name "My JMeter Test"# Pokretanje testa s pragovimaloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"# Pokretanje testa s prilagođenim vremenskim ograničenjem i intervalom provjereloadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15
Praćenje statusa testa
# Provjera statusa testa po nazivu i ID-uloadfocus-api jmeter status --name "My JMeter Test" --id 12345# Dohvaćanje popisa nedavnih pokretanja testovaloadfocus-api jmeter runs --limit 10
Dohvaćanje rezultata
# Dohvaćanje rezultata za određeni testloadfocus-api jmeter results --name "My JMeter Test" --id 12345# Dohvaćanje rezultata s određenim metrikamaloadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors
Rad s pragovima
Naredba run-test podržava evaluaciju pragova za automatsko određivanje prolazi li test ili pada na temelju metrika performansi.
# Pokretanje testa s više pragovaloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"
Podržani operatori pragova:
<=- Manje ili jednako<- Manje od>=- Veće ili jednako>- Veće od==- Jednako!=- Nije jednako
Formati izlaza
# Dohvaćanje rezultata u JSON formatuloadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json# Zadani lijepo formatirani izlazloadfocus-api jmeter run-test --name "My JMeter Test"
Korištenje JavaScript biblioteke
LoadFocus API klijent može se također koristiti izravno kao JavaScript biblioteka u vašim aplikacijama.
Osnovno postavljanje
// Uvoz LoadFocus API klijentaconst loadfocus = require('@loadfocus/loadfocus-api-client');// Pristup specifičnim komponentamaconst { JMeterClient, configManager } = loadfocus;
JMeter klijent
// Kreiranje JMeter klijentaconst jmeterClient = new loadfocus.JMeterClient();// Ili s eksplicitnom konfiguracijomconst jmeterClient = new loadfocus.JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID'});
Izvršavanje testova
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; // Vraćanje ID-a testa za kasniju upotrebu} catch (error) {console.error('Error executing test:', error);}}
Praćenje statusa testa
async function checkTestStatus(testName, testId) {try {const status = await jmeterClient.getStatus({testrunname: testName,testrunid: testId});console.log('Test status:', status);return status.state; // Vraćanje trenutnog stanja} catch (error) {console.error('Error checking test status:', error);}}
Dohvaćanje rezultata
async function getTestResults(testName, testId) {try {// Dohvaćanje dostupnih oznaka za testconst labels = await jmeterClient.getLabels({testrunname: testName,testrunid: testId});console.log('Test labels:', labels);// Dohvaćanje rezultata za svaku oznakuconst 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);}}
Potpuni primjer
Evo potpunog primjera koji izvršava test, čeka dovršetak i dohvaća rezultate:
const { JMeterClient, configManager } = require('@loadfocus/loadfocus-api-client');// Postavljanje konfiguracijeconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Kreiranje klijentaconst jmeterClient = new JMeterClient();async function runCompleteTest() {try {// Izvršavanje testaconsole.log('Executing test...');const executeResult = await jmeterClient.execute({testrunname: 'My JMeter Test'});const testId = executeResult.testrunid;console.log(`Test execution started with ID: ${testId}`);// Čekanje na dovršetakconsole.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 {// Čekanje prije ponovne provjereawait new Promise(resolve => setTimeout(resolve, 10000));}}// Dohvaćanje rezultataconsole.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);}}// Pokretanje testarunCompleteTest();
Napredna upotreba
Prilagođena HTTP konfiguracija
Možete prilagoditi HTTP klijent koji koristi LoadFocus API klijent:
const { JMeterClient } = require('@loadfocus/loadfocus-api-client');// Kreiranje klijenta s prilagođenim HTTP opcijamaconst jmeterClient = new JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID',httpOptions: {timeout: 30000, // 30 sekundiretries: 3,headers: {'User-Agent': 'My Custom Application'}}});
Rukovanje pogreškama
LoadFocus API klijent pruža detaljne informacije o pogreškama:
try {const result = await jmeterClient.execute({testrunname: 'My JMeter Test'});} catch (error) {if (error.response) {// Zahtjev je napravljen i poslužitelj je odgovorio statusnim kodom// koji je izvan raspona 2xxconsole.error('API Error:', error.response.status, error.response.data);} else if (error.request) {// Zahtjev je napravljen ali odgovor nije primljenconsole.error('Network Error:', error.request);} else {// Nešto se dogodilo pri postavljanju zahtjeva što je izazvalo pogreškuconsole.error('Request Error:', error.message);}}
Rješavanje problema
Česti problemi
Pogreške autentifikacije:
- Osigurajte da su vaš API ključ i ID tima ispravno konfigurirani
- Provjerite ima li vaš API ključ potrebne dozvole
Neuspjesi izvršavanja testova:
- Provjerite postoji li naziv testa u vašem LoadFocus računu
- Provjerite jeste li dosegli ograničenje istovremenih testova vašeg računa
Problemi s vremenskim ograničenjem:
- Za dugotrajne testove, povećajte parametar
waitTimeout - Razmislite o implementaciji mehanizma provjere umjesto sinkronog čekanja
- Za dugotrajne testove, povećajte parametar
Problemi s dohvaćanjem rezultata:
- Osigurajte da je test dovršen prije dohvaćanja rezultata
- Provjerite je li ID testa ispravan
Otklanjanje pogrešaka
Omogućite bilježenje za otklanjanje pogrešaka za detaljnije informacije:
// U vašem JavaScript koduprocess.env.DEBUG = 'true';// Ili pri korištenju CLI-jaDEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"
Za dodatnu pomoć, pogledajte LoadFocus API dokumentaciju ili kontaktirajte podršku.