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

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 ID
loadfocus-api config set apikey YOUR_API_KEY
loadfocus-api config set teamid YOUR_TEAM_ID
# Verify configuration
loadfocus-api config show

JavaScript Yapılandırması

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

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 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

Bir Test Çalıştırma ve Tamamlanmasını Bekleme

# 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

Test Durumu İzleme

# 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

Sonuç Alma

# 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

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

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

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

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

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

Sorun Giderme

Yaygın Sorunlar

  1. 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
  2. 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
  3. Zaman Aşımı Sorunları:

    • Uzun süreli testler için waitTimeout parametresini artırın
    • Senkron bekleme yerine bir yoklama mekanizması uygulamayı düşünün
  4. 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 code
process.env.DEBUG = 'true';
// Or when using the CLI
DEBUG=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.