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

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 tima
loadfocus-api config set apikey YOUR_API_KEY
loadfocus-api config set teamid YOUR_TEAM_ID
# Provjera konfiguracije
loadfocus-api config show

JavaScript konfiguracija

const { configManager } = require('@loadfocus/loadfocus-api-client');
// Postavljanje konfiguracije
configManager.set('apikey', 'YOUR_API_KEY');
configManager.set('teamid', 'YOUR_TEAM_ID');
// Provjera konfiguracije
console.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 nazivu
loadfocus-api jmeter execute --name "My JMeter Test"
# Izvršavanje testa s određenim parametrima
loadfocus-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šetak
loadfocus-api jmeter run-test --name "My JMeter Test"
# Pokretanje testa s pragovima
loadfocus-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 provjere
loadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15

Praćenje statusa testa

# Provjera statusa testa po nazivu i ID-u
loadfocus-api jmeter status --name "My JMeter Test" --id 12345
# Dohvaćanje popisa nedavnih pokretanja testova
loadfocus-api jmeter runs --limit 10

Dohvaćanje rezultata

# Dohvaćanje rezultata za određeni test
loadfocus-api jmeter results --name "My JMeter Test" --id 12345
# Dohvaćanje rezultata s određenim metrikama
loadfocus-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 pragova
loadfocus-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 formatu
loadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json
# Zadani lijepo formatirani izlaz
loadfocus-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 klijenta
const loadfocus = require('@loadfocus/loadfocus-api-client');
// Pristup specifičnim komponentama
const { JMeterClient, configManager } = loadfocus;

JMeter klijent

// Kreiranje JMeter klijenta
const jmeterClient = new loadfocus.JMeterClient();
// Ili s eksplicitnom konfiguracijom
const 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 test
const labels = await jmeterClient.getLabels({
testrunname: testName,
testrunid: testId
});
console.log('Test labels:', labels);
// Dohvaćanje rezultata za svaku oznaku
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);
}
}

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 konfiguracije
configManager.set('apikey', 'YOUR_API_KEY');
configManager.set('teamid', 'YOUR_TEAM_ID');
// Kreiranje klijenta
const jmeterClient = new JMeterClient();
async function runCompleteTest() {
try {
// Izvršavanje testa
console.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šetak
console.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 provjere
await new Promise(resolve => setTimeout(resolve, 10000));
}
}
// Dohvaćanje rezultata
console.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 testa
runCompleteTest();

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 opcijama
const jmeterClient = new JMeterClient({
apikey: 'YOUR_API_KEY',
teamid: 'YOUR_TEAM_ID',
httpOptions: {
timeout: 30000, // 30 sekundi
retries: 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 2xx
console.error('API Error:', error.response.status, error.response.data);
} else if (error.request) {
// Zahtjev je napravljen ali odgovor nije primljen
console.error('Network Error:', error.request);
} else {
// Nešto se dogodilo pri postavljanju zahtjeva što je izazvalo pogrešku
console.error('Request Error:', error.message);
}
}

Rješavanje problema

Česti problemi

  1. Pogreške autentifikacije:

    • Osigurajte da su vaš API ključ i ID tima ispravno konfigurirani
    • Provjerite ima li vaš API ključ potrebne dozvole
  2. 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
  3. Problemi s vremenskim ograničenjem:

    • Za dugotrajne testove, povećajte parametar waitTimeout
    • Razmislite o implementaciji mehanizma provjere umjesto sinkronog čekanja
  4. 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 kodu
process.env.DEBUG = 'true';
// Ili pri korištenju CLI-ja
DEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"

Za dodatnu pomoć, pogledajte LoadFocus API dokumentaciju ili kontaktirajte podršku.