Skip to content

Commit

Permalink
Merge branch 'master' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
rusher committed Mar 18, 2024
2 parents 8f88f9d + 0b8da71 commit 7ec5d09
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 114 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -13,6 +13,7 @@
* CONJS-277 using connection.importFile when connection is not connected to database result in error
* CONJS-278 Possible buffer overwrite when sending query bigger than 16M
* CONJS-282 error when using mysql_clear_test password authentication plugin
* CONJS-283 wrong decoding of binary unsigned MEDIUMINT


## [3.2.3](https://github.com/mariadb-corporation/mariadb-connector-nodejs/tree/3.2.3) (Dec 2023)
Expand Down
208 changes: 94 additions & 114 deletions test/integration/test-debug.js
Expand Up @@ -17,14 +17,14 @@ describe('debug', () => {
const smallFileName = path.join(os.tmpdir(), 'smallLocalInfileDebug.txt');

let permitLocalInfile = true;
let tmpLogFile = path.join(os.tmpdir(), 'combined.txt');
let logger;
let setNameAddition = 0;
let fileIncrement = 0;

before(async function () {
if (!isXpand()) {
try {
fs.unlinkSync(tmpLogFile);
fs.unlinkSync(path.join(os.tmpdir(), 'combined*.txt'));
} catch (e) {}
const rows = await shareConn.query('select @@local_infile');
permitLocalInfile = rows[0]['@@local_infile'] === 1 || rows[0]['@@local_infile'] === 1n;
Expand All @@ -38,6 +38,7 @@ describe('debug', () => {
});

beforeEach(async function () {
let tmpLogFile = path.join(os.tmpdir(), 'combined' + ++fileIncrement + '.txt');
logger = winston.createLogger({
transports: [new winston.transports.File({ filename: tmpLogFile })]
});
Expand All @@ -46,6 +47,7 @@ describe('debug', () => {

//ensure that debug from previous test are written to console
afterEach(async function () {
let tmpLogFile = path.join(os.tmpdir(), 'combined' + fileIncrement + '.txt');
await closeLogger(logger);
try {
fs.unlinkSync(tmpLogFile);
Expand All @@ -59,120 +61,98 @@ describe('debug', () => {
}
});

it('select request debug', function (done) {
testQueryDebug(false, done);
it('select request debug', async function () {
await testQueryDebug(false);
});

it('select request debug compress', function (done) {
it('select request debug compress', async function () {
if (isXpand()) this.skip();
testQueryDebug(true, done);
await testQueryDebug(true);
});

function testQueryDebug(compress, done) {
base
.createConnection({
compress: compress,
prepareCacheLength: 0,
logger: {
network: null,
query: (msg) => logger.info(msg),
error: (msg) => logger.info(msg)
}
})
.then((conn) => {
conn
.query('CREATE TABLE debugVoid (val int)')
.then(() => {
if (compress && !isMaxscale() && process.env.srv !== 'skysql' && process.env.srv !== 'skysql-ha') {
conn.debugCompress((msg) => logger.info(msg));
} else {
conn.debug((msg) => logger.info(msg));
}
return conn.query('SELECT 2');
})
.then(() => {
if (compress && !isMaxscale() && process.env.srv !== 'skysql' && process.env.srv !== 'skysql-ha') {
conn.debugCompress(false);
} else {
conn.debug(false);
}
return conn.query('SELECT 3');
})
.then(() => {
return conn.prepare('SELECT ?');
})
.then((prepare) => {
return prepare.execute(['t']).then((res) => prepare.close());
})
.then(() => {
return conn.batch('INSERT INTO debugVoid VALUES (?)', [[1], [2]]);
})
.then(() => {
return conn.end();
})
.then(() => {
//wait 100ms to ensure stream has been written
setTimeout(() => {
const serverVersion = conn.serverVersion();
if (isMaxscale() || process.env.srv === 'skysql' || process.env.srv === 'skysql-ha') compress = false;
const rangeWithEOF = compress ? [1500, 2000] : [1800, 4250];
const rangeWithoutEOF = compress ? [1500, 2000] : [2350, 3250];
const data = fs.readFileSync(tmpLogFile, 'utf8');
console.log(data);
assert.isTrue(data.includes('QUERY: SELECT 3'));
assert.isTrue(data.includes('PREPARE:'));
assert.isTrue(data.includes('EXECUTE:'));
assert.isTrue(data.includes("SELECT ? - parameters:['t']"));
assert.isTrue(data.includes('CLOSE PREPARE:'));
if (conn.info.isMariaDB() && conn.info.hasMinVersion(10, 2, 2)) {
assert.isTrue(data.includes('BULK:'));
assert.isTrue(data.includes('INSERT INTO debugVoid VALUES (?) - parameters:[[1],[2]]'));
}
assert.isTrue(data.includes('QUIT'));
if (
((conn.info.isMariaDB() && conn.info.hasMinVersion(10, 2, 2)) ||
(!conn.info.isMariaDB() && conn.info.hasMinVersion(5, 7, 5))) &&
!isMaxscale() &&
process.env.srv !== 'skysql' &&
process.env.srv !== 'skysql-ha'
) {
assert(
data.length > rangeWithoutEOF[0] && data.length < rangeWithoutEOF[1],
'wrong data length : ' +
data.length +
' expected value between ' +
rangeWithoutEOF[0] +
' and ' +
rangeWithoutEOF[1] +
'.' +
'\n server version : ' +
serverVersion +
'\n data :\n' +
data
);
} else {
//EOF Packet make exchange bigger
assert(
data.length > rangeWithEOF[0] && data.length < rangeWithEOF[1],
'wrong data length : ' +
data.length +
' expected value between ' +
rangeWithEOF[0] +
' and ' +
rangeWithEOF[1] +
'.' +
'\n server version : ' +
serverVersion +
'\n data :\n' +
data
);
}
done();
}, 100);
})
.catch(done);
})
.catch(done);
async function testQueryDebug(compress) {
const conn = await base.createConnection({
compress: compress,
prepareCacheLength: 0,
logger: {
network: null,
query: (msg) => logger.info(msg),
error: (msg) => logger.info(msg)
}
});
await conn.query('CREATE TABLE debugVoid (val int)');
if (compress && !isMaxscale() && process.env.srv !== 'skysql' && process.env.srv !== 'skysql-ha') {
conn.debugCompress((msg) => logger.info(msg));
} else {
conn.debug((msg) => logger.info(msg));
}
await conn.query('SELECT 2');
if (compress && !isMaxscale() && process.env.srv !== 'skysql' && process.env.srv !== 'skysql-ha') {
conn.debugCompress(false);
} else {
conn.debug(false);
}
await conn.query('SELECT 3');
const prepare = await conn.prepare('SELECT ?');
await prepare.execute(['t']).then((res) => prepare.close());
await conn.batch('INSERT INTO debugVoid VALUES (?)', [[1], [2]]);
conn.end();
//wait 100ms to ensure stream has been written
await new Promise((resolve) => new setTimeout(resolve, 100));
const serverVersion = conn.serverVersion();
if (isMaxscale() || process.env.srv === 'skysql' || process.env.srv === 'skysql-ha') compress = false;
const rangeWithEOF = compress ? [1500, 2000] : [1800, 4250];
const rangeWithoutEOF = compress ? [1500, 2000] : [2350, 3250];
const data = fs.readFileSync(path.join(os.tmpdir(), 'combined' + fileIncrement + '.txt'), 'utf8');
console.log(data);
assert.isTrue(data.includes('QUERY: SELECT 3'));
assert.isTrue(data.includes('PREPARE:'));
assert.isTrue(data.includes('EXECUTE:'));
assert.isTrue(data.includes("SELECT ? - parameters:['t']"));
assert.isTrue(data.includes('CLOSE PREPARE:'));
if (conn.info.isMariaDB() && conn.info.hasMinVersion(10, 2, 2)) {
assert.isTrue(data.includes('BULK:'));
assert.isTrue(data.includes('INSERT INTO debugVoid VALUES (?) - parameters:[[1],[2]]'));
}
assert.isTrue(data.includes('QUIT'));
if (
((conn.info.isMariaDB() && conn.info.hasMinVersion(10, 2, 2)) ||
(!conn.info.isMariaDB() && conn.info.hasMinVersion(5, 7, 5))) &&
!isMaxscale() &&
process.env.srv !== 'skysql' &&
process.env.srv !== 'skysql-ha'
) {
assert(
data.length > rangeWithoutEOF[0] && data.length < rangeWithoutEOF[1],
'wrong data length : ' +
data.length +
' expected value between ' +
rangeWithoutEOF[0] +
' and ' +
rangeWithoutEOF[1] +
'.' +
'\n server version : ' +
serverVersion +
'\n data :\n' +
data
);
} else {
//EOF Packet make exchange bigger
assert(
data.length > rangeWithEOF[0] && data.length < rangeWithEOF[1],
'wrong data length : ' +
data.length +
' expected value between ' +
rangeWithEOF[0] +
' and ' +
rangeWithEOF[1] +
'.' +
'\n server version : ' +
serverVersion +
'\n data :\n' +
data
);
}
}

it('select big request (compressed data) debug', function (done) {
Expand All @@ -191,7 +171,7 @@ describe('debug', () => {
.end()
.then(() => {
const serverVersion = conn.serverVersion();
const data = fs.readFileSync(tmpLogFile, 'utf8');
const data = fs.readFileSync(path.join(os.tmpdir(), 'combined' + fileIncrement + '.txt'), 'utf8');
let range = [8900, 12000 + setNameAddition];
assert(
data.length > range[0] && data.length < range[1],
Expand Down Expand Up @@ -283,7 +263,7 @@ describe('debug', () => {
conn.end();
//wait 100ms to ensure stream has been written
setTimeout(() => {
const data = fs.readFileSync(tmpLogFile, 'utf8');
const data = fs.readFileSync(path.join(os.tmpdir(), 'combined' + fileIncrement + '.txt'), 'utf8');
const serverVersion = conn.serverVersion();
const range = [7500, 11000 + (Conf.baseConfig.ssl ? 800 : 0) + setNameAddition];
assert(
Expand Down Expand Up @@ -337,7 +317,7 @@ describe('debug', () => {
const serverVersion = conn.serverVersion();
if (isMaxscale() || process.env.srv === 'skysql' || process.env.srv === 'skysql-ha') compress = false;
const range = compress ? [60, 180] : [60, 170];
const data = fs.readFileSync(tmpLogFile, 'utf8');
const data = fs.readFileSync(path.join(os.tmpdir(), 'combined' + fileIncrement + '.txt'), 'utf8');
assert.isTrue(data.includes('PING'));
assert.isTrue(data.includes('QUIT'));

Expand Down

0 comments on commit 7ec5d09

Please sign in to comment.