Integración de API de Pruebas de Carga
Esta guía explica cómo usar el Cliente API de LoadFocus, tanto a través de la interfaz de línea de comandos (CLI) como usando directamente la biblioteca JavaScript en tus aplicaciones.
Tabla de Contenidos
- Instalación
- Configuración
- Interfaz de Línea de Comandos (CLI)
- Uso de la Biblioteca JavaScript
- Uso Avanzado
- Solución de Problemas
Instalación
Instalación Global
npm install -g @loadfocus/loadfocus-api-client
Instalación en Proyecto Local
npm install @loadfocus/loadfocus-api-client
Configuración
Antes de usar el Cliente API de LoadFocus, necesitas configurar tus credenciales de API.
Configuración CLI
# Establecer clave API e ID de equipoloadfocus-api config set apikey YOUR_API_KEYloadfocus-api config set teamid YOUR_TEAM_ID# Verificar configuraciónloadfocus-api config show
Configuración JavaScript
const { configManager } = require('@loadfocus/loadfocus-api-client');// Establecer configuraciónconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Verificar configuraciónconsole.log(configManager.get('apikey')); // Debería imprimir tu clave APIconsole.log(configManager.isConfigured()); // Debería imprimir true si toda la configuración requerida está establecida
Interfaz de Línea de Comandos (CLI)
El Cliente API de LoadFocus proporciona un CLI completo para interactuar con la API de LoadFocus.
Ejecución de Pruebas JMeter
Ejecutar una Prueba
# Ejecutar una prueba por nombreloadfocus-api jmeter execute --name "My JMeter Test"# Ejecutar una prueba con parámetros específicosloadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300
Ejecutar una Prueba y Esperar a que Complete
# Ejecutar una prueba y esperar a que completeloadfocus-api jmeter run-test --name "My JMeter Test"# Ejecutar una prueba con umbralesloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"# Ejecutar una prueba con timeout y intervalo de consulta personalizadosloadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15
Monitoreo de Estado de Pruebas
# Verificar estado de una prueba por nombre e IDloadfocus-api jmeter status --name "My JMeter Test" --id 12345# Obtener una lista de ejecuciones de prueba recientesloadfocus-api jmeter runs --limit 10
Recuperación de Resultados
# Obtener resultados para una prueba específicaloadfocus-api jmeter results --name "My JMeter Test" --id 12345# Obtener resultados con métricas específicasloadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors
Trabajo con Umbrales
El comando run-test soporta evaluación de umbrales para determinar automáticamente si una prueba pasa o falla basándose en métricas de rendimiento.
# Ejecutar una prueba con múltiples umbralesloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"
Operadores de umbral soportados:
<=- Menor o igual que<- Menor que>=- Mayor o igual que>- Mayor que==- Igual a!=- No igual a
Formatos de Salida
# Obtener resultados en formato JSONloadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json# Salida con formato legible por defectoloadfocus-api jmeter run-test --name "My JMeter Test"
Uso de la Biblioteca JavaScript
El Cliente API de LoadFocus también puede usarse directamente como una biblioteca JavaScript en tus aplicaciones.
Configuración Básica
// Importar el Cliente API de LoadFocusconst loadfocus = require('@loadfocus/loadfocus-api-client');// Acceder a componentes específicosconst { JMeterClient, configManager } = loadfocus;
Cliente JMeter
// Crear un cliente JMeterconst jmeterClient = new loadfocus.JMeterClient();// O con configuración explícitaconst jmeterClient = new loadfocus.JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID'});
Ejecución de Pruebas
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;} catch (error) {console.error('Error executing test:', error);}}
Monitoreo de Estado de Pruebas
async function checkTestStatus(testName, testId) {try {const status = await jmeterClient.getStatus({testrunname: testName,testrunid: testId});console.log('Test status:', status);return status.state;} catch (error) {console.error('Error checking test status:', error);}}
Recuperación de Resultados
async function getTestResults(testName, testId) {try {const labels = await jmeterClient.getLabels({testrunname: testName,testrunid: testId});console.log('Test labels:', labels);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);}}
Ejemplo Completo
Aquí hay un ejemplo completo que ejecuta una prueba, espera a que complete y recupera los resultados:
const { JMeterClient, configManager } = require('@loadfocus/loadfocus-api-client');// ConfigurarconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Crear clienteconst jmeterClient = new JMeterClient();async function runCompleteTest() {try {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}`);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 {await new Promise(resolve => setTimeout(resolve, 10000));}}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);}}runCompleteTest();
Uso Avanzado
Configuración HTTP Personalizada
Puedes personalizar el cliente HTTP usado por el Cliente API de LoadFocus:
const { JMeterClient } = require('@loadfocus/loadfocus-api-client');const jmeterClient = new JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID',httpOptions: {timeout: 30000,retries: 3,headers: {'User-Agent': 'My Custom Application'}}});
Manejo de Errores
El Cliente API de LoadFocus proporciona información detallada de errores:
try {const result = await jmeterClient.execute({testrunname: 'My JMeter Test'});} catch (error) {if (error.response) {console.error('API Error:', error.response.status, error.response.data);} else if (error.request) {console.error('Network Error:', error.request);} else {console.error('Request Error:', error.message);}}
Solución de Problemas
Problemas Comunes
Errores de Autenticación:
- Asegúrate de que tu clave API e ID de equipo estén correctamente configurados
- Verifica que tu clave API tenga los permisos necesarios
Fallos en la Ejecución de Pruebas:
- Verifica que el nombre de la prueba exista en tu cuenta de LoadFocus
- Comprueba si has alcanzado el límite de pruebas concurrentes de tu cuenta
Problemas de Timeout:
- Para pruebas de larga duración, aumenta el parámetro
waitTimeout - Considera implementar un mecanismo de consulta en lugar de esperar sincrónicamente
- Para pruebas de larga duración, aumenta el parámetro
Problemas de Recuperación de Resultados:
- Asegúrate de que la prueba haya completado antes de recuperar resultados
- Verifica que el ID de la prueba sea correcto
Depuración
Habilita el registro de depuración para información más detallada:
// En tu código JavaScriptprocess.env.DEBUG = 'true';// O al usar el CLIDEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"
Para ayuda adicional, consulta la documentación de la API de LoadFocus o contacta soporte.