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

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 festlegen
loadfocus-api config set apikey YOUR_API_KEY
loadfocus-api config set teamid YOUR_TEAM_ID
# Konfiguration ueberpruefen
loadfocus-api config show

JavaScript-Konfiguration

const { configManager } = require('@loadfocus/loadfocus-api-client');
// Konfiguration festlegen
configManager.set('apikey', 'YOUR_API_KEY');
configManager.set('teamid', 'YOUR_TEAM_ID');
// Konfiguration ueberpruefen
console.log(configManager.get('apikey')); // Should print your API key
console.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 ausfuehren
loadfocus-api jmeter execute --name "My JMeter Test"
# Einen Test mit bestimmten Parametern ausfuehren
loadfocus-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 warten
loadfocus-api jmeter run-test --name "My JMeter Test"
# Einen Test mit Schwellenwerten ausfuehren
loadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"
# Einen Test mit benutzerdefiniertem Timeout und Abfrageintervall ausfuehren
loadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15

Teststatus-Ueberwachung

# Status eines Tests nach Name und ID pruefen
loadfocus-api jmeter status --name "My JMeter Test" --id 12345
# Eine Liste der letzten Testlaeufe abrufen
loadfocus-api jmeter runs --limit 10

Ergebnisabruf

# Ergebnisse fuer einen bestimmten Test abrufen
loadfocus-api jmeter results --name "My JMeter Test" --id 12345
# Ergebnisse mit bestimmten Metriken abrufen
loadfocus-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 ausfuehren
loadfocus-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 abrufen
loadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json
# Standard formatierte Ausgabe
loadfocus-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 importieren
const loadfocus = require('@loadfocus/loadfocus-api-client');
// Auf bestimmte Komponenten zugreifen
const { JMeterClient, configManager } = loadfocus;

JMeter Client

// Einen JMeter Client erstellen
const jmeterClient = new loadfocus.JMeterClient();
// Oder mit expliziter Konfiguration
const 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 abrufen
const labels = await jmeterClient.getLabels({
testrunname: testName,
testrunid: testId
});
console.log('Test labels:', labels);
// Ergebnisse fuer jedes Label abrufen
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);
}
}

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 einrichten
configManager.set('apikey', 'YOUR_API_KEY');
configManager.set('teamid', 'YOUR_TEAM_ID');
// Client erstellen
const jmeterClient = new JMeterClient();
async function runCompleteTest() {
try {
// Test ausfuehren
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}`);
// Auf Abschluss warten
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 {
// Vor erneuter Pruefung warten
await new Promise(resolve => setTimeout(resolve, 10000));
}
}
// Ergebnisse abrufen
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);
}
}
// Test ausfuehren
runCompleteTest();

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 erstellen
const jmeterClient = new JMeterClient({
apikey: 'YOUR_API_KEY',
teamid: 'YOUR_TEAM_ID',
httpOptions: {
timeout: 30000, // 30 Sekunden
retries: 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-Bereichs
console.error('API Error:', error.response.status, error.response.data);
} else if (error.request) {
// Die Anfrage wurde gesendet, aber keine Antwort empfangen
console.error('Network Error:', error.request);
} else {
// Beim Einrichten der Anfrage ist ein Fehler aufgetreten
console.error('Request Error:', error.message);
}
}

Fehlerbehebung

Haeufige Probleme

  1. 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
  2. Testausfuehrungsfehler:

    • Ueberpruefen Sie, ob der Testname in Ihrem LoadFocus-Konto existiert
    • Pruefen Sie, ob Sie das Limit fuer gleichzeitige Tests Ihres Kontos erreicht haben
  3. Timeout-Probleme:

    • Erhoehen Sie bei lang laufenden Tests den Parameter waitTimeout
    • Erwaegen Sie die Implementierung eines Polling-Mechanismus anstelle des synchronen Wartens
  4. 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-Code
process.env.DEBUG = 'true';
// Oder bei Verwendung der CLI
DEBUG=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.