Yük Testi API Entegrasyonu
Bu kılavuz, LoadFocus API Client'ın hem komut satırı arayüzü (CLI) hem de JavaScript kütüphanesini doğrudan uygulamalarınızda kullanarak nasıl kullanılacağını açıklar.
İçindekiler
- Kurulum
- Yapılandırma
- Komut Satırı Arayüzü (CLI)
- JavaScript Kütüphanesi Kullanımı
- Gelişmiş Kullanım
- Sorun Giderme
Kurulum
Global Kurulum
npm install -g @loadfocus/loadfocus-api-client
Yerel Proje Kurulumu
npm install @loadfocus/loadfocus-api-client
Yapılandırma
LoadFocus API Client'ı kullanmadan önce API kimlik bilgilerinizi yapılandırmanız gerekir.
CLI Yapılandırması
# 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 Yapılandırması
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
Komut Satırı Arayüzü (CLI)
LoadFocus API Client, LoadFocus API ile etkileşim için kapsamlı bir CLI sağlar.
JMeter Test Çalıştırma
Bir Test Çalıştırma
# 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
Bir Test Çalıştırma ve Tamamlanmasını Bekleme
# 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
Test Durumu İzleme
# 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
Sonuç Alma
# 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
Eşiklerle Çalışma
run-test komutu, performans metriklerine dayalı olarak bir testin başarılı veya başarısız olduğunu otomatik olarak belirlemek için eşik değerlendirmesini destekler.
# Run a test with multiple thresholdsloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"
Desteklenen eşik operatörleri:
<=- Küçük veya eşit<- Küçük>=- Büyük veya eşit>- Büyük==- Eşit!=- Eşit değil
Çıktı Formatları
# 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 Kütüphanesi Kullanımı
LoadFocus API Client, uygulamalarınızda doğrudan bir JavaScript kütüphanesi olarak da kullanılabilir.
Temel Kurulum
// 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'});
Test Çalıştırma
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);}}
Test Durumu İzleme
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);}}
Sonuç Alma
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);}}
Tam Örnek
İşte bir testi çalıştıran, tamamlanmasını bekleyen ve sonuçları alan tam bir örnek:
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();
Gelişmiş Kullanım
Özel HTTP Yapılandırması
LoadFocus API Client tarafından kullanılan HTTP istemcisini özelleştirebilirsiniz:
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'}}});
Hata Yönetimi
LoadFocus API Client ayrıntılı hata bilgisi sağlar:
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);}}
Sorun Giderme
Yaygın Sorunlar
Kimlik Doğrulama Hataları:
- API anahtarınızın ve takım kimliğinizin doğru yapılandırıldığından emin olun
- API anahtarınızın gerekli izinlere sahip olduğunu kontrol edin
Test Çalıştırma Başarısızlıkları:
- Test adının LoadFocus hesabınızda mevcut olduğunu doğrulayın
- Hesabınızın eşzamanlı test limitine ulaşıp ulaşmadığını kontrol edin
Zaman Aşımı Sorunları:
- Uzun süreli testler için
waitTimeoutparametresini artırın - Senkron bekleme yerine bir yoklama mekanizması uygulamayı düşünün
- Uzun süreli testler için
Sonuç Alma Sorunları:
- Sonuçları almadan önce testin tamamlandığından emin olun
- Test kimliğinin doğru olup olmadığını kontrol edin
Hata Ayıklama
Daha ayrıntılı bilgi için hata ayıklama günlüğünü etkinleştirin:
// In your JavaScript codeprocess.env.DEBUG = 'true';// Or when using the CLIDEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"
Ek yardım için lütfen LoadFocus API dokümantasyonuna başvurun veya destek ile iletişime geçin.