test("legacy tho limit", function() { const {QUEUED, COMPLETE, FINISHING} = require("constants"); const {LegacyScheduler, addLimit} = require("support/serverlimits"); let limits = []; for (let host of serverlimits_generateHosts()) { let limit = addLimit(host.domain); limit.connections = host.num - 1; limit.save(); limits.push(limit); } try { let queue = Array.from(serverlimits_generateQueue()); let generated = []; var generator = new LegacyScheduler(queue); let gen; while (gen = generator.next()) { generated.push(gen); } let expected = queue.filter(e => e.state === QUEUED); deepEqual(generated, expected); } catch (ex) { limits.forEach(l => l.remove()); } });
test("fast", function() { const {QUEUED, COMPLETE, FINISHING, RUNNING} = require("constants"); const {FastScheduler, addLimit} = require("support/serverlimits"); let limits = []; for (let host of serverlimits_generateHosts()) { let limit = addLimit(host.domain); limit.connections = host.num - 1; limit.save(); limits.push(limit); } try { let queue = Array.from(serverlimits_generateQueue()); let generated = []; var generator = new FastScheduler(queue); let gen; while (gen = generator.next(new Set(generated))) { gen.state = RUNNING; generated.push(gen); } let actual = generated.map(e => `${e.urlManager.domain}/${e.file}`); deepEqual(actual, [ "test2.host/file1", "test3.host/file1", "test3.host/file2", "test4.host/file1", "test4.host/file2", "test4.host/file3", "test5.host/file1", "test5.host/file2", "test5.host/file3", "test5.host/file4", "test6.host/file1", "test6.host/file2", "test6.host/file3", "test6.host/file4", "test7.host/file1", "test7.host/file2", "test7.host/file3", "test7.host/file4", "test8.host/file1", "test8.host/file2", "test8.host/file3", "test8.host/file4" ]); } catch (ex) { limits.forEach(l => l.remove()); } });