const axios = require('axios'); const API_BASE_URL = process.env.API_BASE_URL || 'https://api.frenocorp.com'; const CONCURRENCY = parseInt(process.env.LOAD_TEST_CONCURRENCY) || 10; const DURATION = parseInt(process.env.LOAD_TEST_DURATION) || 60; const endpoints = [ '/api/v1/auth/status', '/api/v1/users/profile', '/api/v1/activities/recent', '/api/v1/plans/current' ]; async function runLoadTest() { console.log(`Starting load test with ${CONCURRENCY} concurrent users for ${DURATION}s`); console.log(`Target: ${API_BASE_URL}`); const results = { totalRequests: 0, successful: 0, failed: 0, avgResponseTime: 0, responseTimes: [] }; const startTime = Date.now(); const endTime = startTime + (DURATION * 1000); while (Date.now() < endTime) { const promises = endpoints.map(async (endpoint) => { const requestStart = Date.now(); try { const response = await axios.get(`${API_BASE_URL}${endpoint}`); results.successful++; results.responseTimes.push(Date.now() - requestStart); } catch (error) { results.failed++; console.error(`Failed request to ${endpoint}:`, error.message); } results.totalRequests++; }); await Promise.all(promises); } if (results.responseTimes.length > 0) { results.avgResponseTime = results.responseTimes.reduce((a, b) => a + b, 0) / results.responseTimes.length; } console.log('\n=== Load Test Results ==='); console.log(`Total Requests: ${results.totalRequests}`); console.log(`Successful: ${results.successful}`); console.log(`Failed: ${results.failed}`); console.log(`Success Rate: ${(results.successful / results.totalRequests * 100).toFixed(2)}%`); console.log(`Average Response Time: ${results.avgResponseTime.toFixed(2)}ms`); return results; } runLoadTest() .then(() => { console.log('\nLoad test completed successfully'); process.exit(0); }) .catch((error) => { console.error('Load test failed:', error); process.exit(1); });