Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
rusher committed Jan 10, 2024
2 parents e8348cc + 01fabc6 commit 714f302
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 {
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 714f302

Please sign in to comment.