Skip to content

Commit

Permalink
test: store the value in large packet test
Browse files Browse the repository at this point in the history
  • Loading branch information
dougwilson committed Oct 11, 2014
1 parent 7382308 commit 210ddf2
Showing 1 changed file with 24 additions and 16 deletions.
40 changes: 24 additions & 16 deletions test/integration/connection/test-send-and-receive-large-packets.js
Expand Up @@ -11,8 +11,8 @@ common.getTestConnection(function (err, connection) {

var oldMaxAllowedPacket;
function getMaxAllowedPacket(connection) {
connection.query('SHOW VARIABLES WHERE Variable_name = ?', ['max_allowed_packet'], function(err, rows) {
if (err) throw err;
connection.query('SHOW VARIABLES WHERE Variable_name = ?', ['max_allowed_packet'], function (err, rows) {
assert.ifError(err);

oldMaxAllowedPacket = Number(rows[0].Value);

Expand All @@ -29,9 +29,8 @@ function increaseMaxAllowedPacketIfNeeded(connection) {
? minMaxAllowedPacket
: oldMaxAllowedPacket;

connection.query('SET GLOBAL max_allowed_packet = ?', [newMaxAllowedPacket], function(err, rows) {
if (err) throw err;

connection.query('SET GLOBAL max_allowed_packet = ?', [newMaxAllowedPacket], function (err, rows) {
assert.ifError(err);

// We need to re-connect for this change to take effect, bah
connection.end();
Expand All @@ -40,35 +39,44 @@ function increaseMaxAllowedPacketIfNeeded(connection) {
// We need to wait for the re-connect to happen before starting the actual
// test. That's because our buffer to hex shim in 0.4.x takes ~12 sec on
// TravisCI, causing a MySQL connection timeout otherwise.
connection.connect(function(err) {
if (err) throw err;
connection.connect(function (err) {
assert.ifError(err);

triggerLargeQueryAndResponsePackets(connection);
});
});
}

var length = (Math.pow(256, 3) / 2) + 10; // Half, because of hex encoding
var trailing = 'tailing text';
var length = (Math.pow(256, 3) / 2) + 10; // Half, because of hex encoding
var random = crypto.pseudoRandomBytes || crypto.randomBytes; // Depends on node.js version
var table = 'large_packet_test';

function triggerLargeQueryAndResponsePackets(connection) {
var random = crypto.pseudoRandomBytes || crypto.randomBytes; // Depends on node.js version
var sql = 'SELECT ? as bigField, ? as trailingField';

random(length, function (err, buf) {
assert.ifError(err);
assert.equal(buf.length, length);

connection.query(sql, [buf, trailing], function (err, rows) {
common.useTestDb(connection);

connection.query([
'CREATE TEMPORARY TABLE ?? (',
'`id` int(11) unsigned NOT NULL AUTO_INCREMENT,',
'`bb` longblob NOT NULL,',
'PRIMARY KEY (`id`)',
') ENGINE=InnoDB DEFAULT CHARSET=utf8'
].join('\n'), [table], assert.ifError);

connection.query('INSERT INTO ?? SET ?', [table, {bb: buf}], assert.ifError);

connection.query('SELECT `id`, `bb` FROM ??', [table], function (err, rows) {
assert.ifError(err);

connection.query('SET GLOBAL max_allowed_packet = ?', [oldMaxAllowedPacket], assert.ifError);
connection.end(function (err) {
assert.ifError(err);
assert.equal(rows.length, 1);
assert.equal(rows[0].trailingField, trailing);
assert.equal(rows[0].bigField.length, buf.length);
assert.equal(rows[0].bigField.toString('base64'), buf.toString('base64'));
assert.equal(rows[0].bb.length, buf.length);
assert.equal(rows[0].bb.toString('base64'), buf.toString('base64'));
});
});
});
Expand Down

0 comments on commit 210ddf2

Please sign in to comment.