connection_pool tests
This commit is contained in:
43
src/__tests__/connection_pool.test.js
Normal file
43
src/__tests__/connection_pool.test.js
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
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);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user