Ενσωμάτωση API Δοκιμών Φόρτωσης
Αυτός ο οδηγός εξηγεί πώς να χρησιμοποιήσετε τον LoadFocus API Client, τόσο μέσω της διεπαφής γραμμής εντολών (CLI) όσο και χρησιμοποιώντας απευθείας τη βιβλιοθήκη JavaScript στις εφαρμογές σας.
Πίνακας Περιεχομένων
- Εγκατάσταση
- Ρύθμιση
- Διεπαφή Γραμμής Εντολών (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 IDloadfocus-api config set apikey YOUR_API_KEYloadfocus-api config set teamid YOUR_TEAM_ID# Verify configurationloadfocus-api config show
Ρύθμιση JavaScript
const { configManager } = require('@loadfocus/loadfocus-api-client');// Set configurationconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Verify configurationconsole.log(configManager.get('apikey')); // Should print your API keyconsole.log(configManager.isConfigured()); // Should print true if all required config is set
Διεπαφή Γραμμής Εντολών (CLI)
Ο LoadFocus API Client παρέχει ένα ολοκληρωμένο CLI για αλληλεπίδραση με το LoadFocus API.
Εκτέλεση Δοκιμής JMeter
Εκτέλεση Δοκιμής
# Execute a test by nameloadfocus-api jmeter execute --name "My JMeter Test"# Execute a test with specific parametersloadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300
Εκτέλεση Δοκιμής και Αναμονή Ολοκλήρωσης
# Run a test and wait for completionloadfocus-api jmeter run-test --name "My JMeter Test"# Run a test with thresholdsloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"# Run a test with custom timeout and polling intervalloadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15
Παρακολούθηση Κατάστασης Δοκιμής
# Check status of a test by name and IDloadfocus-api jmeter status --name "My JMeter Test" --id 12345# Get a list of recent test runsloadfocus-api jmeter runs --limit 10
Ανάκτηση Αποτελεσμάτων
# Get results for a specific testloadfocus-api jmeter results --name "My JMeter Test" --id 12345# Get results with specific metricsloadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors
Εργασία με Κατώφλια
Η εντολή run-test υποστηρίζει αξιολόγηση κατωφλίων για αυτόματο προσδιορισμό αν μια δοκιμή περνάει ή αποτυγχάνει βάσει μετρικών απόδοσης.
# Run a test with multiple thresholdsloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"
Υποστηριζόμενοι τελεστές κατωφλίων:
<=- Μικρότερο ή ίσο<- Μικρότερο>=- Μεγαλύτερο ή ίσο>- Μεγαλύτερο==- Ίσο!=- Διάφορο
Μορφές Εξόδου
# Get results in JSON formatloadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json# Default pretty-printed outputloadfocus-api jmeter run-test --name "My JMeter Test"
Χρήση Βιβλιοθήκης JavaScript
Ο LoadFocus API Client μπορεί επίσης να χρησιμοποιηθεί απευθείας ως βιβλιοθήκη JavaScript στις εφαρμογές σας.
Βασική Ρύθμιση
// Import the LoadFocus API Clientconst loadfocus = require('@loadfocus/loadfocus-api-client');// Access specific componentsconst { JMeterClient, configManager } = loadfocus;
JMeter Client
// Create a JMeter clientconst jmeterClient = new loadfocus.JMeterClient();// Or with explicit configurationconst 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 testconst labels = await jmeterClient.getLabels({testrunname: testName,testrunid: testId});console.log('Test labels:', labels);// Get results for each labelconst 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 configurationconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Create clientconst jmeterClient = new JMeterClient();async function runCompleteTest() {try {// Execute the 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}`);// Wait for completionconsole.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 againawait new Promise(resolve => setTimeout(resolve, 10000));}}// Get resultsconsole.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 testrunCompleteTest();
Προχωρημένη Χρήση
Προσαρμοσμένη Ρύθμιση HTTP
Μπορείτε να προσαρμόσετε τον HTTP client που χρησιμοποιεί ο LoadFocus API Client:
const { JMeterClient } = require('@loadfocus/loadfocus-api-client');// Create client with custom HTTP optionsconst jmeterClient = new JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID',httpOptions: {timeout: 30000, // 30 secondsretries: 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 2xxconsole.error('API Error:', error.response.status, error.response.data);} else if (error.request) {// The request was made but no response was receivedconsole.error('Network Error:', error.request);} else {// Something happened in setting up the request that triggered an Errorconsole.error('Request Error:', error.message);}}
Αντιμετώπιση Προβλημάτων
Συνήθη Προβλήματα
Σφάλματα Αυθεντικοποίησης:
- Βεβαιωθείτε ότι το API key και το team ID είναι σωστά ρυθμισμένα
- Ελέγξτε ότι το API key σας έχει τα απαραίτητα δικαιώματα
Αποτυχίες Εκτέλεσης Δοκιμών:
- Επαληθεύστε ότι το όνομα δοκιμής υπάρχει στον λογαριασμό σας στο LoadFocus
- Ελέγξτε αν έχετε φτάσει το όριο ταυτόχρονων δοκιμών του λογαριασμού σας
Προβλήματα Timeout:
- Για δοκιμές μεγάλης διάρκειας, αυξήστε την παράμετρο
waitTimeout - Σκεφτείτε να εφαρμόσετε μηχανισμό polling αντί για σύγχρονη αναμονή
- Για δοκιμές μεγάλης διάρκειας, αυξήστε την παράμετρο
Προβλήματα Ανάκτησης Αποτελεσμάτων:
- Βεβαιωθείτε ότι η δοκιμή έχει ολοκληρωθεί πριν ανακτήσετε αποτελέσματα
- Ελέγξτε αν το ID δοκιμής είναι σωστό
Αποσφαλμάτωση
Ενεργοποιήστε την καταγραφή αποσφαλμάτωσης για πιο λεπτομερείς πληροφορίες:
// In your JavaScript codeprocess.env.DEBUG = 'true';// Or when using the CLIDEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"
Για πρόσθετη βοήθεια, παρακαλούμε ανατρέξτε στην τεκμηρίωση LoadFocus API ή επικοινωνήστε με την υποστήριξη.