Skip to content

Commit

Permalink
[misc] adding maxscale redirection test
Browse files Browse the repository at this point in the history
  • Loading branch information
rusher committed Jan 10, 2024
1 parent 8e20d41 commit 01fabc6
Showing 1 changed file with 54 additions and 9 deletions.
63 changes: 54 additions & 9 deletions test/integration/test-redirection.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2015-2023 MariaDB Corporation Ab
// Copyright (c) 2015-2024 MariaDB Corporation Ab

'use strict';

Expand All @@ -17,25 +17,65 @@ describe('redirection', () => {
resetAfterUse: false
});
await proxy.start();
let conn = await base.createConnection({ port: proxy.port() });
let conn = await base.createConnection({ host: 'localhost', port: proxy.port() });
try {
assert.equal(proxy.port(), conn.info.port);
let permitRedirection = true;
try {
await conn.query('set @@session.redirect_url="mariadb://localhost:' + Conf.baseConfig.port + '"');
await conn.beginTransaction();
await conn.query(`set @@session.redirect_url="mariadb://${Conf.baseConfig.host}:${Conf.baseConfig.port}"`);
} catch (e) {
// if server doesn't support redirection
permitRedirection = false;
}
if (permitRedirection) {
assert.equal(Conf.baseConfig.port, conn.info.port);
let conn2 = await base.createConnection({ host: 'localhost', port: proxy.port() });
assert.equal(proxy.port(), conn2.info.port);
await conn2.end();
}
} finally {

This comment has been minimized.

Copy link
@markus456

markus456 Jan 10, 2024

Contributor

This block is only run if await base.createConnection() does not throw. If it does, the call to proxy.close() is not done.

This comment has been minimized.

Copy link
@rusher

rusher Jan 12, 2024

Author Collaborator

corrected with 289aff7

conn.end();
proxy.close();
}
});

it('maxscale redirection', async function () {
// need maxscale 23.08+
if (process.env.srv !== 'maxscale') this.skip();
const proxy = new Proxy({
port: Conf.baseConfig.port,
host: Conf.baseConfig.host,
resetAfterUse: false
});
await proxy.start();

try {
await shareConn.query(`set @@global.redirect_url="mariadb://${Conf.baseConfig.host}:${Conf.baseConfig.port}"`);
} catch (e) {
this.skip();
return;
}
let conn = await base.createConnection({ host: 'localhost', port: proxy.port() });
try {
assert.equal(Conf.baseConfig.host, conn.info.host);
assert.equal(Conf.baseConfig.port, conn.info.port);
console.log(await conn.query('Select 1'));
conn.end();
console.log('*****************************************************************************');
let conn2 = await base.createConnection({ host: 'localhost', port: proxy.port() });
assert.equal(Conf.baseConfig.port, conn2.info.port);
console.log(await conn2.query('Select 2'));
console.log('*****************************************************************************');
conn2.end();
} finally {
proxy.close();
try {
shareConn.query('set @@global.redirect_url=""');
} catch (e) {}
}
});

it('redirection during pipelining', async function () {
if (process.env.srv === 'skysql' || process.env.srv === 'skysql-ha') this.skip();
const proxy = new Proxy({
Expand All @@ -44,14 +84,17 @@ describe('redirection', () => {
resetAfterUse: false
});
await proxy.start();
let conn = await base.createConnection({ port: proxy.port() });
let conn = await base.createConnection({ host: 'localhost', port: proxy.port() });
try {
assert.equal(proxy.port(), conn.info.port);
let permitRedirection = true;
conn.query('SELECT 1');
conn.query('set @@session.redirect_url="mariadb://localhost:' + Conf.baseConfig.port + '"').catch((e) => {
permitRedirection = false;
});
await conn.beginTransaction();
conn
.query(`set @@session.redirect_url="mariadb://${Conf.baseConfig.host}:${Conf.baseConfig.port}"`)
.catch((e) => {
permitRedirection = false;
});
conn.query('SELECT 2');
assert.equal(proxy.port(), conn.info.port);
await conn.query('SELECT 3');
Expand All @@ -72,18 +115,20 @@ describe('redirection', () => {
resetAfterUse: false
});
await proxy.start();
let conn = await base.createConnection({ port: proxy.port() });
let conn = await base.createConnection({ host: 'localhost', port: proxy.port() });
try {
assert.equal(proxy.port(), conn.info.port);
let permitRedirection = true;
try {
await conn.beginTransaction();
await conn.query('set @@session.redirect_url="mariadb://localhost:' + Conf.baseConfig.port + '"');
await conn.query(`set @@session.redirect_url="mariadb://${Conf.baseConfig.host}:${Conf.baseConfig.port}"`);
} catch (e) {
// if server doesn't support redirection
permitRedirection = false;
}
assert.equal(proxy.port(), conn.info.port);
const rows = await conn.query("SELECT '4'");
assert.deepEqual(rows, [{ 4: '4' }]);
if (permitRedirection) {
await conn.commit();
assert.equal(Conf.baseConfig.port, conn.info.port);
Expand Down

0 comments on commit 01fabc6

Please sign in to comment.