44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import connection_pool from '../networking/connection_pool';
|
|
import packet from '../networking/packet';
|
|
import connection from '../networking/connection';
|
|
|
|
jest.mock('../networking/connection');
|
|
|
|
test(`construction fails if pool size is <= 1`, () => {
|
|
expect(() => new connection_pool(1)).toThrow(Error);
|
|
expect(() => new connection_pool(0)).toThrow(Error);
|
|
expect(() => new connection_pool(-1)).toThrow(Error);
|
|
});
|
|
|
|
test(`error on socket release is ignored`, async () => {
|
|
|
|
const conn = new connection_pool(2, '', 20000);
|
|
let invoked = false;
|
|
jest.spyOn(conn.pool, 'acquire').mockImplementation(() => {
|
|
return {
|
|
release: () => {
|
|
invoked = true;
|
|
throw new Error('mock release error');
|
|
},
|
|
}
|
|
});
|
|
|
|
const mock_send = jest.fn();
|
|
connection.prototype.send = async () => {
|
|
return mock_send();
|
|
};
|
|
mock_send.mockResolvedValue(0);
|
|
|
|
expect(await conn.send('', new packet())).toEqual(0);
|
|
expect(invoked).toBeTruthy();
|
|
});
|
|
|
|
test(`send fails if acquire fails`, async () => {
|
|
const conn = new connection_pool(2, '', 20000);
|
|
jest.spyOn(conn.pool, 'acquire').mockImplementation(() => {
|
|
throw new Error('mock acquire exception');
|
|
});
|
|
|
|
await expect(conn.send('', new packet())).rejects.toThrow(Error);
|
|
});
|