A Twitch.tv viewer reward and games system.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

81 lines
2.2 KiB

var common = require('../../common');
var connection = common.createConnection();
var assert = require('assert');
connection.connect(function(err) {
if (err) throw err;
getMaxAllowedPacket();
});
var oldMaxAllowedPacket;
function getMaxAllowedPacket() {
connection.query('SHOW VARIABLES WHERE Variable_name = ?', ['max_allowed_packet'], function(err, rows) {
if (err) throw err;
oldMaxAllowedPacket = Number(rows[0].Value);
increaseMaxAllowedPacketIfNeeded();
});
}
function increaseMaxAllowedPacketIfNeeded() {
// Our test generates a SQL query a few bytes larger than 16 MB, but lets
// leave a little margin:
var minMaxAllowedPacket = 20 * 1024 * 1024;
var newMaxAllowedPacket = (oldMaxAllowedPacket < minMaxAllowedPacket)
? minMaxAllowedPacket
: oldMaxAllowedPacket;
connection.query('SET GLOBAL max_allowed_packet = ?', [newMaxAllowedPacket], function(err, rows) {
if (err) throw err;
// We need to re-connect for this change to take effect, bah
connection.end();
connection = common.createConnection();
// 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;
triggerLargeQueryAndResponsePackets();
});
});
}
var rows = [];
var length = Math.pow(256, 3) / 2; // Half, because of hex encoding
var buffer = new Buffer(length);
var sql = 'SELECT ? as bigField';
function triggerLargeQueryAndResponsePackets() {
connection.query(sql, [buffer], function(err, _rows) {
if (err) throw err;
rows = _rows;
resetMaxAllowedPacket();
});
}
function resetMaxAllowedPacket() {
connection.query('SET GLOBAL max_allowed_packet = ?', [oldMaxAllowedPacket], function(err, rows) {
if (err) {
err.message = 'Could not reset max_allowed_packet size, please check your server settings: ' + err.message;
throw err;
}
});
connection.end();
}
process.on('exit', function() {
assert.equal(rows.length, 1);
assert.equal(rows[0].bigField.length, length);
});