| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- import sinon from 'sinon'
- import { describe, beforeEach, it } from 'vitest'
- import path from 'node:path'
- const modulePath = path.join(
- import.meta.dirname,
- '../../../app/js/DrainManager'
- )
- describe('DrainManager', function () {
- beforeEach(async function (ctx) {
- ctx.DrainManager = (await import(modulePath)).default
- ctx.io = {
- sockets: {
- clients: sinon.stub(),
- },
- }
- })
- describe('startDrainTimeWindow', function () {
- beforeEach(function (ctx) {
- ctx.clients = []
- for (let i = 0; i <= 5399; i++) {
- ctx.clients[i] = {
- id: i,
- emit: sinon.stub(),
- }
- }
- ctx.io.sockets.clients.returns(ctx.clients)
- ctx.DrainManager.startDrain = sinon.stub()
- })
- it('should set a drain rate fast enough', async function (ctx) {
- await new Promise((resolve, reject) => {
- ctx.DrainManager.startDrainTimeWindow(ctx.io, 9)
- ctx.DrainManager.startDrain.calledWith(ctx.io, 10).should.equal(true)
- resolve()
- })
- })
- })
- describe('reconnectNClients', function () {
- beforeEach(function (ctx) {
- ctx.clients = []
- for (let i = 0; i <= 9; i++) {
- ctx.clients[i] = {
- id: i,
- emit: sinon.stub(),
- }
- }
- ctx.io.sockets.clients.returns(ctx.clients)
- })
- describe('after first pass', function () {
- beforeEach(function (ctx) {
- ctx.DrainManager.reconnectNClients(ctx.io, 3)
- })
- it('should reconnect the first 3 clients', function (ctx) {
- ;[0, 1, 2].map(i =>
- ctx.clients[i].emit
- .calledWith('reconnectGracefully')
- .should.equal(true)
- )
- })
- it('should not reconnect any more clients', function (ctx) {
- ;[3, 4, 5, 6, 7, 8, 9].map(i =>
- ctx.clients[i].emit
- .calledWith('reconnectGracefully')
- .should.equal(false)
- )
- })
- describe('after second pass', function () {
- beforeEach(function (ctx) {
- ctx.DrainManager.reconnectNClients(ctx.io, 3)
- })
- it('should reconnect the next 3 clients', function (ctx) {
- ;[3, 4, 5].map(i =>
- ctx.clients[i].emit
- .calledWith('reconnectGracefully')
- .should.equal(true)
- )
- })
- it('should not reconnect any more clients', function (ctx) {
- ;[6, 7, 8, 9].map(i =>
- ctx.clients[i].emit
- .calledWith('reconnectGracefully')
- .should.equal(false)
- )
- })
- it('should not reconnect the first 3 clients again', function (ctx) {
- ;[0, 1, 2].map(i => ctx.clients[i].emit.calledOnce.should.equal(true))
- })
- describe('after final pass', function () {
- beforeEach(function (ctx) {
- ctx.DrainManager.reconnectNClients(ctx.io, 100)
- })
- it('should not reconnect the first 6 clients again', function (ctx) {
- ;[0, 1, 2, 3, 4, 5].map(i =>
- ctx.clients[i].emit.calledOnce.should.equal(true)
- )
- })
- it('should log out that it reached the end', function (ctx) {
- ctx.logger.info
- .calledWith('All clients have been told to reconnectGracefully')
- .should.equal(true)
- })
- })
- })
- })
- })
- })
|