Skip to content

Commit 9160a44

Browse files
committed
test(timeout): use a mock server instead of hard-coded host
1 parent 05e9e15 commit 9160a44

File tree

3 files changed

+62
-51
lines changed

3 files changed

+62
-51
lines changed
Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,33 @@
11
'use strict';
2-
3-
const common = require('../../common');
4-
const connection = common.createConnection({
5-
host: 'www.google.com'
6-
});
2+
const portfinder = require('portfinder');
73
const assert = require('assert');
4+
const mysql = require('../../../index.js');
5+
6+
console.log('test connect timeout');
7+
8+
portfinder.getPort((err, port) => {
9+
const server = mysql.createServer();
10+
server.on('connection', () => {
11+
// Let connection time out
12+
});
13+
14+
server.listen(port);
815

9-
let errorCount = 0;
10-
let error = null;
16+
const connection = mysql.createConnection({
17+
host: 'localhost',
18+
port: port,
19+
connectTimeout: 1000,
20+
});
1121

12-
connection.on('error', err => {
13-
errorCount++;
14-
error = err;
22+
connection.on('error', err => {
23+
assert.equal(err.code, 'ETIMEDOUT');
24+
connection.destroy();
25+
server._server.close();
26+
console.log('ok');
27+
});
1528
});
1629

17-
process.on('exit', () => {
18-
assert.equal(errorCount, 1);
19-
assert.equal(error.code, 'ETIMEDOUT');
30+
process.on('uncaughtException', err => {
31+
assert.equal(err.message, 'Connection lost: The server closed the connection.');
32+
assert.equal(err.code, 'PROTOCOL_CONNECTION_LOST');
2033
});

test/integration/connection/test-connect-timeout.js

Lines changed: 0 additions & 27 deletions
This file was deleted.

test/integration/connection/test-query-timeout.js

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
'use strict';
22

3+
const portfinder = require('portfinder');
4+
const assert = require('assert');
35
const common = require('../../common');
6+
const mysql = require('../../../index.js');
7+
48
const connection = common.createConnection({ debug: false });
5-
const assert = require('assert');
9+
10+
console.log('test query timeout');
611

712
connection.query({ sql: 'SELECT sleep(3) as a', timeout: 500 }, (err, res) => {
813
assert.equal(res, null);
@@ -35,16 +40,36 @@ connection.execute('SELECT sleep(1) as a', (err, res) => {
3540
connection.end();
3641
});
3742

38-
const connectionTimeout = common.createConnection({
39-
host: '10.255.255.1',
40-
debug: false,
41-
connectTimeout: 100,
43+
/**
44+
* if connect timeout
45+
* we should return connect timeout error instead of query timeout error
46+
*/
47+
portfinder.getPort((err, port) => {
48+
const server = mysql.createServer();
49+
server.on('connection', () => {
50+
// Let connection time out
51+
});
52+
server.listen(port);
53+
54+
const connectionTimeout = mysql.createConnection({
55+
host: 'localhost',
56+
port: port,
57+
connectTimeout: 1000,
58+
});
59+
60+
// return connect timeout error first
61+
connectionTimeout.query({ sql: 'SELECT sleep(3) as a', timeout: 50 }, (err, res) => {
62+
console.log('ok');
63+
assert.equal(res, null);
64+
assert.ok(err);
65+
assert.equal(err.code, 'ETIMEDOUT');
66+
assert.equal(err.message, 'connect ETIMEDOUT');
67+
connectionTimeout.destroy();
68+
server._server.close();
69+
});
4270
});
4371

44-
// return connect timeout error first
45-
connectionTimeout.query({ sql: 'SELECT sleep(3) as a', timeout: 50 }, (err, res) => {
46-
assert.equal(res, null);
47-
assert.ok(err);
48-
assert.equal(err.code, 'ETIMEDOUT');
49-
assert.equal(err.message, 'connect ETIMEDOUT');
72+
process.on('uncaughtException', err => {
73+
assert.equal(err.message, 'Connection lost: The server closed the connection.');
74+
assert.equal(err.code, 'PROTOCOL_CONNECTION_LOST');
5075
});

0 commit comments

Comments
 (0)