Lasttest-API-Integration
Diese Anleitung erklaert, wie Sie den LoadFocus API Client verwenden, sowohl ueber die Kommandozeilenschnittstelle (CLI) als auch durch direkte Verwendung der JavaScript-Bibliothek in Ihren Anwendungen.
Inhaltsverzeichnis
- Installation
- Konfiguration
- Kommandozeilenschnittstelle (CLI)
- JavaScript-Bibliotheksnutzung
- Erweiterte Nutzung
- Fehlerbehebung
Installation
Globale Installation
npm install -g @loadfocus/loadfocus-api-client
Lokale Projektinstallation
npm install @loadfocus/loadfocus-api-client
Konfiguration
Bevor Sie den LoadFocus API Client verwenden, muessen Sie Ihre API-Anmeldedaten konfigurieren.
CLI-Konfiguration
# API-Schluessel und Team-ID festlegenloadfocus-api config set apikey YOUR_API_KEYloadfocus-api config set teamid YOUR_TEAM_ID# Konfiguration ueberpruefenloadfocus-api config show
JavaScript-Konfiguration
const { configManager } = require('@loadfocus/loadfocus-api-client');// Konfiguration festlegenconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Konfiguration ueberpruefenconsole.log(configManager.get('apikey')); // Should print your API keyconsole.log(configManager.isConfigured()); // Should print true if all required config is set
Kommandozeilenschnittstelle (CLI)
Der LoadFocus API Client bietet eine umfassende CLI fuer die Interaktion mit der LoadFocus API.
JMeter-Testausfuehrung
Einen Test ausfuehren
# Einen Test nach Namen ausfuehrenloadfocus-api jmeter execute --name "My JMeter Test"# Einen Test mit bestimmten Parametern ausfuehrenloadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300
Einen Test ausfuehren und auf Abschluss warten
# Einen Test ausfuehren und auf Abschluss wartenloadfocus-api jmeter run-test --name "My JMeter Test"# Einen Test mit Schwellenwerten ausfuehrenloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"# Einen Test mit benutzerdefiniertem Timeout und Abfrageintervall ausfuehrenloadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15
Teststatus-Ueberwachung
# Status eines Tests nach Name und ID pruefenloadfocus-api jmeter status --name "My JMeter Test" --id 12345# Eine Liste der letzten Testlaeufe abrufenloadfocus-api jmeter runs --limit 10
Ergebnisabruf
# Ergebnisse fuer einen bestimmten Test abrufenloadfocus-api jmeter results --name "My JMeter Test" --id 12345# Ergebnisse mit bestimmten Metriken abrufenloadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors
Arbeiten mit Schwellenwerten
Der Befehl run-test unterstuetzt die Schwellenwertauswertung, um automatisch zu bestimmen, ob ein Test basierend auf Leistungsmetriken bestanden oder fehlgeschlagen ist.
# Einen Test mit mehreren Schwellenwerten ausfuehrenloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"
Unterstuetzte Schwellenwert-Operatoren:
<=- Kleiner oder gleich<- Kleiner als>=- Groesser oder gleich>- Groesser als==- Gleich!=- Ungleich
Ausgabeformate
# Ergebnisse im JSON-Format abrufenloadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json# Standard formatierte Ausgabeloadfocus-api jmeter run-test --name "My JMeter Test"
JavaScript-Bibliotheksnutzung
Der LoadFocus API Client kann auch direkt als JavaScript-Bibliothek in Ihren Anwendungen verwendet werden.
Grundlegende Einrichtung
// LoadFocus API Client importierenconst loadfocus = require('@loadfocus/loadfocus-api-client');// Auf bestimmte Komponenten zugreifenconst { JMeterClient, configManager } = loadfocus;
JMeter Client
// Einen JMeter Client erstellenconst jmeterClient = new loadfocus.JMeterClient();// Oder mit expliziter Konfigurationconst jmeterClient = new loadfocus.JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID'});
Tests ausfuehren
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; // Return the test ID for later use} catch (error) {console.error('Error executing test:', error);}}
Teststatus ueberwachen
async function checkTestStatus(testName, testId) {try {const status = await jmeterClient.getStatus({testrunname: testName,testrunid: testId});console.log('Test status:', status);return status.state; // Return the current state} catch (error) {console.error('Error checking test status:', error);}}
Ergebnisse abrufen
async function getTestResults(testName, testId) {try {// Verfuegbare Labels fuer den Test abrufenconst labels = await jmeterClient.getLabels({testrunname: testName,testrunid: testId});console.log('Test labels:', labels);// Ergebnisse fuer jedes Label abrufenconst 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);}}
Vollstaendiges Beispiel
Hier ist ein vollstaendiges Beispiel, das einen Test ausfuehrt, auf den Abschluss wartet und Ergebnisse abruft:
const { JMeterClient, configManager } = require('@loadfocus/loadfocus-api-client');// Konfiguration einrichtenconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Client erstellenconst jmeterClient = new JMeterClient();async function runCompleteTest() {try {// Test ausfuehrenconsole.log('Executing test...');const executeResult = await jmeterClient.execute({testrunname: 'My JMeter Test'});const testId = executeResult.testrunid;console.log(`Test execution started with ID: ${testId}`);// Auf Abschluss wartenconsole.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 {// Vor erneuter Pruefung wartenawait new Promise(resolve => setTimeout(resolve, 10000));}}// Ergebnisse abrufenconsole.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);}}// Test ausfuehrenrunCompleteTest();
Erweiterte Nutzung
Benutzerdefinierte HTTP-Konfiguration
Sie koennen den vom LoadFocus API Client verwendeten HTTP-Client anpassen:
const { JMeterClient } = require('@loadfocus/loadfocus-api-client');// Client mit benutzerdefinierten HTTP-Optionen erstellenconst jmeterClient = new JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID',httpOptions: {timeout: 30000, // 30 Sekundenretries: 3,headers: {'User-Agent': 'My Custom Application'}}});
Fehlerbehandlung
Der LoadFocus API Client liefert detaillierte Fehlerinformationen:
try {const result = await jmeterClient.execute({testrunname: 'My JMeter Test'});} catch (error) {if (error.response) {// Die Anfrage wurde gesendet und der Server antwortete mit einem Statuscode// ausserhalb des 2xx-Bereichsconsole.error('API Error:', error.response.status, error.response.data);} else if (error.request) {// Die Anfrage wurde gesendet, aber keine Antwort empfangenconsole.error('Network Error:', error.request);} else {// Beim Einrichten der Anfrage ist ein Fehler aufgetretenconsole.error('Request Error:', error.message);}}
Fehlerbehebung
Haeufige Probleme
Authentifizierungsfehler:
- Stellen Sie sicher, dass Ihr API-Schluessel und Ihre Team-ID korrekt konfiguriert sind
- Pruefen Sie, ob Ihr API-Schluessel die erforderlichen Berechtigungen hat
Testausfuehrungsfehler:
- Ueberpruefen Sie, ob der Testname in Ihrem LoadFocus-Konto existiert
- Pruefen Sie, ob Sie das Limit fuer gleichzeitige Tests Ihres Kontos erreicht haben
Timeout-Probleme:
- Erhoehen Sie bei lang laufenden Tests den Parameter
waitTimeout - Erwaegen Sie die Implementierung eines Polling-Mechanismus anstelle des synchronen Wartens
- Erhoehen Sie bei lang laufenden Tests den Parameter
Probleme beim Ergebnisabruf:
- Stellen Sie sicher, dass der Test abgeschlossen ist, bevor Sie Ergebnisse abrufen
- Pruefen Sie, ob die Test-ID korrekt ist
Debugging
Aktivieren Sie Debug-Logging fuer detailliertere Informationen:
// In Ihrem JavaScript-Codeprocess.env.DEBUG = 'true';// Oder bei Verwendung der CLIDEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"
Fuer weitere Hilfe lesen Sie bitte die LoadFocus API-Dokumentation oder kontaktieren Sie den Support.