first post

This commit is contained in:
2012-05-25 09:03:56 -04:00
commit 6a753904b7
609 changed files with 252648 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
client.ping(function(err, result) {
if (err) throw err;
assert.strictEqual(result.affectedRows, 0);
client.end();
});

View File

@@ -0,0 +1,10 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
client.statistics(function(err, result) {
if (err) throw err;
assert.ok(result.extra.match(/time/i));
client.end();
});

View File

@@ -0,0 +1,13 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
client.useDatabase(common.TEST_DB, function(err, result) {
// The TEST_DB may not exist right now, so ignore errors related to that
if (err && err.number === mysql.ERROR_BAD_DB_ERROR) err = null;
if (err) throw err;
assert.strictEqual(result.affectedRows, 0);
client.end();
});

View File

@@ -0,0 +1,11 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
client.query('SELECT 1', function(err, results) {
if (err) throw err;
assert.deepEqual(results, [{1: 1}]);
client.end();
});

View File

@@ -0,0 +1,24 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
// Not sure if we need all 3 of these, but they do the trick
client.query('SET interactive_timeout = 1');
client.query('SET wait_timeout = 1');
client.query('SET net_read_timeout = 1');
var result;
client._socket.on('end', function() {
assert.equal(client.connected, false);
client.query('SELECT 1', function(err, _result) {
if (err) throw err;
result = _result;
client.destroy();
});
});
process.on('exit', function() {
assert.deepEqual(result, [{'1': 1}]);
});

View File

@@ -0,0 +1,24 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
client.password = 'thispassworddoesnotreallywork';
var callbacks = [];
client.query('SELECT 1', function(err) {
assert.ok(/access denied/i.test(err.message));
callbacks.push(1);
});
client.query('SELECT 2', function(err) {
assert.ok(/access denied/i.test(err.message));
callbacks.push(2);
client.destroy();
});
process.on('exit', function() {
assert.deepEqual(callbacks, [1, 2]);
});

View File

@@ -0,0 +1,25 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
// Port number outside of range -> triggers connection error
client.port = 999999999;
var callbacks = [];
client.query('SELECT 1', function(err) {
assert.ok(err);
callbacks.push(1);
});
client.query('SELECT 2', function(err) {
assert.ok(err);
callbacks.push(2);
client.destroy();
});
process.on('exit', function() {
assert.deepEqual(callbacks, [1, 2]);
});

View File

@@ -0,0 +1,27 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
var callbacks = [];
client.query('SELECT 1', function(err, results) {
if (err) throw err;
callbacks.push(1);
});
client.end(function(err) {
if (err) throw err;
callbacks.push(2);
});
client.query('SELECT 1', function(err) {
if (err) throw err;
callbacks.push(3);
client.destroy();
});
process.on('exit', function() {
assert.deepEqual(callbacks, [1, 2, 3]);
});

View File

@@ -0,0 +1,17 @@
var common = require('../../../common');
var assert = require('assert');
var INVALID_QUERY = 'first invalid #*&% query';
var client = common.createClient();
var err;
client.query(INVALID_QUERY);
client .on('error', function(_err) {
err = _err;
client.destroy();
});
process.on('exit', function() {
assert.ok(err);
assert.strictEqual(err.sql, INVALID_QUERY);
});

View File

@@ -0,0 +1,18 @@
var common = require('../../../common');
var assert = require('assert');
var INVALID_QUERY = 'first invalid #*&% query';
var client = common.createClient();
var err;
client
.query(INVALID_QUERY)
.on('error', function(_err) {
err = _err;
client.destroy();
});
process.on('exit', function() {
assert.ok(err);
assert.strictEqual(err.sql, INVALID_QUERY);
});

View File

@@ -0,0 +1,37 @@
var common = require('../../../common');
var assert = require('assert');
var INVALID_QUERY = 'first invalid #*&% query';
var client = common.createClient();
var callbacks = [];
client.query(INVALID_QUERY, function(err) {
assert.strictEqual(err.sql, INVALID_QUERY);
callbacks.push(1);
});
client.query('SHOW STATUS', function(err, rows, fields) {
if (err) throw err;
assert.equal(rows.length >= 50, true);
assert.equal(Object.keys(fields).length, 2);
callbacks.push(2);
});
client.query(INVALID_QUERY, function(err) {
assert.strictEqual(err.sql, INVALID_QUERY);
callbacks.push(3);
});
client.query(INVALID_QUERY, function(err) {
assert.strictEqual(err.sql, INVALID_QUERY);
client.destroy();
callbacks.push(4);
});
process.on('exit', function() {
assert.deepEqual(callbacks, [1, 2, 3, 4]);
});

View File

@@ -0,0 +1,16 @@
var common = require('../../../common');
var assert = require('assert');
var INVALID_QUERY = 'first invalid #*&% query';
var client = common.createClient();
var err;
client.query(INVALID_QUERY, function(_err) {
err = _err;
client.destroy();
});
process.on('exit', function() {
assert.ok(err);
assert.strictEqual(err.sql, INVALID_QUERY);
});

View File

@@ -0,0 +1,36 @@
var common = require('../../../common');
var assert = require('assert');
var fs = require('fs');
var mysql = require(common.dir.root);
var REPEATS = 500;
var client = common.createClient();
client.query('CREATE DATABASE ' + common.TEST_DB, function(err) {
if (err && err.number != mysql.ERROR_DB_CREATE_EXISTS) throw err;
});
client.query('USE ' + common.TEST_DB);
client.query('DROP TABLE IF EXISTS columnia');
var fixture = fs.readFileSync(common.dir.fixture + '/columnia.sql', 'utf8');
client.query(fixture);
var finished = 0;
var self = this;
for (var i = 0; i < REPEATS; i++) {
(function(i) {
var query = client.query("SHOW COLUMNS FROM columnia");
query.on('row', function(row) {
if (!row.Type) throw new Error('Column order mixed up after '+i+' queries.');
});
query.on('end', function() {
finished++;
if (finished === REPEATS) client.destroy();
});
})(i);
}
process.on('exit', function() {
assert.equal(finished, REPEATS);
});

View File

@@ -0,0 +1,14 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
var results;
client.query('SELECT "" as field_a', function(err, _results) {
if (err) throw err;
results = _results;
client.destroy();
});
process.on('exit', function() {
assert.strictEqual(results[0].field_a, "");
});

View File

@@ -0,0 +1,43 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
var field_a = makeString(250);
var field_b = makeString(251);
var field_c = makeString(512);
var field_d = makeString(65537);
var callbacks = 0;
// We execute this test twice to be sure the parser is in a good state after
// each run.
test();
test(true);
function test(last) {
var sql = 'SELECT ? as field_a, ? as field_b, ? as field_c, ? as field_d';
var params = [field_a, field_b, field_c, field_d];
var query = client.query(sql, params, function(err, results) {
if (err) throw err;
assert.equal(results[0].field_a, field_a);
assert.equal(results[0].field_b, field_b);
assert.equal(results[0].field_c, field_c);
assert.equal(results[0].field_d, field_d);
callbacks++;
if (last) client.destroy();
});
}
function makeString(length) {
var str = '';
for (var i = 0; i < length; i++) {
str += 'x';
}
return str;
}
process.on('exit', function() {
assert.equal(callbacks, 2);
});

View File

@@ -0,0 +1,15 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
var results;
client.query('SELECT NULL as field_a, NULL as field_b', function(err, _results) {
if (err) throw err;
results = _results;
client.destroy();
});
process.on('exit', function() {
assert.strictEqual(results[0].field_a, null);
assert.strictEqual(results[0].field_b, null);
});

View File

@@ -0,0 +1,51 @@
var common = require('../../../common');
var assert = require('assert');
var mysql = require(common.dir.root);
var client = common.createClient();
client.query('CREATE DATABASE '+common.TEST_DB, function createDbCb(err) {
if (err && err.number != mysql.ERROR_DB_CREATE_EXISTS) done(err);
});
client.query('USE '+common.TEST_DB);
client.query(
'CREATE TEMPORARY TABLE ' + common.TEST_TABLE+
'(id INT(11) AUTO_INCREMENT, title VARCHAR(255), text TEXT, created DATETIME, PRIMARY KEY (id));'
);
client.query(
'INSERT INTO ' + common.TEST_TABLE + ' '+
'SET title = ?, text = ?, created = ?',
['super cool', 'this is a nice long text', '2010-08-16 10:00:23']
);
var query = client.query(
'INSERT INTO '+common.TEST_TABLE+' '+
'SET title = ?, text = ?, created = ?',
['another entry', 'because 2 entries make a better test', null]
);
var endCalled = false;
query.on('end', function insertOkCb(packet) {
endCalled = true;
});
var lastQueryReached = false;
var query = client.query('SELECT * FROM '+common.TEST_TABLE, function selectCb(err, results, fields) {
assert.ok(endCalled);
lastQueryReached = true;
assert.equal(results.length, 2);
assert.equal(results[1].title, 'another entry');
assert.ok(typeof results[1].id == 'number');
assert.ok(results[0].created instanceof Date);
assert.strictEqual(results[1].created, null);
client.destroy();
});
process.on('exit', function() {
assert.ok(lastQueryReached);
});

View File

@@ -0,0 +1,16 @@
var common = require('../../../common');
var assert = require('assert');
var client = common.createClient();
var results;
client.query('SELECT 1 as field_a, 2 as field_b', function(err, _results) {
if (err) throw err;
results = _results;
client.destroy();
});
process.on('exit', function() {
assert.equal(results[0].field_a, 1);
assert.equal(results[0].field_b, 2);
});