Extend KILL parsing test

Added test cases for `KILL [ HARD | SOFT ] [CONNECTION | QUERY ]`.
This commit is contained in:
Markus Mäkelä
2017-09-28 22:00:57 +03:00
parent 49b179bf69
commit 4150dee952
2 changed files with 16 additions and 6 deletions

View File

@ -1798,7 +1798,8 @@ static bool parse_kill_query(char *query, uint64_t *thread_id_out, kill_type_t *
case CONN_QUERY:
if (strncasecmp(token, WORD_QUERY, sizeof(WORD_QUERY) - 1) == 0)
{
kill_type = KT_QUERY;
kill_type &= ~KT_CONNECTION;
kill_type |= KT_QUERY;
get_next = true;
}
else if (strncasecmp(token, WORD_CONNECTION, sizeof(WORD_CONNECTION) - 1) == 0)

View File

@ -3,7 +3,7 @@
#include "../MySQLClient/mysql_client.cc"
int test_one_query(const char *query, bool should_succeed, uint64_t expected_tid,
kill_type_t expected_kt)
int expected_kt)
{
char *query_copy = MXS_STRDUP_A(query);
uint64_t result_tid = 1111111;
@ -13,7 +13,7 @@ int test_one_query(const char *query, bool should_succeed, uint64_t expected_tid
if (!should_succeed)
{
result_tid = expected_tid;
result_kt = expected_kt;
result_kt = (kill_type_t)expected_kt;
}
bool success = parse_kill_query(query_copy, &result_tid, &result_kt);
MXS_FREE(query_copy);
@ -49,7 +49,7 @@ typedef struct test_t
const char *query;
bool should_succeed;
uint64_t correct_id;
kill_type_t correct_kt;
int correct_kt;
} test_t;
int main(int argc, char **argv)
@ -73,7 +73,16 @@ int main(int argc, char **argv)
{"KIll query \t \n \t 21 \n \t ", true, 21, KT_QUERY},
{"KIll \t \n \t -6 \n \t ", false, 0, KT_CONNECTION},
{"KIll 12345678901234567890123456 \n \t ", false, 0, KT_CONNECTION},
{"kill ;", false, 0, KT_QUERY}
{"kill ;", false, 0, KT_QUERY},
{" kill ConNectioN 123 HARD", false, 123, KT_CONNECTION},
{" kill ConNectioN 123 SOFT", false, 123, KT_CONNECTION},
{" kill ConNectioN SOFT 123", false, 123, KT_CONNECTION},
{" kill HARD ConNectioN 123", true, 123, KT_CONNECTION | KT_HARD},
{" kill SOFT ConNectioN 123", true, 123, KT_CONNECTION | KT_SOFT},
{" kill HARD 123", true, 123, KT_CONNECTION | KT_HARD},
{" kill SOFT 123", true, 123, KT_CONNECTION | KT_SOFT},
{"KIll soft query 21 ", true, 21, KT_QUERY | KT_SOFT},
{"KIll query soft 21 ", false, 21, KT_QUERY}
};
int result = 0;
int arr_size = sizeof(tests) / sizeof(test_t);
@ -82,7 +91,7 @@ int main(int argc, char **argv)
const char *query = tests[i].query;
bool should_succeed = tests[i].should_succeed;
uint64_t expected_tid = tests[i].correct_id;
kill_type_t expected_kt = tests[i].correct_kt;
int expected_kt = tests[i].correct_kt;
result += test_one_query(query, should_succeed, expected_tid, expected_kt);
}
return result;