Ενσωμάτωση API Δοκιμών Φόρτωσης

Αυτός ο οδηγός εξηγεί πώς να χρησιμοποιήσετε τον LoadFocus API Client, τόσο μέσω της διεπαφής γραμμής εντολών (CLI) όσο και χρησιμοποιώντας απευθείας τη βιβλιοθήκη JavaScript στις εφαρμογές σας.

Πίνακας Περιεχομένων

Εγκατάσταση

Καθολική Εγκατάσταση

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

Τοπική Εγκατάσταση Έργου

npm install @loadfocus/loadfocus-api-client

Ρύθμιση

Πριν χρησιμοποιήσετε τον LoadFocus API Client, πρέπει να ρυθμίσετε τα διαπιστευτήρια API σας.

Ρύθμιση CLI

# 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

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

Διεπαφή Γραμμής Εντολών (CLI)

Ο LoadFocus API Client παρέχει ένα ολοκληρωμένο CLI για αλληλεπίδραση με το LoadFocus API.

Εκτέλεση Δοκιμής JMeter

Εκτέλεση Δοκιμής

# 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

Εκτέλεση Δοκιμής και Αναμονή Ολοκλήρωσης

# 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

Παρακολούθηση Κατάστασης Δοκιμής

# 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

Ανάκτηση Αποτελεσμάτων

# 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

Εργασία με Κατώφλια

Η εντολή run-test υποστηρίζει αξιολόγηση κατωφλίων για αυτόματο προσδιορισμό αν μια δοκιμή περνάει ή αποτυγχάνει βάσει μετρικών απόδοσης.

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

Υποστηριζόμενοι τελεστές κατωφλίων:

  • <= - Μικρότερο ή ίσο
  • < - Μικρότερο
  • >= - Μεγαλύτερο ή ίσο
  • > - Μεγαλύτερο
  • == - Ίσο
  • != - Διάφορο

Μορφές Εξόδου

# 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

Ο LoadFocus API Client μπορεί επίσης να χρησιμοποιηθεί απευθείας ως βιβλιοθήκη JavaScript στις εφαρμογές σας.

Βασική Ρύθμιση

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

JMeter Client

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

Εκτέλεση Δοκιμών

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

Παρακολούθηση Κατάστασης Δοκιμής

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

Ανάκτηση Αποτελεσμάτων

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

Πλήρες Παράδειγμα

Ακολουθεί ένα πλήρες παράδειγμα που εκτελεί μια δοκιμή, περιμένει την ολοκλήρωση και ανακτά τα αποτελέσματα:

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

Προχωρημένη Χρήση

Προσαρμοσμένη Ρύθμιση HTTP

Μπορείτε να προσαρμόσετε τον HTTP client που χρησιμοποιεί ο LoadFocus API Client:

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

Διαχείριση Σφαλμάτων

Ο LoadFocus API Client παρέχει λεπτομερείς πληροφορίες σφαλμάτων:

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

Αντιμετώπιση Προβλημάτων

Συνήθη Προβλήματα

  1. Σφάλματα Αυθεντικοποίησης:

    • Βεβαιωθείτε ότι το API key και το team ID είναι σωστά ρυθμισμένα
    • Ελέγξτε ότι το API key σας έχει τα απαραίτητα δικαιώματα
  2. Αποτυχίες Εκτέλεσης Δοκιμών:

    • Επαληθεύστε ότι το όνομα δοκιμής υπάρχει στον λογαριασμό σας στο LoadFocus
    • Ελέγξτε αν έχετε φτάσει το όριο ταυτόχρονων δοκιμών του λογαριασμού σας
  3. Προβλήματα Timeout:

    • Για δοκιμές μεγάλης διάρκειας, αυξήστε την παράμετρο waitTimeout
    • Σκεφτείτε να εφαρμόσετε μηχανισμό polling αντί για σύγχρονη αναμονή
  4. Προβλήματα Ανάκτησης Αποτελεσμάτων:

    • Βεβαιωθείτε ότι η δοκιμή έχει ολοκληρωθεί πριν ανακτήσετε αποτελέσματα
    • Ελέγξτε αν το ID δοκιμής είναι σωστό

Αποσφαλμάτωση

Ενεργοποιήστε την καταγραφή αποσφαλμάτωσης για πιο λεπτομερείς πληροφορίες:

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

Για πρόσθετη βοήθεια, παρακαλούμε ανατρέξτε στην τεκμηρίωση LoadFocus API ή επικοινωνήστε με την υποστήριξη.