Files
go_bt/tests/proxy_reuse_pool.test.js
T

39 lines
1.2 KiB
JavaScript

'use strict';
const assert = require('assert');
const {
normalizeReuseCount,
createProxyReusePool,
} = require('../src/services/proxy_reuse_pool');
assert.strictEqual(normalizeReuseCount('10'), 10);
assert.strictEqual(normalizeReuseCount('0'), 1);
assert.strictEqual(normalizeReuseCount('999'), 100);
const disabled = createProxyReusePool({ enabled: false, maxUses: 10 });
assert.strictEqual(disabled.add('proxy-a'), null);
assert.strictEqual(disabled.acquire(), null);
const pool = createProxyReusePool({ enabled: true, maxUses: 3 });
assert.deepStrictEqual(pool.add('proxy-a', { ttfb: 1200 }), { useNumber: 1, maxUses: 3 });
assert.strictEqual(pool.availableAssignments, 2);
assert.deepStrictEqual(pool.acquire(), {
proxy: 'proxy-a',
metadata: { ttfb: 1200 },
useNumber: 2,
maxUses: 3,
});
assert.deepStrictEqual(pool.acquire(), {
proxy: 'proxy-a',
metadata: { ttfb: 1200 },
useNumber: 3,
maxUses: 3,
});
assert.strictEqual(pool.acquire(), null, '首次账号加两次复用后必须耗尽三次配额');
pool.add('proxy-b');
pool.add('proxy-c');
assert.strictEqual(pool.acquire().proxy, 'proxy-b', '应优先耗尽先验证成功的 SID');
console.log('proxy_reuse_pool.test.js: PASS');