Integracja API testow obciazeniowych
Ten przewodnik wyjasnia, jak korzystac z klienta API LoadFocus, zarowno przez interfejs wiersza polecen (CLI), jak i bezposrednio uzywajac biblioteki JavaScript w aplikacjach.
Spis tresci
- Instalacja
- Konfiguracja
- Interfejs wiersza polecen (CLI)
- Uzywanie biblioteki JavaScript
- Zaawansowane uzycie
- Rozwiazywanie problemow
Instalacja
Instalacja globalna
npm install -g @loadfocus/loadfocus-api-client
Instalacja lokalna w projekcie
npm install @loadfocus/loadfocus-api-client
Konfiguracja
Przed uzyciem klienta API LoadFocus nalezy skonfigurowac dane uwierzytelniajace API.
Konfiguracja CLI
# Ustaw klucz API i ID zespoluloadfocus-api config set apikey YOUR_API_KEYloadfocus-api config set teamid YOUR_TEAM_ID# Zweryfikuj konfiguracjeloadfocus-api config show
Konfiguracja JavaScript
const { configManager } = require('@loadfocus/loadfocus-api-client');// Ustaw konfiguracjeconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Zweryfikuj konfiguracjeconsole.log(configManager.get('apikey')); // Powinno wyswietlic Twoj klucz APIconsole.log(configManager.isConfigured()); // Powinno wyswietlic true jesli cala wymagana konfiguracja jest ustawiona
Interfejs wiersza polecen (CLI)
Klient API LoadFocus zapewnia kompleksowy CLI do interakcji z API LoadFocus.
Wykonywanie testow JMeter
Wykonanie testu
# Wykonaj test wedlug nazwyloadfocus-api jmeter execute --name "My JMeter Test"# Wykonaj test z konkretnymi parametramiloadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300
Uruchomienie testu i oczekiwanie na zakonczenie
# Uruchom test i czekaj na zakonczenieloadfocus-api jmeter run-test --name "My JMeter Test"# Uruchom test z progamiloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"# Uruchom test z niestandardowym timeout i interwlem odpytywanialoadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15
Monitorowanie statusu testow
# Sprawdz status testu wedlug nazwy i IDloadfocus-api jmeter status --name "My JMeter Test" --id 12345# Pobierz liste ostatnich uruchomien testowloadfocus-api jmeter runs --limit 10
Pobieranie wynikow
# Pobierz wyniki dla konkretnego testuloadfocus-api jmeter results --name "My JMeter Test" --id 12345# Pobierz wyniki z konkretnymi metrykamiloadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors
Praca z progami
Polecenie run-test obsluguje ewaluacje progow do automatycznego okreslenia, czy test przeszedl lub nie na podstawie metryk wydajnosci.
# Uruchom test z wieloma progamiloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"
Obslugiwane operatory progow:
<=- Mniejsze lub rowne<- Mniejsze niz>=- Wieksze lub rowne>- Wieksze niz==- Rowne!=- Rozne od
Formaty wyjsciowe
# Pobierz wyniki w formacie JSONloadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json# Domyslne sformatowane wyjscieloadfocus-api jmeter run-test --name "My JMeter Test"
Uzywanie biblioteki JavaScript
Klient API LoadFocus moze byc rowniez uzywany bezposrednio jako biblioteka JavaScript w aplikacjach.
Podstawowa konfiguracja
// Importuj klienta API LoadFocusconst loadfocus = require('@loadfocus/loadfocus-api-client');// Uzyskaj dostep do konkretnych komponentowconst { JMeterClient, configManager } = loadfocus;
Klient JMeter
// Utworz klienta JMeterconst jmeterClient = new loadfocus.JMeterClient();// Lub z jawna konfiguracjaconst jmeterClient = new loadfocus.JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID'});
Wykonywanie testow
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; // Zwroc ID testu do pozniejszego uzycia} catch (error) {console.error('Error executing test:', error);}}
Monitorowanie statusu testow
async function checkTestStatus(testName, testId) {try {const status = await jmeterClient.getStatus({testrunname: testName,testrunid: testId});console.log('Test status:', status);return status.state; // Zwroc biezacy stan} catch (error) {console.error('Error checking test status:', error);}}
Pobieranie wynikow
async function getTestResults(testName, testId) {try {// Pobierz dostepne etykiety dla testuconst labels = await jmeterClient.getLabels({testrunname: testName,testrunid: testId});console.log('Test labels:', labels);// Pobierz wyniki dla kazdej etykietyconst 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);}}
Pelny przyklad
Oto pelny przyklad, ktory wykonuje test, czeka na zakonczenie i pobiera wyniki:
const { JMeterClient, configManager } = require('@loadfocus/loadfocus-api-client');// KonfiguracjaconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Utworz klientaconst jmeterClient = new JMeterClient();async function runCompleteTest() {try {// Wykonaj 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}`);// Czekaj na zakonczenieconsole.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 {// Czekaj przed ponownym sprawdzeniemawait new Promise(resolve => setTimeout(resolve, 10000));}}// Pobierz wynikiconsole.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);}}// Uruchom testrunCompleteTest();
Zaawansowane uzycie
Niestandardowa konfiguracja HTTP
Mozesz dostosowac klienta HTTP uzywaneego przez klienta API LoadFocus:
const { JMeterClient } = require('@loadfocus/loadfocus-api-client');// Utworz klienta z niestandardowymi opcjami HTTPconst jmeterClient = new JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID',httpOptions: {timeout: 30000, // 30 sekundretries: 3,headers: {'User-Agent': 'My Custom Application'}}});
Obsluga bledow
Klient API LoadFocus dostarcza szczegolowe informacje o bledach:
try {const result = await jmeterClient.execute({testrunname: 'My JMeter Test'});} catch (error) {if (error.response) {// Zadanie zostalo wyslane i serwer odpowiedzial kodem statusu// spoza zakresu 2xxconsole.error('API Error:', error.response.status, error.response.data);} else if (error.request) {// Zadanie zostalo wyslane, ale nie otrzymano odpowiedziconsole.error('Network Error:', error.request);} else {// Cos poszlo nie tak podczas konfiguracji zadaniaconsole.error('Request Error:', error.message);}}
Rozwiazywanie problemow
Typowe problemy
Bledy uwierzytelniania:
- Upewnij sie, ze klucz API i ID zespolu sa prawidlowo skonfigurowane
- Sprawdz, czy klucz API ma wymagane uprawnienia
Niepowodzenia wykonania testow:
- Zweryfikuj, ze nazwa testu istnieje na Twoim koncie LoadFocus
- Sprawdz, czy nie osiagnales limitu rownoczesnych testow konta
Problemy z timeout:
- Dla dlugo trwajacych testow zwieksz parametr
waitTimeout - Rozwaลผ implementacje mechanizmu odpytywania zamiast synchronicznego oczekiwania
- Dla dlugo trwajacych testow zwieksz parametr
Problemy z pobieraniem wynikow:
- Upewnij sie, ze test zostal zakonczony przed pobieraniem wynikow
- Sprawdz, czy ID testu jest prawidlowe
Debugowanie
Wlacz logowanie debugowania dla bardziej szczegolowych informacji:
// W kodzie JavaScriptprocess.env.DEBUG = 'true';// Lub przy uzywaniu CLIDEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"
Aby uzyskac dodatkowa pomoc, zapoznaj sie z dokumentacja API LoadFocus lub skontaktuj sie z zespolem wsparcia.