| import { fetch } from "bun"; |
|
|
| |
| const PROXY_PORT = process.env.PORT || 8001; |
| const PROXY_URL = `http://localhost:${PROXY_PORT}`; |
| const CONCURRENT_REQUESTS = 20; |
| const TARGET_URL = "https://httpbin.org/delay/1"; |
|
|
| console.log(`Starting concurrency test with ${CONCURRENT_REQUESTS} concurrent requests...`); |
| console.log(`Target: ${TARGET_URL}`); |
| console.log(`Proxy: ${PROXY_URL}`); |
|
|
| const startTime = Date.now(); |
|
|
| |
| const requests = Array(CONCURRENT_REQUESTS).fill(0).map((_, index) => { |
| return (async () => { |
| const requestStart = Date.now(); |
| console.log(`[${index}] Starting request`); |
|
|
| try { |
| const response = await fetch(`${PROXY_URL}/${TARGET_URL}`); |
| |
| try { |
| await response.json(); |
| } catch (e) { |
| |
| } |
| const requestEnd = Date.now(); |
| const duration = requestEnd - requestStart; |
|
|
| console.log(`[${index}] Request completed in ${duration}ms with status ${response.status}`); |
| return { index, success: true, status: response.status, duration }; |
| } catch (error: any) { |
| console.error(`[${index}] Request failed:`, error); |
| return { index, success: false, error: error.message }; |
| } |
| })(); |
| }); |
|
|
| |
| Promise.all(requests) |
| .then(results => { |
| const endTime = Date.now(); |
| const totalDuration = endTime - startTime; |
|
|
| |
| const successful = results.filter(r => r.success).length; |
| const failed = results.filter(r => !r.success).length; |
|
|
| console.log("\n--- Concurrency Test Results ---"); |
| console.log(`Total time: ${totalDuration}ms`); |
| console.log(`Successful requests: ${successful}/${CONCURRENT_REQUESTS}`); |
| console.log(`Failed requests: ${failed}/${CONCURRENT_REQUESTS}`); |
|
|
| |
| if (successful === CONCURRENT_REQUESTS) { |
| console.log("\n✅ SUCCESS: All concurrent requests completed successfully!"); |
| console.log(`The proxy server successfully handled ${CONCURRENT_REQUESTS} concurrent requests.`); |
| } else { |
| console.log("\n❌ FAILURE: Some requests failed!"); |
| } |
| }) |
| .catch(error => { |
| console.error("Error running concurrency test:", error); |
| }); |
|
|