Terheléses tesztelés API integráció

Ez az útmutató bemutatja, hogyan használhatja a LoadFocus API klienst parancssori felületen (CLI) és közvetlenül JavaScript könyvtárként az alkalmazásaiban.

Tartalomjegyzék

Telepítés

Globális telepítés

npm install -g @loadfocus/loadfocus-api-client

Helyi projekt telepítés

npm install @loadfocus/loadfocus-api-client

Konfiguráció

A LoadFocus API kliens használata előtt konfigurálnia kell API hitelesítő adatait.

CLI konfiguráció

# Set API key and team ID
loadfocus-api config set apikey YOUR_API_KEY
loadfocus-api config set teamid YOUR_TEAM_ID
# Verify configuration
loadfocus-api config show

JavaScript konfiguráció

const { configManager } = require('@loadfocus/loadfocus-api-client');
// Set configuration
configManager.set('apikey', 'YOUR_API_KEY');
configManager.set('teamid', 'YOUR_TEAM_ID');
// Verify configuration
console.log(configManager.get('apikey')); // Should print your API key
console.log(configManager.isConfigured()); // Should print true if all required config is set

Parancssori felület (CLI)

A LoadFocus API kliens átfogó CLI-t biztosít a LoadFocus API-val való interakcióhoz.

JMeter teszt végrehajtás

Teszt végrehajtása

# Execute a test by name
loadfocus-api jmeter execute --name "My JMeter Test"
# Execute a test with specific parameters
loadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300

Teszt futtatása és várakozás a befejezésre

# Run a test and wait for completion
loadfocus-api jmeter run-test --name "My JMeter Test"
# Run a test with thresholds
loadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"
# Run a test with custom timeout and polling interval
loadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15

Teszt állapot figyelés

# Check status of a test by name and ID
loadfocus-api jmeter status --name "My JMeter Test" --id 12345
# Get a list of recent test runs
loadfocus-api jmeter runs --limit 10

Eredmények lekérése

# Get results for a specific test
loadfocus-api jmeter results --name "My JMeter Test" --id 12345
# Get results with specific metrics
loadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors

Küszöbértékekkel való munka

A run-test parancs támogatja a küszöbérték kiértékelést, hogy automatikusan meghatározza, hogy egy teszt megfelel-e vagy megbukik a teljesítménymutatók alapján.

# Run a test with multiple thresholds
loadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"

Támogatott küszöbérték operátorok:

  • <= - Kisebb vagy egyenlő
  • < - Kisebb mint
  • >= - Nagyobb vagy egyenlő
  • > - Nagyobb mint
  • == - Egyenlő
  • != - Nem egyenlő

Kimeneti formátumok

# Get results in JSON format
loadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json
# Default pretty-printed output
loadfocus-api jmeter run-test --name "My JMeter Test"

JavaScript könyvtár használat

A LoadFocus API kliens közvetlenül JavaScript könyvtárként is használható az alkalmazásaiban.

Alapbeállítás

// Import the LoadFocus API Client
const loadfocus = require('@loadfocus/loadfocus-api-client');
// Access specific components
const { JMeterClient, configManager } = loadfocus;

JMeter kliens

// Create a JMeter client
const jmeterClient = new loadfocus.JMeterClient();
// Or with explicit configuration
const jmeterClient = new loadfocus.JMeterClient({
apikey: 'YOUR_API_KEY',
teamid: 'YOUR_TEAM_ID'
});

Tesztek végrehajtása

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);
}
}

Teszt állapot figyelése

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);
}
}

Eredmények lekérése

async function getTestResults(testName, testId) {
try {
// Get available labels for the test
const labels = await jmeterClient.getLabels({
testrunname: testName,
testrunid: testId
});
console.log('Test labels:', labels);
// Get results for each label
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);
}
}

Teljes példa

Íme egy teljes példa, amely végrehajt egy tesztet, megvárja a befejezést és lekéri az eredményeket:

const { JMeterClient, configManager } = require('@loadfocus/loadfocus-api-client');
// Set up configuration
configManager.set('apikey', 'YOUR_API_KEY');
configManager.set('teamid', 'YOUR_TEAM_ID');
// Create client
const jmeterClient = new JMeterClient();
async function runCompleteTest() {
try {
// Execute the test
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}`);
// Wait for completion
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 {
// Wait before checking again
await new Promise(resolve => setTimeout(resolve, 10000));
}
}
// Get results
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);
}
}
// Run the test
runCompleteTest();

Haladó használat

Egyéni HTTP konfiguráció

Testreszabhatja a LoadFocus API kliens által használt HTTP klienst:

const { JMeterClient } = require('@loadfocus/loadfocus-api-client');
// Create client with custom HTTP options
const jmeterClient = new JMeterClient({
apikey: 'YOUR_API_KEY',
teamid: 'YOUR_TEAM_ID',
httpOptions: {
timeout: 30000, // 30 seconds
retries: 3,
headers: {
'User-Agent': 'My Custom Application'
}
}
});

Hibakezelés

A LoadFocus API kliens részletes hibainformációkat biztosít:

try {
const result = await jmeterClient.execute({
testrunname: 'My JMeter Test'
});
} catch (error) {
if (error.response) {
// The request was made and the server responded with a status code
// that falls out of the range of 2xx
console.error('API Error:', error.response.status, error.response.data);
} else if (error.request) {
// The request was made but no response was received
console.error('Network Error:', error.request);
} else {
// Something happened in setting up the request that triggered an Error
console.error('Request Error:', error.message);
}
}

Hibaelhárítás

Gyakori problémák

  1. Hitelesítési hibák:

    • Győződjön meg róla, hogy az API kulcs és a csapat azonosító helyesen van konfigurálva
    • Ellenőrizze, hogy az API kulcs rendelkezik-e a szükséges jogosultságokkal
  2. Teszt végrehajtási hibák:

    • Ellenőrizze, hogy a teszt neve létezik-e a LoadFocus fiókjában
    • Ellenőrizze, hogy elérte-e a fiókja párhuzamos teszt korlátját
  3. Időtúllépési problémák:

    • Hosszan futó tesztek esetén növelje a waitTimeout paramétert
    • Fontolja meg lekérdezési mechanizmus megvalósítását a szinkron várakozás helyett
  4. Eredmény lekérési problémák:

    • Győződjön meg róla, hogy a teszt befejeződött az eredmények lekérése előtt
    • Ellenőrizze, hogy a teszt azonosító helyes-e

Hibakeresés

Engedélyezze a hibakeresési naplózást részletesebb információkért:

// In your JavaScript code
process.env.DEBUG = 'true';
// Or when using the CLI
DEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"

További segítségért tekintse meg a LoadFocus API dokumentációt vagy lépjen kapcsolatba a támogatással.