39 lines
1.2 KiB
JavaScript
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');
|