Merge branch 'release-1.0beta-refresh' into cmake_build
This commit is contained in:
@ -273,7 +273,10 @@ char c;
|
|||||||
}
|
}
|
||||||
else if (*buf)
|
else if (*buf)
|
||||||
{
|
{
|
||||||
sendCommand(so, buf);
|
if (!sendCommand(so, buf))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,6 +301,7 @@ connectMaxScale(char *hostname, char *port)
|
|||||||
{
|
{
|
||||||
struct sockaddr_in addr;
|
struct sockaddr_in addr;
|
||||||
int so;
|
int so;
|
||||||
|
int keepalive = 1;
|
||||||
|
|
||||||
if ((so = socket(AF_INET, SOCK_STREAM, 0)) < 0)
|
if ((so = socket(AF_INET, SOCK_STREAM, 0)) < 0)
|
||||||
{
|
{
|
||||||
@ -315,6 +319,9 @@ int so;
|
|||||||
hostname, port, strerror(errno));
|
hostname, port, strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
if (setsockopt(so, SOL_SOCKET,
|
||||||
|
SO_KEEPALIVE, &keepalive , sizeof(keepalive )))
|
||||||
|
perror("setsockopt");
|
||||||
|
|
||||||
return so;
|
return so;
|
||||||
}
|
}
|
||||||
@ -387,11 +394,14 @@ authMaxScale(int so, char *user, char *password)
|
|||||||
{
|
{
|
||||||
char buf[20];
|
char buf[20];
|
||||||
|
|
||||||
read(so, buf, 4);
|
if (read(so, buf, 4) != 4)
|
||||||
|
return 0;
|
||||||
write(so, user, strlen(user));
|
write(so, user, strlen(user));
|
||||||
read(so, buf, 8);
|
if (read(so, buf, 8) != 8)
|
||||||
|
return 0;
|
||||||
write(so, password, strlen(password));
|
write(so, password, strlen(password));
|
||||||
read(so, buf, 6);
|
if (read(so, buf, 6) != 6)
|
||||||
|
return 0;
|
||||||
|
|
||||||
return strncmp(buf, "FAILED", 6);
|
return strncmp(buf, "FAILED", 6);
|
||||||
}
|
}
|
||||||
@ -412,10 +422,11 @@ sendCommand(int so, char *cmd)
|
|||||||
char buf[80];
|
char buf[80];
|
||||||
int i, j, newline = 1;
|
int i, j, newline = 1;
|
||||||
|
|
||||||
write(so, cmd, strlen(cmd));
|
if (write(so, cmd, strlen(cmd)) == -1)
|
||||||
|
return 0;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
if ((i = read(so, buf, 80)) == -1)
|
if ((i = read(so, buf, 80)) <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
for (j = 0; j < i; j++)
|
for (j = 0; j < i; j++)
|
||||||
{
|
{
|
||||||
|
189
client/test/maxadmin_test.sh
Normal file
189
client/test/maxadmin_test.sh
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
failure=0
|
||||||
|
passed=0
|
||||||
|
maxadmin -pskysql help >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "Auth test (correct password): Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Auth test (correct password): Passed"
|
||||||
|
fi
|
||||||
|
maxadmin -pwrongpasswd help >& /dev/null
|
||||||
|
if [ $? -eq "0" ]; then
|
||||||
|
echo "Auth test (wrong password): Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Auth test (wrong password): Passed"
|
||||||
|
fi
|
||||||
|
maxadmin --password=skysql help >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "Auth test (long option): Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Auth test (long option): Passed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
maxadmin -pskysql enable log debug >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "Enable debug log: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Enable debug log: Passed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
maxadmin -pskysql enable log trace >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "Enable trace log: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Enable trace log: Passed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
maxadmin -pskysql disable log debug >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "Disable debug log: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Disable debug log: Passed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
maxadmin -pskysql disable log trace >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "Disable trace log: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Disable trace log: Passed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for cmd in clients dcbs filters listeners modules monitors services servers sessions threads
|
||||||
|
do
|
||||||
|
maxadmin -pskysql list $cmd | grep -s '-' >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "list command ($cmd): Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "list command ($cmd): Passed"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for cmd in dcbs dbusers epoll filters modules monitors services servers sessions threads users
|
||||||
|
do
|
||||||
|
maxadmin -pskysql show $cmd | grep -s ' ' >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "show command ($cmd): Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "show command ($cmd): Passed"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
master=`maxadmin -pskysql list servers | awk '/Master/ { print $1; }'`
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "Extract master server: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Extract master server: Passed"
|
||||||
|
fi
|
||||||
|
if [ "$master" = "" ]; then
|
||||||
|
echo "Get master server: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Get master server: Passed"
|
||||||
|
fi
|
||||||
|
maxadmin -pskysql show server $master | grep -s 'Master' >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "show server master: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "show server master: Passed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
maxadmin -pskysql set server $master maint >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "set server: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "set server: Passed"
|
||||||
|
fi
|
||||||
|
maxadmin -pskysql list servers | grep $master | grep -s Maint >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "set maintenance mode: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "set maintenance mode: Passed"
|
||||||
|
fi
|
||||||
|
maxadmin -pskysql clear server $master maint >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "clear server: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "clear server: Passed"
|
||||||
|
fi
|
||||||
|
maxadmin -pskysql list servers | grep $master | grep -s Maint >& /dev/null
|
||||||
|
if [ $? -eq "0" ]; then
|
||||||
|
echo "clear maintenance mode: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "clear maintenance mode: Passed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dcbs=`maxadmin -pskysql list dcbs | awk -F\| '/listening/ { if ( NF > 1 ) print $1 }'`
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "Get dcb listeners: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Get dcb listeners: Passed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i in $dcbs
|
||||||
|
do
|
||||||
|
maxadmin -pskysql show dcb $i | grep -s 'listening' >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "show dcb listeners: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "show dcb listeners: Passed"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
sessions=`maxadmin -pskysql list sessions | awk -F\| '/Listener/ { if ( NF > 1 ) print $1 }'`
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "Get listener sessions: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "Get listener sessions: Passed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i in $sessions
|
||||||
|
do
|
||||||
|
maxadmin -pskysql show session $i | grep -s 'Listener' >& /dev/null
|
||||||
|
if [ $? -eq "1" ]; then
|
||||||
|
echo "show session listeners: Failed"
|
||||||
|
failure=`expr $failure + 1`
|
||||||
|
else
|
||||||
|
passed=`expr $passed + 1`
|
||||||
|
echo "show session listeners: Passed"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Test run complete. $passed passes, $failure failures"
|
||||||
|
exit $failure
|
@ -359,17 +359,37 @@ static bool create_parse_tree(
|
|||||||
Parser_state parser_state;
|
Parser_state parser_state;
|
||||||
bool failp = FALSE;
|
bool failp = FALSE;
|
||||||
const char* virtual_db = "skygw_virtual";
|
const char* virtual_db = "skygw_virtual";
|
||||||
|
#if defined(SS_DEBUG_EXTRA)
|
||||||
|
LOGIF(LM, (skygw_log_write_flush(
|
||||||
|
LOGFILE_MESSAGE,
|
||||||
|
"[readwritesplit:create_parse_tree] 1.")));
|
||||||
|
#endif
|
||||||
if (parser_state.init(thd, thd->query(), thd->query_length())) {
|
if (parser_state.init(thd, thd->query(), thd->query_length())) {
|
||||||
failp = TRUE;
|
failp = TRUE;
|
||||||
goto return_here;
|
goto return_here;
|
||||||
}
|
}
|
||||||
|
#if defined(SS_DEBUG_EXTRA)
|
||||||
|
LOGIF(LM, (skygw_log_write_flush(
|
||||||
|
LOGFILE_MESSAGE,
|
||||||
|
"[readwritesplit:create_parse_tree] 2.")));
|
||||||
|
#endif
|
||||||
mysql_reset_thd_for_next_command(thd);
|
mysql_reset_thd_for_next_command(thd);
|
||||||
|
|
||||||
/** Set some database to thd so that parsing won't fail because of
|
#if defined(SS_DEBUG_EXTRA)
|
||||||
* missing database. Then parse. */
|
LOGIF(LM, (skygw_log_write_flush(
|
||||||
|
LOGFILE_MESSAGE,
|
||||||
|
"[readwritesplit:create_parse_tree] 3.")));
|
||||||
|
#endif
|
||||||
|
/**
|
||||||
|
* Set some database to thd so that parsing won't fail because of
|
||||||
|
* missing database. Then parse.
|
||||||
|
*/
|
||||||
failp = thd->set_db(virtual_db, strlen(virtual_db));
|
failp = thd->set_db(virtual_db, strlen(virtual_db));
|
||||||
|
#if defined(SS_DEBUG_EXTRA)
|
||||||
|
LOGIF(LM, (skygw_log_write_flush(
|
||||||
|
LOGFILE_MESSAGE,
|
||||||
|
"[readwritesplit:create_parse_tree] 4.")));
|
||||||
|
#endif
|
||||||
if (failp) {
|
if (failp) {
|
||||||
LOGIF(LE, (skygw_log_write_flush(
|
LOGIF(LE, (skygw_log_write_flush(
|
||||||
LOGFILE_ERROR,
|
LOGFILE_ERROR,
|
||||||
@ -377,6 +397,11 @@ static bool create_parse_tree(
|
|||||||
}
|
}
|
||||||
failp = parse_sql(thd, &parser_state, NULL);
|
failp = parse_sql(thd, &parser_state, NULL);
|
||||||
|
|
||||||
|
#if defined(SS_DEBUG_EXTRA)
|
||||||
|
LOGIF(LM, (skygw_log_write_flush(
|
||||||
|
LOGFILE_MESSAGE,
|
||||||
|
"[readwritesplit:create_parse_tree] 5.")));
|
||||||
|
#endif
|
||||||
if (failp) {
|
if (failp) {
|
||||||
LOGIF(LD, (skygw_log_write(
|
LOGIF(LD, (skygw_log_write(
|
||||||
LOGFILE_DEBUG,
|
LOGFILE_DEBUG,
|
||||||
|
@ -447,13 +447,15 @@ size_t nrounds = 0;
|
|||||||
}
|
}
|
||||||
/** Wait base interval */
|
/** Wait base interval */
|
||||||
thread_millisleep(MON_BASE_INTERVAL_MS);
|
thread_millisleep(MON_BASE_INTERVAL_MS);
|
||||||
nrounds += 1;
|
|
||||||
|
|
||||||
/** If monitor interval time isn't consumed skip checks */
|
/** If monitor interval time isn't consumed skip checks */
|
||||||
if ((nrounds*MON_BASE_INTERVAL_MS)%handle->interval != 0)
|
if (nrounds != 0 &&
|
||||||
|
(nrounds*MON_BASE_INTERVAL_MS)%handle->interval != 0)
|
||||||
{
|
{
|
||||||
|
nrounds += 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
nrounds += 1;
|
||||||
master_id = -1;
|
master_id = -1;
|
||||||
ptr = handle->databases;
|
ptr = handle->databases;
|
||||||
|
|
||||||
|
@ -611,13 +611,15 @@ size_t nrounds = 0;
|
|||||||
}
|
}
|
||||||
/** Wait base interval */
|
/** Wait base interval */
|
||||||
thread_millisleep(MON_BASE_INTERVAL_MS);
|
thread_millisleep(MON_BASE_INTERVAL_MS);
|
||||||
nrounds += 1;
|
|
||||||
|
|
||||||
/** If monitor interval time isn't consumed skip checks */
|
/** If monitor interval time isn't consumed skip checks */
|
||||||
if ((nrounds*MON_BASE_INTERVAL_MS)%handle->interval != 0)
|
if (nrounds != 0 &&
|
||||||
|
(nrounds*MON_BASE_INTERVAL_MS)%handle->interval != 0)
|
||||||
{
|
{
|
||||||
|
nrounds += 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
nrounds += 1;
|
||||||
/* reset num_servers */
|
/* reset num_servers */
|
||||||
num_servers = 0;
|
num_servers = 0;
|
||||||
|
|
||||||
|
@ -445,13 +445,15 @@ size_t nrounds = 0;
|
|||||||
|
|
||||||
/** Wait base interval */
|
/** Wait base interval */
|
||||||
thread_millisleep(MON_BASE_INTERVAL_MS);
|
thread_millisleep(MON_BASE_INTERVAL_MS);
|
||||||
nrounds += 1;
|
|
||||||
|
|
||||||
/** If monitor interval time isn't consumed skip checks */
|
/** If monitor interval time isn't consumed skip checks */
|
||||||
if ((nrounds*MON_BASE_INTERVAL_MS)%handle->interval != 0)
|
if (nrounds != 0 &&
|
||||||
|
(nrounds*MON_BASE_INTERVAL_MS)%handle->interval != 0)
|
||||||
{
|
{
|
||||||
|
nrounds += 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
nrounds += 1;
|
||||||
master_id = -1;
|
master_id = -1;
|
||||||
ptr = handle->databases;
|
ptr = handle->databases;
|
||||||
|
|
||||||
|
@ -279,6 +279,7 @@ int n_connect = 0;
|
|||||||
client_dcb->session =
|
client_dcb->session =
|
||||||
session_alloc(dcb->session->service, client_dcb);
|
session_alloc(dcb->session->service, client_dcb);
|
||||||
maxscaled_pr = (MAXSCALED *)malloc(sizeof(MAXSCALED));
|
maxscaled_pr = (MAXSCALED *)malloc(sizeof(MAXSCALED));
|
||||||
|
maxscaled_pr->username = NULL;
|
||||||
client_dcb->protocol = (void *)maxscaled_pr;
|
client_dcb->protocol = (void *)maxscaled_pr;
|
||||||
|
|
||||||
if (maxscaled_pr == NULL)
|
if (maxscaled_pr == NULL)
|
||||||
@ -294,7 +295,6 @@ int n_connect = 0;
|
|||||||
}
|
}
|
||||||
n_connect++;
|
n_connect++;
|
||||||
maxscaled_pr->state = MAXSCALED_STATE_LOGIN;
|
maxscaled_pr->state = MAXSCALED_STATE_LOGIN;
|
||||||
maxscaled_pr->username = NULL;
|
|
||||||
dcb_printf(client_dcb, "USER");
|
dcb_printf(client_dcb, "USER");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user