fast-proxy-balancer
Version:
Smart and flexible proxy balancer for Node.js
51 lines โข 1.88 kB
JavaScript
import { ProxyBalancer } from '../src/ProxyBalancer.js';
// Mock testProxy function
async function mockTestProxy(proxy, testUrl, timeout) {
console.log('๐งช mockTestProxy called:', proxy.url);
proxy.latency = Math.floor(Math.random() * 200);
proxy.failures = 0;
}
// Mock sortProxies function
function mockSortProxies(proxies) {
console.log('๐ mockSortProxies called');
return proxies.sort((a, b) => a.latency - b.latency); // Simple sort for testing
}
// Extend ProxyBalancer to inject mocks
class MockProxyBalancer extends ProxyBalancer {
async refreshProxies() {
console.log('๐ Using mock refreshProxies...');
const promises = this['proxies'].map((proxy) => mockTestProxy(proxy, '', 0));
await Promise.all(promises);
}
getBestProxy = ProxyBalancer.prototype.getBestProxy;
['proxies'] = [];
}
// Manual test run
async function testManual() {
const proxyBalancer = new MockProxyBalancer([
'http://proxy1.com',
'http://proxy2.com',
'http://proxy3.com'
]);
console.log('๐ Initializing...');
await proxyBalancer.init();
try {
await proxyBalancer.refreshProxies();
console.log('โ
Proxies refreshed');
const bestProxy = await proxyBalancer.getBestProxy();
console.log('๐ Best Proxy:', bestProxy.url);
}
catch (error) {
console.error('โ Error during refresh or best proxy selection:', error);
}
console.log('๐ Proxy stats:');
console.table(proxyBalancer.getProxyStats());
console.log('๐ Sorted by latency:');
console.table(proxyBalancer.sortByLatency());
console.log('โ Failed proxies:');
console.table(proxyBalancer.getFailedProxies());
console.log('๐ Summary:');
console.log(proxyBalancer.getStatsSummary());
}
testManual();
//# sourceMappingURL=test-manual.js.map