MXS-1267: Fix tee filter test results

The tests should no longer expect client session creation to fail if the
branch session creation is not successful.

The main session is kept alive so that a failure in the branch session
does not cause a failure of the main session. The main session can be
considered more important as it is what the client will use. If the branch
session fails, the failure will be logged so no information is lost.

Also added a missing configuration file and removed some extra-verbose
output in a test script.
This commit is contained in:
Markus Mäkelä 2017-05-26 19:43:49 +03:00
parent e32937c8f2
commit e64e24a819
6 changed files with 102 additions and 12 deletions

View File

@ -96,7 +96,6 @@ int main(int argc, char *argv[])
Test->close_maxscale_connections();
Test->check_log_err((char *) "Couldn't find suitable Master from 2 candidates", true);
Test->check_log_err((char *) "Creating client session for Tee filter failed. Terminating session.", true);
int rval = Test->global_result;
delete Test;

View File

@ -73,9 +73,6 @@ int main(int argc, char *argv[])
Test->check_log_err((char *) "Couldn't find suitable Master from 2 candidates", true);
Test->check_log_err((char *) "Failed to create new router session for service 'RW_Split'", true);
Test->check_log_err((char *) "Creating client session for Tee filter failed. Terminating session.", true);
Test->check_log_err((char *) "Failed to create filter 'DuplicaFilter' for service 'RW_Router'", true);
Test->check_log_err((char *) "Setting up filters failed. Terminating session RW_Router", true);
int rval = Test->global_result;
delete Test;

View File

@ -0,0 +1,97 @@
[maxscale]
threads=###threads###
log_warning=1
[MySQL Monitor]
type=monitor
module=mysqlmon
###repl51###
servers= server1, server2,server3 ,server4
user=maxskysql
passwd= skysql
monitor_interval=1000
[RW Split Router]
type=service
router= readwritesplit
servers=server1, server2, server3,server4
user=maxskysql
passwd=skysql
[Read Connection Router Slave]
type=service
router=readconnroute
router_options= slave
servers=server1,server2,server3,server4
user=maxskysql
passwd=skysql
filters=TEE
[Read Connection Router Master]
type=service
router=readconnroute
router_options=master
servers=server1,server2,server3,server4
user=maxskysql
passwd=skysql
filters=TEE
[TEE]
type=filter
module=tee
service=RW Split Router
[RW Split Listener]
type=listener
service=RW Split Router
protocol=MySQLClient
port=4006
#socket=/tmp/rwsplit.sock
[Read Connection Listener Slave]
type=listener
service=Read Connection Router Slave
protocol=MySQLClient
port=4009
[Read Connection Listener Master]
type=listener
service=Read Connection Router Master
protocol=MySQLClient
port=4008
[CLI]
type=service
router=cli
[CLI Listener]
type=listener
service=CLI
protocol=maxscaled
socket=default
[server1]
type=server
address=###node_server_IP_1###
port=###node_server_port_1###
protocol=MySQLBackend
[server2]
type=server
address=###node_server_IP_2###
port=###node_server_port_2###
protocol=MySQLBackend
[server3]
type=server
address=###node_server_IP_3###
port=###node_server_port_3###
protocol=MySQLBackend
[server4]
type=server
address=###node_server_IP_4###
port=###node_server_port_4###
protocol=MySQLBackend

View File

@ -2,7 +2,6 @@
# $1 - test name
# $2 - time mark (in case of periodic logs copying)
set -x
if [ -z $1 ]; then
echo "Test name missing"

View File

@ -50,9 +50,9 @@ LocalClient::~LocalClient()
bool LocalClient::queue_query(GWBUF* buffer)
{
GWBUF* my_buf = gwbuf_clone(buffer);
GWBUF* my_buf = NULL;
if (my_buf)
if (m_state != VC_ERROR && (my_buf = gwbuf_clone(buffer)))
{
m_queue.push_back(my_buf);

View File

@ -241,14 +241,12 @@ static void setUpstream(MXS_FILTER *instance, MXS_FILTER_SESSION *session, MXS_U
static int routeQuery(MXS_FILTER *instance, MXS_FILTER_SESSION *session, GWBUF *queue)
{
TeeSession *my_session = reinterpret_cast<TeeSession*>(session);
int rval = 0;
if (my_session->passive || my_session->client->queue_query(queue))
{
rval = my_session->down.routeQuery(my_session->down.instance,
int rval = my_session->down.routeQuery(my_session->down.instance,
my_session->down.session,
queue);
}
my_session->client->queue_query(queue);
return rval;
}