Skip to content

Commit

Permalink
tests: fix rare race condition in change user restore test
Browse files Browse the repository at this point in the history
  • Loading branch information
dougwilson committed May 8, 2016
1 parent be37e88 commit 1c39fde
Showing 1 changed file with 34 additions and 36 deletions.
70 changes: 34 additions & 36 deletions test/unit/pool/test-change-user-restore.js
Expand Up @@ -13,55 +13,53 @@ var thread = 0;
server.listen(common.fakeServerPort, function(err) {
assert.ifError(err);

var conn0;
var threadId;
pool.getConnection(function(err, conn) {
pool.getConnection(function(err, conn0) {
assert.ifError(err);
assert.ok(conn.threadId === 1 || conn.threadId === 2);
conn0 = conn;
});

pool.getConnection(function(err, conn) {
assert.ifError(err);
assert.ok(conn.threadId === 1 || conn.threadId === 2);
threadId = conn.threadId;
assert.ok(conn0.threadId === 1 || conn0.threadId === 2);

conn.changeUser({user: 'user_2'}, function(err) {
pool.getConnection(function(err, conn1) {
assert.ifError(err);
assert.strictEqual(conn.threadId, threadId);
assert.ok(conn1.threadId === 1 || conn1.threadId === 2);

conn.query('SELECT CURRENT_USER()', function (err, rows) {
assert.ifError(err);
assert.strictEqual(rows.length, 1);
assert.strictEqual(rows[0]['CURRENT_USER()'], 'user_2@localhost');
conn.release();
});
});
});
var threadId = conn1.threadId;

pool.getConnection(function(err, conn1) {
assert.ifError(err);
assert.strictEqual(conn1.threadId, threadId);
conn1.changeUser({user: 'user_2'}, function(err) {
assert.ifError(err);
assert.strictEqual(conn1.threadId, threadId);

conn1.query('SELECT CURRENT_USER()', function (err, rows) {
assert.ifError(err);
assert.strictEqual(rows.length, 1);
assert.strictEqual(rows[0]['CURRENT_USER()'], 'user_1@localhost');
conn1.query('SELECT CURRENT_USER()', function (err, rows) {
assert.ifError(err);
assert.strictEqual(rows.length, 1);
assert.strictEqual(rows[0]['CURRENT_USER()'], 'user_2@localhost');
conn1.release();
});
});

pool.getConnection(function(err, conn2) {
assert.ifError(err);
assert.ok(conn2.threadId === 1 || conn2.threadId === 2);
conn1.release();
conn2.release();
assert.strictEqual(conn2.threadId, threadId);

pool.end(function(err) {
conn2.query('SELECT CURRENT_USER()', function (err, rows) {
assert.ifError(err);
assert.strictEqual(closed, 2);
server.destroy();
assert.strictEqual(rows.length, 1);
assert.strictEqual(rows[0]['CURRENT_USER()'], 'user_1@localhost');

pool.getConnection(function(err, conn3) {
assert.ifError(err);
assert.ok(conn3.threadId === 1 || conn3.threadId === 2);
conn2.release();
conn3.release();

pool.end(function(err) {
assert.ifError(err);
assert.strictEqual(closed, 2);
server.destroy();
});
});

conn0.release();
});
});

conn0.release();
});
});
});
Expand Down

0 comments on commit 1c39fde

Please sign in to comment.